dgs-js 1.1.4 → 1.1.5
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/index.js +15 -15
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
var di=(async function(R={}){var t,i=R,C=!0,o=!1,h=[],D="./this.program",d=(A,e)=>{throw e},p=import.meta.url,y="",l,N;if(C||o){try{y=new URL(".",p).href}catch{}l=async A=>{var e=await fetch(A,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+" : "+e.url)}}var J=console.log.bind(console),_=console.error.bind(console),W,X=!1,M,V,z,j,U,v,G,m,QA,F,ae,Qe,Ie,oe,Ce=!1;function Ee(){var A=j.buffer;U=new Int8Array(A),G=new Int16Array(A),v=new Uint8Array(A),m=new Uint16Array(A),QA=new Int32Array(A),F=new Uint32Array(A),ae=new Float32Array(A),Qe=new Float64Array(A),Ie=new BigInt64Array(A),oe=new BigUint64Array(A)}function Qt(){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)wt(i.preRun.shift());he(le)}function It(){Ce=!0,hA.ca()}function ot(){if(i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;)Dt(i.postRun.shift());he(ce)}var IA=0,lA=null;function Ct(A){IA++,i.monitorRunDependencies?.(IA)}function Et(A){if(IA--,i.monitorRunDependencies?.(IA),IA==0&&lA){var e=lA;lA=null,e()}}function HA(A){i.onAbort?.(A),A="Aborted("+A+")",_(A),X=!0,A+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(A);throw z?.(e),e}var WA;function nt(){return pt("AGFzbQEAAAAB8AEeYAF/AGABfwF/YAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAAAYAR/f39/AGAGf39/f39/AGAFf39/f38AYAABf2AEf39/fwF/YAp/f39/f39/f39/AGAEf39/fwF8YAV/f39/fwF8YAd/f39/f39/AGAFf39/fn4AYAh/f39/f39/fwBgBn9/f39/fwF8YAt/f39/f39/f39/fwBgAn98AX9gA39/fwF8YAx/f39/f39/f39/f38AYA1/f39/f39/f39/f39/AGADf39+AX9gBX9/f39/AX9gA39/fQBgAn9/AX1gA39+fwF+YAJ/fAACzAI3AWEBYQAKAWEBYgAEAWEBYwAFAWEBZAAMAWEBZQADAWEBZgABAWEBZwACAWEBaAAAAWEBaQAJAWEBagACAWEBawAAAWEBbAAHAWEBbQABAWEBbgAFAWEBbwAFAWEBcAADAWEBcQANAWEBcgALAWEBcwAFAWEBdAAQAWEBdQARAWEBdgAAAWEBdwAGAWEBeAABAWEBeQASAWEBegANAWEBQQAOAWEBQgAGAWEBQwAFAWEBRAATAWEBRQAAAWEBRgAGAWEBRwAUAWEBSAAGAWEBSQABAWEBSgALAWEBSwAAAWEBTAAAAWEBTQAEAWEBTgAHAWEBTwAEAWEBUAAFAWEBUQAKAWEBUgAOAWEBUwAVAWEBVAABAWEBVQACAWEBVgABAWEBVwAAAWEBWAAMAWEBWQAIAWEBWgAIAWEBXwAAAWEBJAAWAWECYWEAFwN8ewQBAAMAGAMAAQAJAQUAAAEAAAgHBgYBAQMPBQAPBAIFARkEBgEABgELBhoBGwAGAQAAAgkJCAMDAAACHAEDAQIAAAECAAABAgICAgIGAAUDBAIKBAQEBAQEAgQFAgUCAAEAAgoBAQAEAAAdAAoBAQEDCAgJCQMHBwcABgQFAXABb28FBwEBggKAgAIGCAF/AUHAyQQLB1QPAmJhAgACY2EAsQECZGEAdQJlYQA/AmZhADkCZ2EBAAJoYQChAQJpYQCeAQJqYQCdAQJrYQCwAQJsYQCjAQJtYQBwAm5hAG8Cb2EApwECcGEApgEJngEBAEEBC25lnAFkmwGaAZkBmAGXAZYBlQGUAZMBkgFjYZEBkAGPAY4BjQGMAYsBigGJAWQ4MWNhMIgBhwGGAYUBJAmEARsWNA8Q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EFELCzEAIAAgASgCCEEAEDoEQCABIAIgAxBRDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRBwALBgAgACQAC38AQaw6QQE2AgBBsDpBADYCABBlQbA6Qcw6KAIANgIAQcw6Qaw6NgIAQdA6QTs2AgBB1DpBADYCABBaQdQ6Qcw6KAIANgIAQcw6QdA6NgIAQZQ7QYDAADYCAEGMO0HAyQQ2AgBB8DpBKjYCAEG4O0H8OzYCAEGQO0GAgAQ2AgALC4ArFQBBgAgLsR5mYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5AFVpbnQ4QXJyYXkAY29sb3JNYXgAc2hNYXgAc2NhbGVNYXgALSsgICAwWDB4AG1pc21hdGNoZWQgdmVyc2lvbiEgZXhwZWN0ZWQgMS4xLngAdW5zaWduZWQgc2hvcnQAdW5zaWduZWQgaW50AHNldABmbG9hdABpbnZhbGlkIGNvbG9yIG5vcm1hbGl6YXRpb24gY29lZmZpY2llbnRzAGludmFsaWQgc2ggbm9ybWFsaXphdGlvbiBjb2VmZmljaWVudHMAaW52YWxpZCBzY2FsZSBub3JtYWxpemF0aW9uIGNvZWZmaWNpZW50cwBzdWNjZXNzAGNvbG9ycwByb3RhdGlvbnMAZmlsZSBjb250YWlucyAwIGdhdXNzaWFucwBHYXVzc2lhbnMAbWVhbnMAc2hzAHNjYWxlcwB2ZWxvY2l0aWVzAG9wYWNpdGllcwB2ZWN0b3IAYXR0ZW1wdGluZyB0byByZWFkIHBhc3QgZW5kIG9mIGJ1ZmZlcgB1bnNpZ25lZCBjaGFyAHN0ZDo6ZXhjZXB0aW9uAGR1cmF0aW9uAGNvbG9yTWluAHNoTWluAHNjYWxlTWluAGJvb2wAbGVuZ3RoAHVuc2lnbmVkIGxvbmcgbG9uZwB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBiYXNpY19zdHJpbmcAc3RkOjpzdHJpbmcAc3RkOjp1MTZzdHJpbmcAc3RkOjp1MzJzdHJpbmcAZ2F1c3NpYW4gY291bnQgbXVzdCBiZSBwb3NpdGl2ZQBjb21iaW5lAGZhaWxlZCB0byByZWFkIGZyb20gZmlsZQBkb3VibGUAb3V0IG9mIGJvdW5kcyBzaCBkZWdyZWUAY2Fubm90IGNvbWJpbmUgZ2F1c3NpYW5zIHdpdGggZGlmZmVyZW50IHNoRGVncmVlAGRlY29kZQBtaXNtYXRjaGVkIG1hZ2ljIHdvcmQAdm9pZABzdGQ6OmJhZF9hbGxvYwBkeW5hbWljAGRnc19lcnJvci5jAGRnc19kZWNvZGUuYwBuZWdhdGl2ZSBkdXJhdGlvbiBlbmNvdW50ZXJlZCBpbiBtZXRhZGF0YQBNZXRhZGF0YQBnYXVzc2lhbiBzcGhlcmljYWwgaGFybW9taWMgZGVncmVlIG11c3QgYmUgbGVzcyB0aGFuIERHU19HQVVTU0lBTlNfTUFYX1NIX0RFR1JFRQBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgBpbnZhbGlkIGlucHV0IChwcm92aWRlZCBtZW1vcnkvZmlsZSBpbnB1dCB3YXMgaW4gYW4gaW52YWxpZCBmb3JtYXQpAChudWxsKQBpbnZhbGlkIGFyZ3VtZW50cyAoYmFkIGZ1bmN0aW9uIGNhbGwpAGZhaWxlZCB0byB3cml0ZSB0byBhIGZpbGUgKGZ3cml0ZSB3cm90ZSBmZXdlciBieXRlcyB0aGFuIHJlcXVlc3RlZCkAZmFpbGVkIHRvIHJlYWQgZnJvbSBhIGZpbGUgKGZyZWFkIHJlYWQgZmV3ZXIgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQpAGZhaWxlZCB0byBvcGVuIGEgZmlsZSAoZm9wZW4gcmV0dXJuZWQgTlVMTCkAb3V0IG9mIG1lbW9yeSAoREdTX01BTExPQy9ER1NfUkVBTExPQyByZXR1cm5lZCBOVUxMKQBmYWlsZWQgdG8gY2xvc2UgYSBmaWxlIChmY2xvc2UgcmV0dXJuZWQgRU9GKQBER1MgaW50ZXJuYWwgZXJyb3I6ICIAREdTIEVSUk9SOiAiJXMiIGluICVzIGF0IGxpbmUgJWkKAERHUyBXQVJOSU5HOiAiJXMiIGluICVzIGF0IGxpbmUgJWkKAAlpbiAlcyBhdCBsaW5lICVpCgAAAAAAGQAAMAwAADEyREdTZ2F1c3NpYW5zAAAEGAAAUAwAAAAAAAAoDAAAUDEyREdTZ2F1c3NpYW5zAAQYAABwDAAAAQAAACgMAABQSzEyREdTZ2F1c3NpYW5zAHBwAHYAdnAAAAAAAAAAAKgMAAA9AAAAPgAAAD8AAABAAAAAQQAAADgZAAC0DAAA9BQAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVAxMkRHU2dhdXNzaWFuc04xMGVtc2NyaXB0ZW4xNXNtYXJ0X3B0cl90cmFpdElOU18xMHNoYXJlZF9wdHJJUzFfRUVFMTF2YWxfZGVsZXRlckVOU185YWxsb2NhdG9ySVMxX0VFRUUATjEwZW1zY3JpcHRlbjE1c21hcnRfcHRyX3RyYWl0SU5TdDNfXzIxMHNoYXJlZF9wdHJJMTJER1NnYXVzc2lhbnNFRUUxMXZhbF9kZWxldGVyRQAAAACADwAAABkAAJwNAABOU3QzX18yMTBzaGFyZWRfcHRySTEyREdTZ2F1c3NpYW5zRUUAcABwcHAAAJQNAAAAAAAA6A0AAEIAAABDAAAARAAAAEUAAABGAAAAOBkAAPQNAAD0FAAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJMTJER1NnYXVzc2lhbnNOU185YWxsb2NhdG9ySVMxX0VFRUUAaXBwAHZwcGkAZnBwAHZwcGYAABkAAFAOAAAxMURHU21ldGFkYXRhAAAAgA8AAIAPAACsFgAAgA8AAAAAAACMDgAARwAAAEgAAABJAAAASgAAAEsAAAA4GQAAmA4AAPQUAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQMTJER1NnYXVzc2lhbnNaWkwyMWVtYmluZF9pbml0X2xpYmRnc19qc3ZFTkszJF84Y2xFUktOMTBlbXNjcmlwdGVuM3ZhbEVFVWxTMl9FX05TXzlhbGxvY2F0b3JJUzFfRUVFRQBaWkwyMWVtYmluZF9pbml0X2xpYmRnc19qc3ZFTkszJF84Y2xFUktOMTBlbXNjcmlwdGVuM3ZhbEVFVWxQMTJER1NnYXVzc2lhbnNFXwAAAJQNAACUDQAAlA0AAHBwcHAAAAAAABkAAIgPAABOMTBlbXNjcmlwdGVuM3ZhbEUAAAAZAACkDwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAAAZAADsDwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAAAAZAAA0EAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAAAAGQAAgBAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAAABkAAMwQAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAAAZAAD0EAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAAAAGQAAHBEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQAAABkAAEQRAABOMTBl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")}function ht(A){if(ArrayBuffer.isView(A))return A;if(A==WA&&W)return new Uint8Array(W);if(N)return N(A);throw"both async and sync fetching of the wasm failed"}async function ct(A){return ht(A)}async function lt(A,e){try{var g=await ct(A),r=await WebAssembly.instantiate(g,e);return r}catch(s){_(`failed to asynchronously prepare wasm: ${s}`),HA(s)}}async function ut(A,e,g){return lt(e,g)}function dt(){return{a:ri}}async function ft(){function A(B,Q){return hA=B.exports,j=hA.ba,Ee(),Ne=hA.ga,ii(hA),Et("wasm-instantiate"),hA}Ct("wasm-instantiate");function e(B){return A(B.instance)}var g=dt();if(i.instantiateWasm)return new Promise((B,Q)=>{i.instantiateWasm(g,(a,I)=>{B(A(a,I))})});WA??=nt();var r=await ut(W,WA,g),s=e(r);return s}class ne{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var he=A=>{for(;A.length>0;)A.shift()(i)},ce=[],Dt=A=>ce.push(A),le=[],wt=A=>le.push(A),pt=A=>{for(var e,g,r=0,s=0,B=A.length,Q=new Uint8Array((B*3>>2)-(A[B-2]=="=")-(A[B-1]=="="));r<B;r+=4,s+=3)e=gA[A.charCodeAt(r+1)],g=gA[A.charCodeAt(r+2)],Q[s]=gA[A.charCodeAt(r)]<<2|e>>4,Q[s+1]=e<<4|g>>2,Q[s+2]=g<<6|gA[A.charCodeAt(r+3)];return Q},ZA=!0,O=A=>Ke(A),K=()=>Xe(),FA=[],OA=0,yt=A=>{var e=new KA(A);return e.get_caught()||(e.set_caught(!0),OA--),e.set_rethrown(!1),FA.push(e),Ve(A),qe(A)},tA=0,mt=()=>{L(0,0);var A=FA.pop();ze(A.excPtr),tA=0};class KA{constructor(e){this.excPtr=e,this.ptr=e-24}set_type(e){F[this.ptr+4>>2]=e}get_type(){return F[this.ptr+4>>2]}set_destructor(e){F[this.ptr+8>>2]=e}get_destructor(){return F[this.ptr+8>>2]}set_caught(e){e=e?1:0,U[this.ptr+12]=e}get_caught(){return U[this.ptr+12]!=0}set_rethrown(e){e=e?1:0,U[this.ptr+13]=e}get_rethrown(){return U[this.ptr+13]!=0}init(e,g){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(g)}set_adjusted_ptr(e){F[this.ptr+16>>2]=e}get_adjusted_ptr(){return F[this.ptr+16>>2]}}var NA=A=>Oe(A),ue=A=>{var e=tA;if(!e)return NA(0),0;var g=new KA(e);g.set_adjusted_ptr(e);var r=g.get_type();if(!r)return NA(0),e;for(var s of A){if(s===0||s===r)break;var B=g.ptr+16;if(je(s,r,B))return NA(s),e}return NA(r),e},Gt=()=>ue([]),Ft=A=>ue([A]),Nt=()=>{var A=FA.pop();A||HA("no exception to throw");var e=A.excPtr;throw A.get_rethrown()||(FA.push(A),A.set_rethrown(!0),A.set_caught(!1),OA++),tA=e,tA},vt=(A,e,g)=>{var r=new KA(A);throw r.init(e,g),tA=A,OA++,tA},kt=A=>{throw tA||(tA=A),tA},Rt=()=>HA(""),vA={},kA=A=>{for(;A.length;){var e=A.pop(),g=A.pop();g(e)}};function uA(A){return this.fromWireType(F[A>>2])}var nA={},oA={},RA={},Yt=class extends Error{constructor(e){super(e),this.name="InternalError"}},YA=A=>{throw new Yt(A)},sA=(A,e,g)=>{A.forEach(a=>RA[a]=e);function r(a){var I=g(a);I.length!==A.length&&YA("Mismatched type converter count");for(var E=0;E<A.length;++E)q(A[E],I[E])}var s=new Array(e.length),B=[],Q=0;e.forEach((a,I)=>{oA.hasOwnProperty(a)?s[I]=oA[a]:(B.push(a),nA.hasOwnProperty(a)||(nA[a]=[]),nA[a].push(()=>{s[I]=oA[a],++Q,Q===B.length&&r(s)}))}),B.length===0&&r(s)},St=A=>{var e=vA[A];delete vA[A];var g=e.rawConstructor,r=e.rawDestructor,s=e.fields,B=s.map(Q=>Q.getterReturnType).concat(s.map(Q=>Q.setterArgumentType));sA([A],B,Q=>{var a={};return s.forEach((I,E)=>{var n=I.fieldName,u=Q[E],w=Q[E].optional,x=I.getter,P=I.getterContext,aA=Q[E+s.length],EA=I.setter,AA=I.setterContext;a[n]={read:rA=>u.fromWireType(x(P,rA)),write:(rA,T)=>{var JA=[];EA(AA,rA,aA.toWireType(JA,T)),kA(JA)},optional:w}}),[{name:e.name,fromWireType:I=>{var E={};for(var n in a)E[n]=a[n].read(I);return r(I),E},toWireType:(I,E)=>{for(var n in a)if(!(n in E)&&!a[n].optional)throw new TypeError(`Missing field: "${n}"`);var u=g();for(n in a)a[n].write(u,E[n]);return I!==null&&I.push(r,u),u},argPackAdvance:$,readValueFromPointer:uA,destructorFunction:r}]})},S=A=>{for(var e="";;){var g=v[A++];if(!g)return e;e+=String.fromCharCode(g)}},dA=class extends Error{constructor(e){super(e),this.name="BindingError"}},f=A=>{throw new dA(A)};function Mt(A,e,g={}){var r=e.name;if(A||f(`type "${r}" must have a positive integer typeid pointer`),oA.hasOwnProperty(A)){if(g.ignoreDuplicateRegistrations)return;f(`Cannot register type '${r}' twice`)}if(oA[A]=e,delete RA[A],nA.hasOwnProperty(A)){var s=nA[A];delete nA[A],s.forEach(B=>B())}}function q(A,e,g={}){return Mt(A,e,g)}var de=(A,e,g)=>{switch(e){case 1:return g?r=>U[r]:r=>v[r];case 2:return g?r=>G[r>>1]:r=>m[r>>1];case 4:return g?r=>QA[r>>2]:r=>F[r>>2];case 8:return g?r=>Ie[r>>3]:r=>oe[r>>3];default:throw new TypeError(`invalid integer width (${e}): ${A}`)}},Ut=(A,e,g,r,s)=>{e=S(e);let B=r===0n,Q=a=>a;if(B){let a=g*8;Q=I=>BigInt.asUintN(a,I),s=Q(s)}q(A,{name:e,fromWireType:Q,toWireType:(a,I)=>(typeof I=="number"&&(I=BigInt(I)),I),argPackAdvance:$,readValueFromPointer:de(e,g,!B),destructorFunction:null})},$=8,bt=(A,e,g,r)=>{e=S(e),q(A,{name:e,fromWireType:function(s){return!!s},toWireType:function(s,B){return B?g:r},argPackAdvance:$,readValueFromPointer:function(s){return this.fromWireType(v[s])},destructorFunction:null})},xt=A=>({count:A.count,deleteScheduled:A.deleteScheduled,preservePointerOnDelete:A.preservePointerOnDelete,ptr:A.ptr,ptrType:A.ptrType,smartPtr:A.smartPtr,smartPtrType:A.smartPtrType}),XA=A=>{function e(g){return g.$$.ptrType.registeredClass.name}f(e(A)+" instance already deleted")},VA=!1,fe=A=>{},Jt=A=>{A.smartPtr?A.smartPtrType.rawDestructor(A.smartPtr):A.ptrType.registeredClass.rawDestructor(A.ptr)},De=A=>{A.count.value-=1;var e=A.count.value===0;e&&Jt(A)},fA=A=>typeof FinalizationRegistry>"u"?(fA=e=>e,A):(VA=new FinalizationRegistry(e=>{De(e.$$)}),fA=e=>{var g=e.$$,r=!!g.smartPtr;if(r){var s={$$:g};VA.register(e,s,e)}return e},fe=e=>VA.unregister(e),fA(A)),SA=[],Tt=()=>{for(;SA.length;){var A=SA.pop();A.$$.deleteScheduled=!1,A.delete()}},we,_t=()=>{let A=MA.prototype;Object.assign(A,{isAliasOf(g){if(!(this instanceof MA)||!(g instanceof MA))return!1;var r=this.$$.ptrType.registeredClass,s=this.$$.ptr;g.$$=g.$$;for(var B=g.$$.ptrType.registeredClass,Q=g.$$.ptr;r.baseClass;)s=r.upcast(s),r=r.baseClass;for(;B.baseClass;)Q=B.upcast(Q),B=B.baseClass;return r===B&&s===Q},clone(){if(this.$$.ptr||XA(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var g=fA(Object.create(Object.getPrototypeOf(this),{$$:{value:xt(this.$$)}}));return g.$$.count.value+=1,g.$$.deleteScheduled=!1,g},delete(){this.$$.ptr||XA(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&f("Object already scheduled for deletion"),fe(this),De(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||XA(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&f("Object already scheduled for deletion"),SA.push(this),SA.length===1&&we&&we(Tt),this.$$.deleteScheduled=!0,this}});let e=Symbol.dispose;e&&(A[e]=A.delete)};function MA(){}var zA=(A,e)=>Object.defineProperty(e,"name",{value:A}),pe={},Lt=(A,e,g)=>{if(A[e].overloadTable===void 0){var r=A[e];A[e]=function(...s){return A[e].overloadTable.hasOwnProperty(s.length)||f(`Function '${g}' called with an invalid number of arguments (${s.length}) - expects one of (${A[e].overloadTable})!`),A[e].overloadTable[s.length].apply(this,s)},A[e].overloadTable=[],A[e].overloadTable[r.argCount]=r}},ye=(A,e,g)=>{i.hasOwnProperty(A)?((g===void 0||i[A].overloadTable!==void 0&&i[A].overloadTable[g]!==void 0)&&f(`Cannot register public name '${A}' twice`),Lt(i,A,A),i[A].overloadTable.hasOwnProperty(g)&&f(`Cannot register multiple overloads of a function with the same number of arguments (${g})!`),i[A].overloadTable[g]=e):(i[A]=e,i[A].argCount=g)},Pt=48,Ht=57,Wt=A=>{A=A.replace(/[^a-zA-Z0-9_]/g,"$");var e=A.charCodeAt(0);return e>=Pt&&e<=Ht?`_${A}`:A};function Zt(A,e,g,r,s,B,Q,a){this.name=A,this.constructor=e,this.instancePrototype=g,this.rawDestructor=r,this.baseClass=s,this.getActualType=B,this.upcast=Q,this.downcast=a,this.pureVirtualFunctions=[]}var UA=(A,e,g)=>{for(;e!==g;)e.upcast||f(`Expected null or instance of ${g.name}, got an instance of ${e.name}`),A=e.upcast(A),e=e.baseClass;return A},jA=A=>{if(A===null)return"null";var e=typeof A;return e==="object"||e==="array"||e==="function"?A.toString():""+A};function Ot(A,e){if(e===null)return this.isReference&&f(`null is not a valid ${this.name}`),0;e.$$||f(`Cannot pass "${jA(e)}" as a ${this.name}`),e.$$.ptr||f(`Cannot pass deleted object as a pointer of type ${this.name}`);var g=e.$$.ptrType.registeredClass,r=UA(e.$$.ptr,g,this.registeredClass);return r}function Kt(A,e){var g;if(e===null)return this.isReference&&f(`null is not a valid ${this.name}`),this.isSmartPointer?(g=this.rawConstructor(),A!==null&&A.push(this.rawDestructor,g),g):0;(!e||!e.$$)&&f(`Cannot pass "${jA(e)}" as a ${this.name}`),e.$$.ptr||f(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&f(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass;if(g=UA(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&f("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?g=e.$$.smartPtr:f(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:g=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)g=e.$$.smartPtr;else{var s=e.clone();g=this.rawShare(g,k.toHandle(()=>s.delete())),A!==null&&A.push(this.rawDestructor,g)}break;default:f("Unsupporting sharing policy")}return g}function Xt(A,e){if(e===null)return this.isReference&&f(`null is not a valid ${this.name}`),0;e.$$||f(`Cannot pass "${jA(e)}" as a ${this.name}`),e.$$.ptr||f(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&f(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var g=e.$$.ptrType.registeredClass,r=UA(e.$$.ptr,g,this.registeredClass);return r}var me=(A,e,g)=>{if(e===g)return A;if(g.baseClass===void 0)return null;var r=me(A,e,g.baseClass);return r===null?null:g.downcast(r)},Vt={},zt=(A,e)=>{for(e===void 0&&f("ptr should not be undefined");A.baseClass;)e=A.upcast(e),A=A.baseClass;return e},jt=(A,e)=>(e=zt(A,e),Vt[e]),bA=(A,e)=>{(!e.ptrType||!e.ptr)&&YA("makeClassHandle requires ptr and ptrType");var g=!!e.smartPtrType,r=!!e.smartPtr;return g!==r&&YA("Both smartPtrType and smartPtr must be specified"),e.count={value:1},fA(Object.create(A,{$$:{value:e,writable:!0}}))};function qt(A){var e=this.getPointee(A);if(!e)return this.destructor(A),null;var g=jt(this.registeredClass,e);if(g!==void 0){if(g.$$.count.value===0)return g.$$.ptr=e,g.$$.smartPtr=A,g.clone();var r=g.clone();return this.destructor(A),r}function s(){return this.isSmartPointer?bA(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:A}):bA(this.registeredClass.instancePrototype,{ptrType:this,ptr:A})}var B=this.registeredClass.getActualType(e),Q=pe[B];if(!Q)return s.call(this);var a;this.isConst?a=Q.constPointerType:a=Q.pointerType;var I=me(e,this.registeredClass,a.registeredClass);return I===null?s.call(this):this.isSmartPointer?bA(a.registeredClass.instancePrototype,{ptrType:a,ptr:I,smartPtrType:this,smartPtr:A}):bA(a.registeredClass.instancePrototype,{ptrType:a,ptr:I})}var $t=()=>{Object.assign(DA.prototype,{getPointee(A){return this.rawGetPointee&&(A=this.rawGetPointee(A)),A},destructor(A){this.rawDestructor?.(A)},argPackAdvance:$,readValueFromPointer:uA,fromWireType:qt})};function DA(A,e,g,r,s,B,Q,a,I,E,n){this.name=A,this.registeredClass=e,this.isReference=g,this.isConst=r,this.isSmartPointer=s,this.pointeeType=B,this.sharingPolicy=Q,this.rawGetPointee=a,this.rawConstructor=I,this.rawShare=E,this.rawDestructor=n,!s&&e.baseClass===void 0?r?(this.toWireType=Ot,this.destructorFunction=null):(this.toWireType=Xt,this.destructorFunction=null):this.toWireType=Kt}var Ge=(A,e,g)=>{i.hasOwnProperty(A)||YA("Replacing nonexistent public symbol"),i[A].overloadTable!==void 0&&g!==void 0?i[A].overloadTable[g]=e:(i[A]=e,i[A].argCount=g)},Fe=[],Ne,Z=A=>{var e=Fe[A];return e||(Fe[A]=e=Ne.get(A)),e},b=(A,e,g=!1)=>{A=S(A);function r(){var B=Z(e);return B}var s=r();return typeof s!="function"&&f(`unknown function pointer with signature ${A}: ${e}`),s};class Ag extends Error{}var ve=A=>{var e=We(A),g=S(e);return iA(e),g},wA=(A,e)=>{var g=[],r={};function s(B){if(!r[B]&&!oA[B]){if(RA[B]){RA[B].forEach(s);return}g.push(B),r[B]=!0}}throw e.forEach(s),new Ag(`${A}: `+g.map(ve).join([", "]))},eg=(A,e,g,r,s,B,Q,a,I,E,n,u,w)=>{n=S(n),B=b(s,B),a&&=b(Q,a),E&&=b(I,E),w=b(u,w);var x=Wt(n);ye(x,function(){wA(`Cannot construct ${n} due to unbound types`,[r])}),sA([A,e,g],r?[r]:[],P=>{P=P[0];var aA,EA;r?(aA=P.registeredClass,EA=aA.instancePrototype):EA=MA.prototype;var AA=zA(n,function(...ge){if(Object.getPrototypeOf(this)!==rA)throw new dA(`Use 'new' to construct ${n}`);if(T.constructor_body===void 0)throw new dA(`${n} has no accessible constructor`);var et=T.constructor_body[ge.length];if(et===void 0)throw new dA(`Tried to invoke ctor of ${n} with invalid number of parameters (${ge.length}) - expected (${Object.keys(T.constructor_body).toString()}) parameters instead!`);return et.apply(this,ge)}),rA=Object.create(EA,{constructor:{value:AA}});AA.prototype=rA;var T=new Zt(n,AA,rA,w,aA,B,a,E);T.baseClass&&(T.baseClass.__derivedClasses??=[],T.baseClass.__derivedClasses.push(T));var JA=new DA(n,T,!0,!1,!1),$e=new DA(n+"*",T,!1,!1,!1),At=new DA(n+" const*",T,!1,!0,!1);return pe[A]={pointerType:$e,constPointerType:At},Ge(x,AA),[JA,$e,At]})},ke=(A,e)=>{for(var g=[],r=0;r<A;r++)g.push(F[e+r*4>>2]);return g};function Re(A){for(var e=1;e<A.length;++e)if(A[e]!==null&&A[e].destructorFunction===void 0)return!0;return!1}function tg(A,e,g,r){var s=Re(A),B=A.length-2,Q=[],a=["fn"];e&&a.push("thisWired");for(var I=0;I<B;++I)Q.push(`arg${I}`),a.push(`arg${I}Wired`);Q=Q.join(","),a=a.join(",");var E=`return function (${Q}) {
|
|
2
|
-
`;
|
|
3
|
-
`);var n=
|
|
1
|
+
var di=(async function(R={}){var t,i=R,C=!0,o=!1,h=[],D="./this.program",d=(A,e)=>{throw e},p=import.meta.url,y="",l,N;if(C||o){try{y=new URL(".",p).href}catch{}l=async A=>{var e=await fetch(A,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+" : "+e.url)}}var J=console.log.bind(console),_=console.error.bind(console),W,X=!1,M,V,z,j,U,v,G,m,QA,F,ae,Qe,Ie,oe,Ce=!1;function Ee(){var A=j.buffer;U=new Int8Array(A),G=new Int16Array(A),v=new Uint8Array(A),m=new Uint16Array(A),QA=new Int32Array(A),F=new Uint32Array(A),ae=new Float32Array(A),Qe=new Float64Array(A),Ie=new BigInt64Array(A),oe=new BigUint64Array(A)}function Qt(){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)wt(i.preRun.shift());he(le)}function It(){Ce=!0,hA.ca()}function ot(){if(i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;)Dt(i.postRun.shift());he(ce)}var IA=0,lA=null;function Ct(A){IA++,i.monitorRunDependencies?.(IA)}function Et(A){if(IA--,i.monitorRunDependencies?.(IA),IA==0&&lA){var e=lA;lA=null,e()}}function HA(A){i.onAbort?.(A),A="Aborted("+A+")",_(A),X=!0,A+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(A);throw z?.(e),e}var WA;function nt(){return pt("AGFzbQEAAAAB8AEeYAF/AGABfwF/YAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAAAYAR/f39/AGAGf39/f39/AGAFf39/f38AYAABf2AEf39/fwF/YAp/f39/f39/f39/AGAEf39/fwF8YAV/f39/fwF8YAd/f39/f39/AGAFf39/fn4AYAh/f39/f39/fwBgBn9/f39/fwF8YAt/f39/f39/f39/fwBgAn98AX9gA39/fwF8YAx/f39/f39/f39/f38AYA1/f39/f39/f39/f39/AGADf39+AX9gBX9/f39/AX9gA39/fQBgAn9/AX1gA39+fwF+YAJ/fAACzAI3AWEBYQAKAWEBYgAEAWEBYwAFAWEBZAAMAWEBZQADAWEBZgABAWEBZwACAWEBaAAAAWEBaQAJAWEBagACAWEBawAAAWEBbAAHAWEBbQABAWEBbgAFAWEBbwAFAWEBcAADAWEBcQANAWEBcgALAWEBcwAFAWEBdAAQAWEBdQARAWEBdgAAAWEBdwAGAWEBeAABAWEBeQASAWEBegANAWEBQQAOAWEBQgAGAWEBQwAFAWEBRAATAWEBRQAAAWEBRgAGAWEBRwAUAWEBSAAGAWEBSQABAWEBSgALAWEBSwAAAWEBTAAAAWEBTQAEAWEBTgAHAWEBTwAEAWEBUAAFAWEBUQAKAWEBUgAOAWEBUwAVAWEBVAABAWEBVQACAWEBVgABAWEBVwAAAWEBWAAMAWEBWQAIAWEBWgAIAWEBXwAAAWEBJAAWAWECYWEAFwN8ewQBAAMAGAMAAQAJAQUAAAEAAAgHBgYBAQMPBQAPBAIFARkEBgEABgELBhoBGwAGAQAAAgkJCAMDAAACHAEDAQIAAAECAAABAgICAgIGAAUDBAIKBAQEBAQEAgQFAgUCAAEAAgoBAQAEAAAdAAoBAQEDCAgJCQMHBwcABgQFAXABb28FBwEBggKAgAIGCAF/AUHAyQQLB1QPAmJhAgACY2EAsQECZGEAdQJlYQA/AmZhADkCZ2EBAAJoYQChAQJpYQCeAQJqYQCdAQJrYQCwAQJsYQCjAQJtYQBwAm5hAG8Cb2EApwECcGEApgEJngEBAEEBC25lnAFkmwGaAZkBmAGXAZYBlQGUAZMBkgFjYZEBkAGPAY4BjQGMAYsBigGJAWQ4MWNhMIgBhwGGAYUBJAmEARsWNA8Q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EFELCzEAIAAgASgCCEEAEDoEQCABIAIgAxBRDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRBwALBgAgACQAC38AQaw6QQE2AgBBsDpBADYCABBlQbA6Qcw6KAIANgIAQcw6Qaw6NgIAQdA6QTs2AgBB1DpBADYCABBaQdQ6Qcw6KAIANgIAQcw6QdA6NgIAQZQ7QYDAADYCAEGMO0HAyQQ2AgBB8DpBKjYCAEG4O0H8OzYCAEGQO0GAgAQ2AgALC4ArFQBBgAgLsR5mYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5AFVpbnQ4QXJyYXkAY29sb3JNYXgAc2hNYXgAc2NhbGVNYXgALSsgICAwWDB4AG1pc21hdGNoZWQgdmVyc2lvbiEgZXhwZWN0ZWQgMS4xLngAdW5zaWduZWQgc2hvcnQAdW5zaWduZWQgaW50AHNldABmbG9hdABpbnZhbGlkIGNvbG9yIG5vcm1hbGl6YXRpb24gY29lZmZpY2llbnRzAGludmFsaWQgc2ggbm9ybWFsaXphdGlvbiBjb2VmZmljaWVudHMAaW52YWxpZCBzY2FsZSBub3JtYWxpemF0aW9uIGNvZWZmaWNpZW50cwBzdWNjZXNzAGNvbG9ycwByb3RhdGlvbnMAZmlsZSBjb250YWlucyAwIGdhdXNzaWFucwBHYXVzc2lhbnMAbWVhbnMAc2hzAHNjYWxlcwB2ZWxvY2l0aWVzAG9wYWNpdGllcwB2ZWN0b3IAYXR0ZW1wdGluZyB0byByZWFkIHBhc3QgZW5kIG9mIGJ1ZmZlcgB1bnNpZ25lZCBjaGFyAHN0ZDo6ZXhjZXB0aW9uAGR1cmF0aW9uAGNvbG9yTWluAHNoTWluAHNjYWxlTWluAGJvb2wAbGVuZ3RoAHVuc2lnbmVkIGxvbmcgbG9uZwB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBiYXNpY19zdHJpbmcAc3RkOjpzdHJpbmcAc3RkOjp1MTZzdHJpbmcAc3RkOjp1MzJzdHJpbmcAZ2F1c3NpYW4gY291bnQgbXVzdCBiZSBwb3NpdGl2ZQBjb21iaW5lAGZhaWxlZCB0byByZWFkIGZyb20gZmlsZQBkb3VibGUAb3V0IG9mIGJvdW5kcyBzaCBkZWdyZWUAY2Fubm90IGNvbWJpbmUgZ2F1c3NpYW5zIHdpdGggZGlmZmVyZW50IHNoRGVncmVlAGRlY29kZQBtaXNtYXRjaGVkIG1hZ2ljIHdvcmQAdm9pZABzdGQ6OmJhZF9hbGxvYwBkeW5hbWljAGRnc19lcnJvci5jAGRnc19kZWNvZGUuYwBuZWdhdGl2ZSBkdXJhdGlvbiBlbmNvdW50ZXJlZCBpbiBtZXRhZGF0YQBNZXRhZGF0YQBnYXVzc2lhbiBzcGhlcmljYWwgaGFybW9taWMgZGVncmVlIG11c3QgYmUgbGVzcyB0aGFuIERHU19HQVVTU0lBTlNfTUFYX1NIX0RFR1JFRQBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgBpbnZhbGlkIGlucHV0IChwcm92aWRlZCBtZW1vcnkvZmlsZSBpbnB1dCB3YXMgaW4gYW4gaW52YWxpZCBmb3JtYXQpAChudWxsKQBpbnZhbGlkIGFyZ3VtZW50cyAoYmFkIGZ1bmN0aW9uIGNhbGwpAGZhaWxlZCB0byB3cml0ZSB0byBhIGZpbGUgKGZ3cml0ZSB3cm90ZSBmZXdlciBieXRlcyB0aGFuIHJlcXVlc3RlZCkAZmFpbGVkIHRvIHJlYWQgZnJvbSBhIGZpbGUgKGZyZWFkIHJlYWQgZmV3ZXIgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQpAGZhaWxlZCB0byBvcGVuIGEgZmlsZSAoZm9wZW4gcmV0dXJuZWQgTlVMTCkAb3V0IG9mIG1lbW9yeSAoREdTX01BTExPQy9ER1NfUkVBTExPQyByZXR1cm5lZCBOVUxMKQBmYWlsZWQgdG8gY2xvc2UgYSBmaWxlIChmY2xvc2UgcmV0dXJuZWQgRU9GKQBER1MgaW50ZXJuYWwgZXJyb3I6ICIAREdTIEVSUk9SOiAiJXMiIGluICVzIGF0IGxpbmUgJWkKAERHUyBXQVJOSU5HOiAiJXMiIGluICVzIGF0IGxpbmUgJWkKAAlpbiAlcyBhdCBsaW5lICVpCgAAAAAAGQAAMAwAADEyREdTZ2F1c3NpYW5zAAAEGAAAUAwAAAAAAAAoDAAAUDEyREdTZ2F1c3NpYW5zAAQYAABwDAAAAQAAACgMAABQSzEyREdTZ2F1c3NpYW5zAHBwAHYAdnAAAAAAAAAAAKgMAAA9AAAAPgAAAD8AAABAAAAAQQAAADgZAAC0DAAA9BQAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVAxMkRHU2dhdXNzaWFuc04xMGVtc2NyaXB0ZW4xNXNtYXJ0X3B0cl90cmFpdElOU18xMHNoYXJlZF9wdHJJUzFfRUVFMTF2YWxfZGVsZXRlckVOU185YWxsb2NhdG9ySVMxX0VFRUUATjEwZW1zY3JpcHRlbjE1c21hcnRfcHRyX3RyYWl0SU5TdDNfXzIxMHNoYXJlZF9wdHJJMTJER1NnYXVzc2lhbnNFRUUxMXZhbF9kZWxldGVyRQAAAACADwAAABkAAJwNAABOU3QzX18yMTBzaGFyZWRfcHRySTEyREdTZ2F1c3NpYW5zRUUAcABwcHAAAJQNAAAAAAAA6A0AAEIAAABDAAAARAAAAEUAAABGAAAAOBkAAPQNAAD0FAAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJMTJER1NnYXVzc2lhbnNOU185YWxsb2NhdG9ySVMxX0VFRUUAaXBwAHZwcGkAZnBwAHZwcGYAABkAAFAOAAAxMURHU21ldGFkYXRhAAAAgA8AAIAPAACsFgAAgA8AAAAAAACMDgAARwAAAEgAAABJAAAASgAAAEsAAAA4GQAAmA4AAPQUAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQMTJER1NnYXVzc2lhbnNaWkwyMWVtYmluZF9pbml0X2xpYmRnc19qc3ZFTkszJF84Y2xFUktOMTBlbXNjcmlwdGVuM3ZhbEVFVWxTMl9FX05TXzlhbGxvY2F0b3JJUzFfRUVFRQBaWkwyMWVtYmluZF9pbml0X2xpYmRnc19qc3ZFTkszJF84Y2xFUktOMTBlbXNjcmlwdGVuM3ZhbEVFVWxQMTJER1NnYXVzc2lhbnNFXwAAAJQNAACUDQAAlA0AAHBwcHAAAAAAABkAAIgPAABOMTBlbXNjcmlwdGVuM3ZhbEUAAAAZAACkDwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAAAZAADsDwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAAAAZAAA0EAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAAAAGQAAgBAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAAABkAAMwQAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAAAZAAD0EAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAAAAGQAAHBEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQAAABkAAEQRAABOMTBl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")}function ht(A){if(ArrayBuffer.isView(A))return A;if(A==WA&&W)return new Uint8Array(W);if(N)return N(A);throw"both async and sync fetching of the wasm failed"}async function ct(A){return ht(A)}async function lt(A,e){try{var g=await ct(A),s=await WebAssembly.instantiate(g,e);return s}catch(r){_(`failed to asynchronously prepare wasm: ${r}`),HA(r)}}async function ut(A,e,g){return lt(e,g)}function dt(){return{a:si}}async function ft(){function A(B,Q){return hA=B.exports,j=hA.ba,Ee(),Ne=hA.ga,ii(hA),Et("wasm-instantiate"),hA}Ct("wasm-instantiate");function e(B){return A(B.instance)}var g=dt();if(i.instantiateWasm)return new Promise((B,Q)=>{i.instantiateWasm(g,(a,I)=>{B(A(a,I))})});WA??=nt();var s=await ut(W,WA,g),r=e(s);return r}class ne{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var he=A=>{for(;A.length>0;)A.shift()(i)},ce=[],Dt=A=>ce.push(A),le=[],wt=A=>le.push(A),pt=A=>{for(var e,g,s=0,r=0,B=A.length,Q=new Uint8Array((B*3>>2)-(A[B-2]=="=")-(A[B-1]=="="));s<B;s+=4,r+=3)e=gA[A.charCodeAt(s+1)],g=gA[A.charCodeAt(s+2)],Q[r]=gA[A.charCodeAt(s)]<<2|e>>4,Q[r+1]=e<<4|g>>2,Q[r+2]=g<<6|gA[A.charCodeAt(s+3)];return Q},ZA=!0,O=A=>Ke(A),K=()=>Xe(),FA=[],OA=0,yt=A=>{var e=new KA(A);return e.get_caught()||(e.set_caught(!0),OA--),e.set_rethrown(!1),FA.push(e),Ve(A),qe(A)},tA=0,mt=()=>{L(0,0);var A=FA.pop();ze(A.excPtr),tA=0};class KA{constructor(e){this.excPtr=e,this.ptr=e-24}set_type(e){F[this.ptr+4>>2]=e}get_type(){return F[this.ptr+4>>2]}set_destructor(e){F[this.ptr+8>>2]=e}get_destructor(){return F[this.ptr+8>>2]}set_caught(e){e=e?1:0,U[this.ptr+12]=e}get_caught(){return U[this.ptr+12]!=0}set_rethrown(e){e=e?1:0,U[this.ptr+13]=e}get_rethrown(){return U[this.ptr+13]!=0}init(e,g){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(g)}set_adjusted_ptr(e){F[this.ptr+16>>2]=e}get_adjusted_ptr(){return F[this.ptr+16>>2]}}var NA=A=>Oe(A),ue=A=>{var e=tA;if(!e)return NA(0),0;var g=new KA(e);g.set_adjusted_ptr(e);var s=g.get_type();if(!s)return NA(0),e;for(var r of A){if(r===0||r===s)break;var B=g.ptr+16;if(je(r,s,B))return NA(r),e}return NA(s),e},Gt=()=>ue([]),Ft=A=>ue([A]),Nt=()=>{var A=FA.pop();A||HA("no exception to throw");var e=A.excPtr;throw A.get_rethrown()||(FA.push(A),A.set_rethrown(!0),A.set_caught(!1),OA++),tA=e,tA},vt=(A,e,g)=>{var s=new KA(A);throw s.init(e,g),tA=A,OA++,tA},kt=A=>{throw tA||(tA=A),tA},Rt=()=>HA(""),vA={},kA=A=>{for(;A.length;){var e=A.pop(),g=A.pop();g(e)}};function uA(A){return this.fromWireType(F[A>>2])}var nA={},oA={},RA={},Yt=class extends Error{constructor(e){super(e),this.name="InternalError"}},YA=A=>{throw new Yt(A)},rA=(A,e,g)=>{A.forEach(a=>RA[a]=e);function s(a){var I=g(a);I.length!==A.length&&YA("Mismatched type converter count");for(var E=0;E<A.length;++E)q(A[E],I[E])}var r=new Array(e.length),B=[],Q=0;e.forEach((a,I)=>{oA.hasOwnProperty(a)?r[I]=oA[a]:(B.push(a),nA.hasOwnProperty(a)||(nA[a]=[]),nA[a].push(()=>{r[I]=oA[a],++Q,Q===B.length&&s(r)}))}),B.length===0&&s(r)},St=A=>{var e=vA[A];delete vA[A];var g=e.rawConstructor,s=e.rawDestructor,r=e.fields,B=r.map(Q=>Q.getterReturnType).concat(r.map(Q=>Q.setterArgumentType));rA([A],B,Q=>{var a={};return r.forEach((I,E)=>{var n=I.fieldName,u=Q[E],w=Q[E].optional,x=I.getter,P=I.getterContext,aA=Q[E+r.length],EA=I.setter,AA=I.setterContext;a[n]={read:sA=>u.fromWireType(x(P,sA)),write:(sA,T)=>{var JA=[];EA(AA,sA,aA.toWireType(JA,T)),kA(JA)},optional:w}}),[{name:e.name,fromWireType:I=>{var E={};for(var n in a)E[n]=a[n].read(I);return s(I),E},toWireType:(I,E)=>{for(var n in a)if(!(n in E)&&!a[n].optional)throw new TypeError(`Missing field: "${n}"`);var u=g();for(n in a)a[n].write(u,E[n]);return I!==null&&I.push(s,u),u},argPackAdvance:$,readValueFromPointer:uA,destructorFunction:s}]})},S=A=>{for(var e="";;){var g=v[A++];if(!g)return e;e+=String.fromCharCode(g)}},dA=class extends Error{constructor(e){super(e),this.name="BindingError"}},f=A=>{throw new dA(A)};function Mt(A,e,g={}){var s=e.name;if(A||f(`type "${s}" must have a positive integer typeid pointer`),oA.hasOwnProperty(A)){if(g.ignoreDuplicateRegistrations)return;f(`Cannot register type '${s}' twice`)}if(oA[A]=e,delete RA[A],nA.hasOwnProperty(A)){var r=nA[A];delete nA[A],r.forEach(B=>B())}}function q(A,e,g={}){return Mt(A,e,g)}var de=(A,e,g)=>{switch(e){case 1:return g?s=>U[s]:s=>v[s];case 2:return g?s=>G[s>>1]:s=>m[s>>1];case 4:return g?s=>QA[s>>2]:s=>F[s>>2];case 8:return g?s=>Ie[s>>3]:s=>oe[s>>3];default:throw new TypeError(`invalid integer width (${e}): ${A}`)}},Ut=(A,e,g,s,r)=>{e=S(e);let B=s===0n,Q=a=>a;if(B){let a=g*8;Q=I=>BigInt.asUintN(a,I),r=Q(r)}q(A,{name:e,fromWireType:Q,toWireType:(a,I)=>(typeof I=="number"&&(I=BigInt(I)),I),argPackAdvance:$,readValueFromPointer:de(e,g,!B),destructorFunction:null})},$=8,bt=(A,e,g,s)=>{e=S(e),q(A,{name:e,fromWireType:function(r){return!!r},toWireType:function(r,B){return B?g:s},argPackAdvance:$,readValueFromPointer:function(r){return this.fromWireType(v[r])},destructorFunction:null})},xt=A=>({count:A.count,deleteScheduled:A.deleteScheduled,preservePointerOnDelete:A.preservePointerOnDelete,ptr:A.ptr,ptrType:A.ptrType,smartPtr:A.smartPtr,smartPtrType:A.smartPtrType}),XA=A=>{function e(g){return g.$$.ptrType.registeredClass.name}f(e(A)+" instance already deleted")},VA=!1,fe=A=>{},Jt=A=>{A.smartPtr?A.smartPtrType.rawDestructor(A.smartPtr):A.ptrType.registeredClass.rawDestructor(A.ptr)},De=A=>{A.count.value-=1;var e=A.count.value===0;e&&Jt(A)},fA=A=>typeof FinalizationRegistry>"u"?(fA=e=>e,A):(VA=new FinalizationRegistry(e=>{De(e.$$)}),fA=e=>{var g=e.$$,s=!!g.smartPtr;if(s){var r={$$:g};VA.register(e,r,e)}return e},fe=e=>VA.unregister(e),fA(A)),SA=[],Tt=()=>{for(;SA.length;){var A=SA.pop();A.$$.deleteScheduled=!1,A.delete()}},we,_t=()=>{let A=MA.prototype;Object.assign(A,{isAliasOf(g){if(!(this instanceof MA)||!(g instanceof MA))return!1;var s=this.$$.ptrType.registeredClass,r=this.$$.ptr;g.$$=g.$$;for(var B=g.$$.ptrType.registeredClass,Q=g.$$.ptr;s.baseClass;)r=s.upcast(r),s=s.baseClass;for(;B.baseClass;)Q=B.upcast(Q),B=B.baseClass;return s===B&&r===Q},clone(){if(this.$$.ptr||XA(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var g=fA(Object.create(Object.getPrototypeOf(this),{$$:{value:xt(this.$$)}}));return g.$$.count.value+=1,g.$$.deleteScheduled=!1,g},delete(){this.$$.ptr||XA(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&f("Object already scheduled for deletion"),fe(this),De(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||XA(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&f("Object already scheduled for deletion"),SA.push(this),SA.length===1&&we&&we(Tt),this.$$.deleteScheduled=!0,this}});let e=Symbol.dispose;e&&(A[e]=A.delete)};function MA(){}var zA=(A,e)=>Object.defineProperty(e,"name",{value:A}),pe={},Lt=(A,e,g)=>{if(A[e].overloadTable===void 0){var s=A[e];A[e]=function(...r){return A[e].overloadTable.hasOwnProperty(r.length)||f(`Function '${g}' called with an invalid number of arguments (${r.length}) - expects one of (${A[e].overloadTable})!`),A[e].overloadTable[r.length].apply(this,r)},A[e].overloadTable=[],A[e].overloadTable[s.argCount]=s}},ye=(A,e,g)=>{i.hasOwnProperty(A)?((g===void 0||i[A].overloadTable!==void 0&&i[A].overloadTable[g]!==void 0)&&f(`Cannot register public name '${A}' twice`),Lt(i,A,A),i[A].overloadTable.hasOwnProperty(g)&&f(`Cannot register multiple overloads of a function with the same number of arguments (${g})!`),i[A].overloadTable[g]=e):(i[A]=e,i[A].argCount=g)},Pt=48,Ht=57,Wt=A=>{A=A.replace(/[^a-zA-Z0-9_]/g,"$");var e=A.charCodeAt(0);return e>=Pt&&e<=Ht?`_${A}`:A};function Zt(A,e,g,s,r,B,Q,a){this.name=A,this.constructor=e,this.instancePrototype=g,this.rawDestructor=s,this.baseClass=r,this.getActualType=B,this.upcast=Q,this.downcast=a,this.pureVirtualFunctions=[]}var UA=(A,e,g)=>{for(;e!==g;)e.upcast||f(`Expected null or instance of ${g.name}, got an instance of ${e.name}`),A=e.upcast(A),e=e.baseClass;return A},jA=A=>{if(A===null)return"null";var e=typeof A;return e==="object"||e==="array"||e==="function"?A.toString():""+A};function Ot(A,e){if(e===null)return this.isReference&&f(`null is not a valid ${this.name}`),0;e.$$||f(`Cannot pass "${jA(e)}" as a ${this.name}`),e.$$.ptr||f(`Cannot pass deleted object as a pointer of type ${this.name}`);var g=e.$$.ptrType.registeredClass,s=UA(e.$$.ptr,g,this.registeredClass);return s}function Kt(A,e){var g;if(e===null)return this.isReference&&f(`null is not a valid ${this.name}`),this.isSmartPointer?(g=this.rawConstructor(),A!==null&&A.push(this.rawDestructor,g),g):0;(!e||!e.$$)&&f(`Cannot pass "${jA(e)}" as a ${this.name}`),e.$$.ptr||f(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&f(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var s=e.$$.ptrType.registeredClass;if(g=UA(e.$$.ptr,s,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&f("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?g=e.$$.smartPtr:f(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:g=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)g=e.$$.smartPtr;else{var r=e.clone();g=this.rawShare(g,k.toHandle(()=>r.delete())),A!==null&&A.push(this.rawDestructor,g)}break;default:f("Unsupporting sharing policy")}return g}function Xt(A,e){if(e===null)return this.isReference&&f(`null is not a valid ${this.name}`),0;e.$$||f(`Cannot pass "${jA(e)}" as a ${this.name}`),e.$$.ptr||f(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&f(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var g=e.$$.ptrType.registeredClass,s=UA(e.$$.ptr,g,this.registeredClass);return s}var me=(A,e,g)=>{if(e===g)return A;if(g.baseClass===void 0)return null;var s=me(A,e,g.baseClass);return s===null?null:g.downcast(s)},Vt={},zt=(A,e)=>{for(e===void 0&&f("ptr should not be undefined");A.baseClass;)e=A.upcast(e),A=A.baseClass;return e},jt=(A,e)=>(e=zt(A,e),Vt[e]),bA=(A,e)=>{(!e.ptrType||!e.ptr)&&YA("makeClassHandle requires ptr and ptrType");var g=!!e.smartPtrType,s=!!e.smartPtr;return g!==s&&YA("Both smartPtrType and smartPtr must be specified"),e.count={value:1},fA(Object.create(A,{$$:{value:e,writable:!0}}))};function qt(A){var e=this.getPointee(A);if(!e)return this.destructor(A),null;var g=jt(this.registeredClass,e);if(g!==void 0){if(g.$$.count.value===0)return g.$$.ptr=e,g.$$.smartPtr=A,g.clone();var s=g.clone();return this.destructor(A),s}function r(){return this.isSmartPointer?bA(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:A}):bA(this.registeredClass.instancePrototype,{ptrType:this,ptr:A})}var B=this.registeredClass.getActualType(e),Q=pe[B];if(!Q)return r.call(this);var a;this.isConst?a=Q.constPointerType:a=Q.pointerType;var I=me(e,this.registeredClass,a.registeredClass);return I===null?r.call(this):this.isSmartPointer?bA(a.registeredClass.instancePrototype,{ptrType:a,ptr:I,smartPtrType:this,smartPtr:A}):bA(a.registeredClass.instancePrototype,{ptrType:a,ptr:I})}var $t=()=>{Object.assign(DA.prototype,{getPointee(A){return this.rawGetPointee&&(A=this.rawGetPointee(A)),A},destructor(A){this.rawDestructor?.(A)},argPackAdvance:$,readValueFromPointer:uA,fromWireType:qt})};function DA(A,e,g,s,r,B,Q,a,I,E,n){this.name=A,this.registeredClass=e,this.isReference=g,this.isConst=s,this.isSmartPointer=r,this.pointeeType=B,this.sharingPolicy=Q,this.rawGetPointee=a,this.rawConstructor=I,this.rawShare=E,this.rawDestructor=n,!r&&e.baseClass===void 0?s?(this.toWireType=Ot,this.destructorFunction=null):(this.toWireType=Xt,this.destructorFunction=null):this.toWireType=Kt}var Ge=(A,e,g)=>{i.hasOwnProperty(A)||YA("Replacing nonexistent public symbol"),i[A].overloadTable!==void 0&&g!==void 0?i[A].overloadTable[g]=e:(i[A]=e,i[A].argCount=g)},Fe=[],Ne,Z=A=>{var e=Fe[A];return e||(Fe[A]=e=Ne.get(A)),e},b=(A,e,g=!1)=>{A=S(A);function s(){var B=Z(e);return B}var r=s();return typeof r!="function"&&f(`unknown function pointer with signature ${A}: ${e}`),r};class Ag extends Error{}var ve=A=>{var e=We(A),g=S(e);return iA(e),g},wA=(A,e)=>{var g=[],s={};function r(B){if(!s[B]&&!oA[B]){if(RA[B]){RA[B].forEach(r);return}g.push(B),s[B]=!0}}throw e.forEach(r),new Ag(`${A}: `+g.map(ve).join([", "]))},eg=(A,e,g,s,r,B,Q,a,I,E,n,u,w)=>{n=S(n),B=b(r,B),a&&=b(Q,a),E&&=b(I,E),w=b(u,w);var x=Wt(n);ye(x,function(){wA(`Cannot construct ${n} due to unbound types`,[s])}),rA([A,e,g],s?[s]:[],P=>{P=P[0];var aA,EA;s?(aA=P.registeredClass,EA=aA.instancePrototype):EA=MA.prototype;var AA=zA(n,function(...ge){if(Object.getPrototypeOf(this)!==sA)throw new dA(`Use 'new' to construct ${n}`);if(T.constructor_body===void 0)throw new dA(`${n} has no accessible constructor`);var et=T.constructor_body[ge.length];if(et===void 0)throw new dA(`Tried to invoke ctor of ${n} with invalid number of parameters (${ge.length}) - expected (${Object.keys(T.constructor_body).toString()}) parameters instead!`);return et.apply(this,ge)}),sA=Object.create(EA,{constructor:{value:AA}});AA.prototype=sA;var T=new Zt(n,AA,sA,w,aA,B,a,E);T.baseClass&&(T.baseClass.__derivedClasses??=[],T.baseClass.__derivedClasses.push(T));var JA=new DA(n,T,!0,!1,!1),$e=new DA(n+"*",T,!1,!1,!1),At=new DA(n+" const*",T,!1,!0,!1);return pe[A]={pointerType:$e,constPointerType:At},Ge(x,AA),[JA,$e,At]})},ke=(A,e)=>{for(var g=[],s=0;s<A;s++)g.push(F[e+s*4>>2]);return g};function Re(A){for(var e=1;e<A.length;++e)if(A[e]!==null&&A[e].destructorFunction===void 0)return!0;return!1}function tg(A,e,g,s){var r=Re(A),B=A.length-2,Q=[],a=["fn"];e&&a.push("thisWired");for(var I=0;I<B;++I)Q.push(`arg${I}`),a.push(`arg${I}Wired`);Q=Q.join(","),a=a.join(",");var E=`return function (${Q}) {
|
|
2
|
+
`;r&&(E+=`var destructors = [];
|
|
3
|
+
`);var n=r?"destructors":"null",u=["humanName","throwBindingError","invoker","fn","runDestructors","retType","classParam"];e&&(E+=`var thisWired = classParam['toWireType'](${n}, this);
|
|
4
4
|
`);for(var I=0;I<B;++I)E+=`var arg${I}Wired = argType${I}['toWireType'](${n}, arg${I});
|
|
5
|
-
`,u.push(`argType${I}`);if(E+=(g||
|
|
6
|
-
`,
|
|
5
|
+
`,u.push(`argType${I}`);if(E+=(g||s?"var rv = ":"")+`invoker(${a});
|
|
6
|
+
`,r)E+=`runDestructors(destructors);
|
|
7
7
|
`;else for(var I=e?1:2;I<A.length;++I){var w=I===1?"thisWired":"arg"+(I-2)+"Wired";A[I].destructorFunction!==null&&(E+=`${w}_dtor(${w});
|
|
8
8
|
`,u.push(`${w}_dtor`))}return g&&(E+=`var ret = retType['fromWireType'](rv);
|
|
9
9
|
return ret;
|
|
10
10
|
`),E+=`}
|
|
11
|
-
`,[u,E]}function Ye(A,e,g,r,
|
|
12
|
-
`,Q=0,a=[];g===0&&a.push("obj");for(var I=["retType"],E=[
|
|
13
|
-
`,Q+=
|
|
14
|
-
`,
|
|
11
|
+
`,[u,E]}function Ye(A,e,g,s,r,B){var Q=e.length;Q<2&&f("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=e[1]!==null&&g!==null,I=Re(e),E=e[0].name!=="void",n=[A,f,s,r,kA,e[0],e[1]],u=0;u<Q-2;++u)n.push(e[u+2]);if(!I)for(var u=a?1:2;u<e.length;++u)e[u].destructorFunction!==null&&n.push(e[u].destructorFunction);let[w,x]=tg(e,a,E,B);var P=new Function(...w,x)(...n);return zA(A,P)}for(var gg=(A,e,g,s,r,B)=>{var Q=ke(e,g);r=b(s,r),rA([],[A],a=>{a=a[0];var I=`constructor ${a.name}`;if(a.registeredClass.constructor_body===void 0&&(a.registeredClass.constructor_body=[]),a.registeredClass.constructor_body[e-1]!==void 0)throw new dA(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${a.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return a.registeredClass.constructor_body[e-1]=()=>{wA(`Cannot construct ${a.name} due to unbound types`,Q)},rA([],Q,E=>(E.splice(1,0,null),a.registeredClass.constructor_body[e-1]=Ye(I,E,null,r,B),[])),[]})},Se=(A,e,g)=>(A instanceof Object||f(`${g} with invalid "this": ${A}`),A instanceof e.registeredClass.constructor||f(`${g} incompatible with "this" of type ${A.constructor.name}`),A.$$.ptr||f(`cannot call emscripten binding method ${g} on deleted object`),UA(A.$$.ptr,A.$$.ptrType.registeredClass,e.registeredClass)),ig=(A,e,g,s,r,B,Q,a,I,E)=>{e=S(e),r=b(s,r),rA([],[A],n=>{n=n[0];var u=`${n.name}.${e}`,w={get(){wA(`Cannot access ${u} due to unbound types`,[g,Q])},enumerable:!0,configurable:!0};return I?w.set=()=>wA(`Cannot access ${u} due to unbound types`,[g,Q]):w.set=x=>f(u+" is a read-only property"),Object.defineProperty(n.registeredClass.instancePrototype,e,w),rA([],I?[g,Q]:[g],x=>{var P=x[0],aA={get(){var AA=Se(this,n,u+" getter");return P.fromWireType(r(B,AA))},enumerable:!0};if(I){I=b(a,I);var EA=x[1];aA.set=function(AA){var sA=Se(this,n,u+" setter"),T=[];I(E,sA,EA.toWireType(T,AA)),kA(T)}}return Object.defineProperty(n.registeredClass.instancePrototype,e,aA),[]}),[]})},Me=[],CA=[0,1,,1,null,1,!0,1,!1,1],qA=A=>{A>9&&--CA[A+1]===0&&(CA[A]=void 0,Me.push(A))},k={toValue:A=>(A||f(`Cannot use deleted val. handle = ${A}`),CA[A]),toHandle:A=>{switch(A){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let e=Me.pop()||CA.length;return CA[e]=A,CA[e+1]=1,e}}}},sg={name:"emscripten::val",fromWireType:A=>{var e=k.toValue(A);return qA(A),e},toWireType:(A,e)=>k.toHandle(e),argPackAdvance:$,readValueFromPointer:uA,destructorFunction:null},rg=A=>q(A,sg),Bg=(A,e)=>{switch(e){case 4:return function(g){return this.fromWireType(ae[g>>2])};case 8:return function(g){return this.fromWireType(Qe[g>>3])};default:throw new TypeError(`invalid float width (${e}): ${A}`)}},ag=(A,e,g)=>{e=S(e),q(A,{name:e,fromWireType:s=>s,toWireType:(s,r)=>r,argPackAdvance:$,readValueFromPointer:Bg(e,g),destructorFunction:null})},Qg=A=>{A=A.trim();let e=A.indexOf("(");return e===-1?A:A.slice(0,e)},Ig=(A,e,g,s,r,B,Q,a)=>{var I=ke(e,g);A=S(A),A=Qg(A),r=b(s,r,Q),ye(A,function(){wA(`Cannot call ${A} due to unbound types`,I)},e-1),rA([],I,E=>{var n=[E[0],null].concat(E.slice(1));return Ge(A,Ye(A,n,null,r,B,Q),e-1),[]})},og=(A,e,g,s,r)=>{e=S(e);let B=s===0,Q=I=>I;if(B){var a=32-8*g;Q=I=>I<<a>>>a,r=Q(r)}q(A,{name:e,fromWireType:Q,toWireType:(I,E)=>E,argPackAdvance:$,readValueFromPointer:de(e,g,s!==0),destructorFunction:null})},Cg=(A,e,g)=>{var s=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],r=s[e];function B(Q){var a=F[Q>>2],I=F[Q+4>>2];return new r(U.buffer,I,a)}g=S(g),q(A,{name:g,fromWireType:B,argPackAdvance:$,readValueFromPointer:B},{ignoreDuplicateRegistrations:!0})},Eg=(A,e,g,s,r,B,Q,a,I,E,n,u)=>{g=S(g),B=b(r,B),a=b(Q,a),E=b(I,E),u=b(n,u),rA([A],[e],w=>{w=w[0];var x=new DA(g,w.registeredClass,!1,!1,!0,w,s,B,a,E,u);return[x]})},ng=(A,e,g,s)=>{if(!(s>0))return 0;for(var r=g,B=g+s-1,Q=0;Q<A.length;++Q){var a=A.codePointAt(Q);if(a<=127){if(g>=B)break;e[g++]=a}else if(a<=2047){if(g+1>=B)break;e[g++]=192|a>>6,e[g++]=128|a&63}else if(a<=65535){if(g+2>=B)break;e[g++]=224|a>>12,e[g++]=128|a>>6&63,e[g++]=128|a&63}else{if(g+3>=B)break;e[g++]=240|a>>18,e[g++]=128|a>>12&63,e[g++]=128|a>>6&63,e[g++]=128|a&63,Q++}}return e[g]=0,g-r},hg=(A,e,g)=>ng(A,v,e,g),cg=A=>{for(var e=0,g=0;g<A.length;++g){var s=A.charCodeAt(g);s<=127?e++:s<=2047?e+=2:s>=55296&&s<=57343?(e+=4,++g):e+=3}return e},Ue=typeof TextDecoder<"u"?new TextDecoder:void 0,be=(A,e=0,g=NaN)=>{for(var s=e+g,r=e;A[r]&&!(r>=s);)++r;if(r-e>16&&A.buffer&&Ue)return Ue.decode(A.subarray(e,r));for(var B="";e<r;){var Q=A[e++];if(!(Q&128)){B+=String.fromCharCode(Q);continue}var a=A[e++]&63;if((Q&224)==192){B+=String.fromCharCode((Q&31)<<6|a);continue}var I=A[e++]&63;if((Q&240)==224?Q=(Q&15)<<12|a<<6|I:Q=(Q&7)<<18|a<<12|I<<6|A[e++]&63,Q<65536)B+=String.fromCharCode(Q);else{var E=Q-65536;B+=String.fromCharCode(55296|E>>10,56320|E&1023)}}return B},lg=(A,e)=>A?be(v,A,e):"",ug=(A,e)=>{e=S(e);var g=!0;q(A,{name:e,fromWireType(s){var r=F[s>>2],B=s+4,Q;if(g)for(var a=B,I=0;I<=r;++I){var E=B+I;if(I==r||v[E]==0){var n=E-a,u=lg(a,n);Q===void 0?Q=u:(Q+="\0",Q+=u),a=E+1}}else{for(var w=new Array(r),I=0;I<r;++I)w[I]=String.fromCharCode(v[B+I]);Q=w.join("")}return iA(s),Q},toWireType(s,r){r instanceof ArrayBuffer&&(r=new Uint8Array(r));var B,Q=typeof r=="string";Q||ArrayBuffer.isView(r)&&r.BYTES_PER_ELEMENT==1||f("Cannot pass non-string to std::string"),g&&Q?B=cg(r):B=r.length;var a=ee(4+B+1),I=a+4;if(F[a>>2]=B,Q)if(g)hg(r,I,B+1);else for(var E=0;E<B;++E){var n=r.charCodeAt(E);n>255&&(iA(a),f("String has UTF-16 code units that do not fit in 8 bits")),v[I+E]=n}else v.set(r,I);return s!==null&&s.push(iA,a),a},argPackAdvance:$,readValueFromPointer:uA,destructorFunction(s){iA(s)}})},xe=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,dg=(A,e)=>{for(var g=A>>1,s=g+e/2,r=g;!(r>=s)&&m[r];)++r;if(r-g>16&&xe)return xe.decode(m.subarray(g,r));for(var B="",Q=g;!(Q>=s);++Q){var a=m[Q];if(a==0)break;B+=String.fromCharCode(a)}return B},fg=(A,e,g)=>{if(g??=2147483647,g<2)return 0;g-=2;for(var s=e,r=g<A.length*2?g/2:A.length,B=0;B<r;++B){var Q=A.charCodeAt(B);G[e>>1]=Q,e+=2}return G[e>>1]=0,e-s},Dg=A=>A.length*2,wg=(A,e)=>{for(var g="",s=0;!(s>=e/4);s++){var r=QA[A+s*4>>2];if(!r)break;g+=String.fromCodePoint(r)}return g},pg=(A,e,g)=>{if(g??=2147483647,g<4)return 0;for(var s=e,r=s+g-4,B=0;B<A.length;++B){var Q=A.codePointAt(B);if(Q>65535&&B++,QA[e>>2]=Q,e+=4,e+4>r)break}return QA[e>>2]=0,e-s},yg=A=>{for(var e=0,g=0;g<A.length;++g){var s=A.codePointAt(g);s>65535&&g++,e+=4}return e},mg=(A,e,g)=>{g=S(g);var s,r,B,Q;e===2?(s=dg,r=fg,Q=Dg,B=a=>m[a>>1]):e===4&&(s=wg,r=pg,Q=yg,B=a=>F[a>>2]),q(A,{name:g,fromWireType:a=>{for(var I=F[a>>2],E,n=a+4,u=0;u<=I;++u){var w=a+4+u*e;if(u==I||B(w)==0){var x=w-n,P=s(n,x);E===void 0?E=P:(E+="\0",E+=P),n=w+e}}return iA(a),E},toWireType:(a,I)=>{typeof I!="string"&&f(`Cannot pass non-string to C++ string type ${g}`);var E=Q(I),n=ee(4+E+e);return F[n>>2]=E/e,r(I,n+4,E+e),a!==null&&a.push(iA,n),n},argPackAdvance:$,readValueFromPointer:uA,destructorFunction(a){iA(a)}})},Gg=(A,e,g,s,r,B)=>{vA[A]={name:S(e),rawConstructor:b(g,s),rawDestructor:b(r,B),fields:[]}},Fg=(A,e,g,s,r,B,Q,a,I,E)=>{vA[A].fields.push({fieldName:S(e),getterReturnType:g,getter:b(s,r),getterContext:B,setterArgumentType:Q,setter:b(a,I),setterContext:E})},Ng=(A,e)=>{e=S(e),q(A,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(g,s)=>{}})},Je=0,vg=()=>{ZA=!1,Je=0},$A=(A,e)=>{var g=oA[A];return g===void 0&&f(`${e} has unknown type ${ve(A)}`),g},Te=(A,e,g)=>{var s=[],r=A.toWireType(s,g);return s.length&&(F[e>>2]=k.toHandle(s)),r},kg=(A,e,g)=>(A=k.toValue(A),e=$A(e,"emval::as"),Te(e,g,A)),xA=[],Rg=(A,e,g,s)=>(A=xA[A],e=k.toValue(e),A(null,e,g,s)),Yg={},Ae=A=>{var e=Yg[A];return e===void 0?S(A):e},Sg=(A,e,g,s,r)=>(A=xA[A],e=k.toValue(e),g=Ae(g),A(e,e[g],s,r)),_e=()=>globalThis,Mg=A=>A===0?k.toHandle(_e()):(A=Ae(A),k.toHandle(_e()[A])),Ug=A=>{var e=xA.length;return xA.push(A),e},bg=(A,e)=>{for(var g=new Array(A),s=0;s<A;++s)g[s]=$A(F[e+s*4>>2],`parameter ${s}`);return g},xg=(A,e,g)=>{var s=bg(A,e),r=s.shift();A--;var B=`return function (obj, func, destructorsRef, args) {
|
|
12
|
+
`,Q=0,a=[];g===0&&a.push("obj");for(var I=["retType"],E=[r],n=0;n<A;++n)a.push(`arg${n}`),I.push(`argType${n}`),E.push(s[n]),B+=` var arg${n} = argType${n}.readValueFromPointer(args${Q?"+"+Q:""});
|
|
13
|
+
`,Q+=s[n].argPackAdvance;var u=g===1?"new func":"func.call";B+=` var rv = ${u}(${a.join(", ")});
|
|
14
|
+
`,r.isVoid||(I.push("emval_returnValue"),E.push(Te),B+=` return emval_returnValue(retType, destructorsRef, rv);
|
|
15
15
|
`),B+=`};
|
|
16
|
-
`;var w=new Function(...I,B)(...E),x=`methodCaller<(${
|
|
16
|
+
`;var w=new Function(...I,B)(...E),x=`methodCaller<(${s.map(P=>P.name).join(", ")}) => ${r.name}>`;return Ug(zA(x,w))},Jg=(A,e)=>(A=k.toValue(A),e=k.toValue(e),k.toHandle(A[e])),Tg=A=>{A>9&&(CA[A+1]+=1)},_g=A=>k.toHandle(Ae(A)),Lg=()=>k.toHandle({}),Pg=A=>{var e=k.toValue(A);kA(e),qA(A)},Hg=(A,e,g)=>{A=k.toValue(A),e=k.toValue(e),g=k.toValue(g),A[e]=g},Wg=(A,e)=>{A=$A(A,"_emval_take_value");var g=A.readValueFromPointer(e);return k.toHandle(g)},pA={},Le=A=>{if(A instanceof ne||A=="unwind")return M;d(1,A)},Pe=()=>ZA||Je>0,He=A=>{M=A,Pe()||(i.onExit?.(A),X=!0),d(A,new ne(A))},Zg=(A,e)=>{M=A,He(A)},Og=Zg,Kg=()=>{if(!Pe())try{Og(M)}catch(A){Le(A)}},Xg=A=>{if(!X)try{A(),Kg()}catch(e){Le(e)}},Vg=()=>performance.now(),zg=(A,e)=>{if(pA[A]&&(clearTimeout(pA[A].id),delete pA[A]),!e)return 0;var g=setTimeout(()=>{delete pA[A],Xg(()=>Ze(A,Vg()))},e);return pA[A]={id:g,timeout_ms:e},0},jg=()=>2147483648,qg=(A,e)=>Math.ceil(A/e)*e,$g=A=>{var e=j.buffer,g=(A-e.byteLength+65535)/65536|0;try{return j.grow(g),Ee(),1}catch{}},Ai=A=>{var e=v.length;A>>>=0;var g=jg();if(A>g)return!1;for(var s=1;s<=4;s*=2){var r=e*(1+.2/s);r=Math.min(r,A+100663296);var B=Math.min(g,qg(Math.max(A,r),65536)),Q=$g(B);if(Q)return!0}return!1},ei=[null,[],[]],ti=(A,e)=>{var g=ei[A];e===0||e===10?((A===1?J:_)(be(g)),g.length=0):g.push(e)},gi=(A,e,g,s)=>{for(var r=0,B=0;B<g;B++){var Q=F[e>>2],a=F[e+4>>2];e+=8;for(var I=0;I<a;I++)ti(A,v[Q+I]);r+=a}return F[s>>2]=r,0},gA=new Uint8Array(123),BA=25;BA>=0;--BA)gA[48+BA]=52+BA,gA[65+BA]=BA,gA[97+BA]=26+BA;gA[43]=62,gA[47]=63,_t(),$t(),i.noExitRuntime&&(ZA=i.noExitRuntime),i.print&&(J=i.print),i.printErr&&(_=i.printErr),i.wasmBinary&&(W=i.wasmBinary),i.arguments&&(h=i.arguments),i.thisProgram&&(D=i.thisProgram);var We,ee,iA,Ze,L,Oe,Ke,Xe,Ve,ze,je,qe;function ii(A){We=A.da,ee=A.ea,iA=A.fa,Ze=A.ha,L=A.ia,Oe=A.ja,Ke=A.ka,Xe=A.la,Ve=A.ma,ze=A.na,je=A.oa,qe=A.pa}var si={m:yt,w:mt,a:Gt,f:Ft,B:Nt,o:vt,h:kt,H:Rt,W:St,t:Ut,N:bt,aa:eg,Z:gg,d:ig,L:rg,s:ag,u:Ig,i:og,c:Cg,$:Eg,M:ug,n:mg,Y:Gg,X:Fg,O:Ng,F:vg,S:kg,q:Rg,R:Sg,_:qA,V:Mg,p:xg,U:Jg,K:Tg,T:_g,Q:Lg,v:Pg,P:Hg,j:Wg,G:zg,I:Ai,J:gi,z:ni,A:Ei,y:hi,x:li,g:ri,e:Qi,r:Ci,k:Ii,b:ai,C:oi,l:ci,D:Bi,E:He},hA=await ft();function ri(A,e){var g=K();try{return Z(A)(e)}catch(s){if(O(g),s!==s+0)throw s;L(1,0)}}function Bi(A,e,g,s,r,B,Q,a,I,E,n){var u=K();try{Z(A)(e,g,s,r,B,Q,a,I,E,n)}catch(w){if(O(u),w!==w+0)throw w;L(1,0)}}function ai(A,e){var g=K();try{Z(A)(e)}catch(s){if(O(g),s!==s+0)throw s;L(1,0)}}function Qi(A,e,g){var s=K();try{return Z(A)(e,g)}catch(r){if(O(s),r!==r+0)throw r;L(1,0)}}function Ii(A){var e=K();try{Z(A)()}catch(g){if(O(e),g!==g+0)throw g;L(1,0)}}function oi(A,e,g){var s=K();try{Z(A)(e,g)}catch(r){if(O(s),r!==r+0)throw r;L(1,0)}}function Ci(A,e,g,s){var r=K();try{return Z(A)(e,g,s)}catch(B){if(O(r),B!==B+0)throw B;L(1,0)}}function Ei(A,e,g,s,r){var B=K();try{return Z(A)(e,g,s,r)}catch(Q){if(O(B),Q!==Q+0)throw Q;L(1,0)}}function ni(A,e,g,s){var r=K();try{return Z(A)(e,g,s)}catch(B){if(O(r),B!==B+0)throw B;L(1,0)}}function hi(A,e,g,s,r,B){var Q=K();try{return Z(A)(e,g,s,r,B)}catch(a){if(O(Q),a!==a+0)throw a;L(1,0)}}function ci(A,e,g,s){var r=K();try{Z(A)(e,g,s)}catch(B){if(O(r),B!==B+0)throw B;L(1,0)}}function li(A){var e=K();try{return Z(A)()}catch(g){if(O(e),g!==g+0)throw g;L(1,0)}}function te(){if(IA>0){lA=te;return}if(Qt(),IA>0){lA=te;return}function A(){i.calledRun=!0,!X&&(It(),V?.(i),i.onRuntimeInitialized?.(),ot())}i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),A()},1)):A()}function ui(){if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.shift()()}return ui(),te(),Ce?t=i:t=new Promise((A,e)=>{V=A,z=e}),t}),tt=di;var TA=tt(),_A=navigator.gpu?.requestAdapter({powerPreference:"high-performance"}),ie=_A?.then(async R=>{if(!R)return null;let t=R.limits,i=R.features,C=await R.requestDevice({requiredFeatures:i.has("timestamp-query")?["timestamp-query"]:[],requiredLimits:{maxBufferSize:t.maxBufferSize,maxStorageBufferBindingSize:t.maxStorageBufferBindingSize,maxStorageBuffersPerShaderStage:t.maxStorageBuffersPerShaderStage}});return C.lost.then(o=>{if(o.reason!=="destroyed")throw new Error(`WebGPU device was lost with info: ${o.message}`)}),C});if(!navigator.gpu)console.warn("WebGPU not supported, you will be unable to create <dgs-player>");else if(!_A||!ie)throw new Error("WebGPU supported, but failed to create adapter or device!");import{mat4 as Bt,vec3 as se}from"gl-matrix";var yA=class{constructor(t,i){let C=t.means.byteLength+t.velocities.byteLength+t.length*Uint32Array.BYTES_PER_ELEMENT,o;try{o=new SharedArrayBuffer(C)}catch{throw new Error(`SharedArrayBuffer is not available in this environment.
|
|
17
17
|
|
|
18
18
|
This commonly means either:
|
|
19
19
|
\u2022 Cross-origin isolation is not enabled.
|
|
20
|
-
\u2022 You are on an unsupported browser`)}let h=0;new Float32Array(o,h,t.means.length).set(t.means);let d=h+t.means.byteLength;new Float32Array(o,d,t.velocities.length).set(t.velocities);let y=d+t.velocities.byteLength;this.#
|
|
20
|
+
\u2022 You are on an unsupported browser`)}let h=0;new Float32Array(o,h,t.means.length).set(t.means);let d=h+t.means.byteLength;new Float32Array(o,d,t.velocities.length).set(t.velocities);let y=d+t.velocities.byteLength;this.#B=new Worker(new URL("./workers/sort.js",import.meta.url),{type:"module"}),this.#B.onmessage=l=>{if(l.data.type!=="sorted")return;let N=new Uint32Array(o,t.means.byteLength+t.velocities.byteLength,l.data.count);i(N,l.data.duration)},this.#B.postMessage({type:"init",count:t.length,dynamic:!!t.dynamic,sab:o,meansOffset:h,velocitiesOffset:d,indicesOffset:y})}sort(t,i,C){this.#B.postMessage({type:"sort",view:t.slice(),proj:i.slice(),time:C})}#B=null};var gt=`/* gaussian_preprocess.wgsl
|
|
21
21
|
*
|
|
22
22
|
* performs gaussian culling + preprocessing
|
|
23
23
|
*/
|
|
@@ -402,7 +402,7 @@ fn fs(in: VertexOutput) -> @location(0) vec4f
|
|
|
402
402
|
return vec4f(in.color.rgb * b, b);
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
|
-
`;var
|
|
405
|
+
`;var st=` struct VSOut {
|
|
406
406
|
@builtin(position) pos : vec4<f32>,
|
|
407
407
|
@location(0) uv : vec2<f32>,
|
|
408
408
|
};
|
|
@@ -428,10 +428,10 @@ fn fs(in: VertexOutput) -> @location(0) vec4f
|
|
|
428
428
|
let c = textureSample(colorTex, colorSampler, in.uv);
|
|
429
429
|
// output premultiplied-like color: rgb in src, alpha = src.a
|
|
430
430
|
return vec4<f32>(c.rgb, c.a);
|
|
431
|
-
}`;var H=Float32Array.BYTES_PER_ELEMENT,eA=Uint32Array.BYTES_PER_ELEMENT,st=64,mA=4,pi=.001,yi=.001,mi=0,se=class{constructor(t){this.#t=t}async initialize(){this.#s=await TA,this.#A=await ie,this.#o=await _A,this.#d=this.#G(),this.#c=this.#p(),this.#f=this.#F(),this.#D=this.#v(),this.#u=this.#k(),this.#h=this.#N(),this.#Q=this.#R(),this.#o.features.has("timestamp-query")&&(this.#g=this.#y())}resize(){this.#c=this.#p()}setGaussians(t){this.#i=this.#a?this.#s.combine(t,this.#a):t,this.#e=this.#Y(this.#i);let i=new yA(this.#i,(C,o)=>{this.#C=!1,this.#E==i&&(this.#b(C),this.#r=!0,this.#l.lastSortTime=o)});this.#r=!1,this.#n=null,this.#E=i}setScene(t){this.#a=t}setPointSize(t){this.#w=t}draw(t,i,C,o={},h=!1){if(!this.#i||(this.#g==null&&(h=!1),!this.#C&&this.#U(t,C)&&(this.#C=!0,this.#E.sort(t,i,C),this.#n={view:t.slice(),time:C}),!this.#r))return;let D=performance.now();var d=0;this.#B&&(d=D-this.#B),this.#B=D;let p=re.transformMat4(re.create(),re.fromValues(0,0,0),Bt.invert(Bt.create(),t)),y=[i[0]*(this.#t.width/2),i[5]*(this.#t.height/2)],l=[this.#t.width,this.#t.height];this.#m(t,i,p,y,l,C);let N=this.#M(),J=null,_=null;h&&(J=this.#A.createBuffer({size:mA*8,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC}),_=this.#A.createBuffer({size:mA*8,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}));let W=this.#A.createCommandEncoder(),X=W.beginComputePass({timestampWrites:h?{querySet:this.#g.querySet,beginningOfPassWriteIndex:0,endOfPassWriteIndex:1}:void 0});X.setPipeline(this.#f),X.setBindGroup(0,N.preprocess),this.#I>0&&X.dispatchWorkgroups(Math.ceil(this.#I/st)),X.end();let M=W.beginRenderPass({label:"main",colorAttachments:[{view:this.#c.view,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],timestampWrites:h?{querySet:this.#g.querySet,beginningOfPassWriteIndex:2,endOfPassWriteIndex:3}:void 0});M.setPipeline(this.#D),M.setVertexBuffer(0,this.#h.vertex),M.setIndexBuffer(this.#h.index,"uint16"),M.setBindGroup(0,N.rasterize),this.#I>0&&M.drawIndexed(6,this.#I),M.end();let V=o.backgroundColor??[0,0,0],z=W.beginRenderPass({label:"composite",colorAttachments:[{view:this.#d.getCurrentTexture().createView(),clearValue:{r:V[0],g:V[1],b:V[2],a:1},loadOp:"clear",storeOp:"store"}]});z.setPipeline(this.#u),z.setBindGroup(0,N.composite),z.draw(3),z.end(),h&&(W.resolveQuerySet(this.#g.querySet,0,mA,J,0),W.copyBufferToBuffer(J,0,_,0,mA*8)),this.#A.queue.submit([W.finish()]),h&&_.mapAsync(GPUMapMode.READ).then(()=>{let j=_.getMappedRange(),U=new BigUint64Array(j);if(this.#g.accumFrames++,this.#g.accumTime+=d,this.#g.accumPreprocessTime+=Number(U[1]-U[0]),this.#g.accumRasterTime+=Number(U[3]-U[2]),_.unmap(),this.#g.accumTime>=1e3){let v=this.#g.accumPreprocessTime/1e6/this.#g.accumFrames,G=this.#g.accumRasterTime/1e6/this.#g.accumFrames,m=v+G;this.#l.preprocessTime=v,this.#l.rasterTime=G,this.#l.totalTime=m,this.#g.accumFrames=0,this.#g.accumTime=0,this.#g.accumPreprocessTime=0,this.#g.accumRasterTime=0}})}get numGaussians(){return this.#i?.length??0}get numGaussiansVisible(){return this.#I??0}get performanceProfile(){return this.#l}#s=null;#A=null;#o=null;#t=null;#d=null;#c=null;#f=null;#D=null;#u=null;#g=null;#a=null;#i=null;#w=null;#e=null;#h=null;#Q=null;#I=0;#E=null;#r=!1;#C=!1;#n=null;#B=null;#l={};#G(){let t=this.#t.getContext("webgpu");return t.configure({device:this.#A,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:"opaque"}),t}#p(){let t=this.#t.width|0,i=this.#t.height|0;if(t==0||i==0)return;let C=navigator.gpu.getPreferredCanvasFormat(),o=this.#A.createTexture({size:[t,i,1],format:C,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING});return{tex:o,view:o.createView(),sampler:this.#A.createSampler({magFilter:"linear",minFilter:"linear"})}}#F(){let t=this.#A.createShaderModule({label:"gaussian preprocess",code:gt});return this.#A.createComputePipeline({label:"gaussian preprocess",layout:"auto",compute:{module:t,entryPoint:"preprocess",constants:{WORKGROUP_SIZE:st}}})}#v(){let t=this.#A.createShaderModule({label:"gaussian rasterize",code:it});return this.#A.createRenderPipeline({label:"gaussian",layout:"auto",vertex:{module:t,entryPoint:"vs",buffers:[{stepMode:"vertex",arrayStride:2*H,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:t,entryPoint:"fs",targets:[{format:navigator.gpu.getPreferredCanvasFormat(),blend:{alpha:{srcFactor:"one-minus-dst-alpha",dstFactor:"one",operation:"add"},color:{srcFactor:"one-minus-dst-alpha",dstFactor:"one",operation:"add"}}}]},primitive:{topology:"triangle-list",cullMode:"none"}})}#k(){let t=this.#A.createShaderModule({label:"composite",code:rt});return this.#A.createRenderPipeline({label:"composite",layout:"auto",vertex:{module:t,entryPoint:"vs"},fragment:{module:t,entryPoint:"fs",targets:[{format:navigator.gpu.getPreferredCanvasFormat(),blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-list",cullMode:"none"}})}#y(){return{querySet:this.#A.createQuerySet({type:"timestamp",count:mA}),accumFrames:0,accumTime:0,accumRasterTime:0,accumPreprocessTime:0}}#N(){let t=new Float32Array([-2,-2,2,-2,2,2,-2,2]),i=this.#A.createBuffer({label:"quad vertices",size:t.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});this.#A.queue.writeBuffer(i,0,t);let C=new Uint16Array([0,1,2,0,2,3]),o=this.#A.createBuffer({label:"quad indices",size:C.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});return this.#A.queue.writeBuffer(o,0,C),{vertex:i,index:o}}#R(){let t=0;return t+=16*H,t+=16*H,t+=3*H,t+=1*H,t+=2*H,t+=2*H,t+=1*H,t+=1*eA,t+=1*eA,t+=1*eA,t+=2*H,t+=2*H,t+=2*H,t+=2*eA,this.#A.createBuffer({label:"params",size:t,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST})}#Y(t){let i={};return[{name:"means",alignment:4*H},{name:"scales",alignment:eA},{name:"rotations",alignment:eA},{name:"opacities",alignment:eA},{name:"colors",alignment:eA},{name:"shs",alignment:eA},{name:"velocities",alignment:4*H}].forEach(o=>{i[o.name]=this.#S(this.#e?.[o.name],{label:o.name,size:this.#J(t[o.name].byteLength,o.alignment),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.#x(i[o.name],t[o.name])}),i.sortedIndices=this.#S(this.#e?.sortedIndices,{label:"sorted indices",size:Math.max(t.length,1)*eA,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.STORAGE}),i.rendered=this.#S(this.#e?.rendered,{label:"rendered gaussians",size:Math.max(t.length,1)*12*H,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.INDIRECT}),i}#m(t,i,C,o,h,D){let d=new ArrayBuffer(this.#Q.size),p=new Float32Array(d),y=new Uint32Array(d),l=0;p.set(t,l),l+=16,p.set(i,l),l+=16,p.set(C,l),l+=3,p.set([D],l),l+=1,p.set(o,l),l+=2,p.set(h,l),l+=2,p.set([this.#w??0],l),l+=1,y.set([this.#I],l),l+=1,y.set([Number(this.#i.dynamic)],l),l+=1,y.set([this.#i.shDegree],l),l+=1,p.set([this.#i.scaleMin,this.#i.scaleMax],l),l+=2,p.set([this.#i.colorMin,this.#i.colorMax],l),l+=2,p.set([this.#i.shMin,this.#i.shMax],l),l+=2,this.#A.queue.writeBuffer(this.#Q,0,d)}#M(){let t=this.#A.createBindGroup({label:"gaussian preprocess",layout:this.#f.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.#Q}},{binding:1,resource:{buffer:this.#e.means}},{binding:2,resource:{buffer:this.#e.scales}},{binding:3,resource:{buffer:this.#e.rotations}},{binding:4,resource:{buffer:this.#e.opacities}},{binding:5,resource:{buffer:this.#e.colors}},{binding:6,resource:{buffer:this.#e.shs}},{binding:7,resource:{buffer:this.#e.velocities}},{binding:8,resource:{buffer:this.#e.sortedIndices}},{binding:9,resource:{buffer:this.#e.rendered}}]}),i=this.#A.createBindGroup({label:"gaussian rasterize",layout:this.#D.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.#Q}},{binding:1,resource:{buffer:this.#e.rendered}}]}),C=this.#A.createBindGroup({label:"composite",layout:this.#u.getBindGroupLayout(0),entries:[{binding:0,resource:this.#c.view},{binding:1,resource:this.#c.sampler}]});return{preprocess:t,rasterize:i,composite:C}}#U(t,i){if(this.#n==null)return!0;let C=this.#n.view,o=[t[2],t[6],t[10]],h=[t[12],t[13],t[14]],D=[C[2],C[6],C[10]],d=[C[12],C[13],C[14]],p=1-(o[0]*D[0]+o[1]*D[1]+o[2]*D[2]),y=Math.pow(h[0]-d[0],2)+Math.pow(h[1]-d[1],2)+Math.pow(h[2]-d[2],2),l=Math.abs(i-this.#n.time);return p>pi||y>yi||l>mi}#b(t){this.#I=t.length,this.#A.queue.writeBuffer(this.#e.sortedIndices,0,t)}#S(t,i){return t==null||t.size<i.size?(t?.destroy(),this.#A.createBuffer(i)):t}#x(t,i){let C,o,h;i instanceof ArrayBuffer?(C=i,o=0,h=i.byteLength):(C=i.buffer,o=i.byteOffset,h=i.byteLength);let D=h&-4;D>0&&this.#A.queue.writeBuffer(t,0,C,o,D);let d=h-D;if(d>0){let p=new Uint8Array(4);p.set(new Uint8Array(C,o+D,d)),this.#A.queue.writeBuffer(t,D,p,0,4)}}#J(t,i){return t==0?i:t+i-1&~(i-1)}},at=se;import{mat4 as Y,vec3 as c}from"gl-matrix";var GA=class R{constructor(){if(new.target===R)throw new Error("Cannot instantiate abstract class Camera directly");this.keysPressed=new Set,this.mouseDown=!1,this.mouseX=0,this.mouseY=0}getViewMatrix(){return null}getProjMatrix(t){let i=this.fov||80;return Y.perspective(Y.create(),i*Math.PI/180,t,.01,100)}getParams(){return{}}onMouseDown(t){t.button===0&&(this.mouseDown=!0)}onMouseUp(t){t.button===0&&(this.mouseDown=!1)}onMouseMove(t){this.mouseX=t.clientX,this.mouseY=t.clientY}onDoubleClick(t){}onScroll(t){}onTouchStart(t){t.touches.length===1&&(this.mouseDown=!0),this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY}onTouchEnd(t){t.touches.length===1&&(this.mouseDown=!1)}onTouchMove(t){this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY}onKeyDown(t){this.keysPressed.add(t.code)}onKeyUp(t){this.keysPressed.delete(t.code)}update(t){}_editingSomething(){let t=document.activeElement;return t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable)}attachToCanvas(t){this._onMouseDown=i=>this.onMouseDown(i),this._onMouseUp=i=>this.onMouseUp(i),this._onMouseMove=i=>this.onMouseMove(i),this._onMouseLeave=i=>this.onMouseUp(i),this._onDoubleClick=i=>this.onDoubleClick(i),this._onWheel=i=>{this.onScroll!==R.prototype.onScroll&&i.preventDefault(),this.onScroll(i.deltaY)},this._onTouchStart=i=>{this.onTouchStart!=R.prototype.onTouchStart&&i.preventDefault(),this.onTouchStart(i)},this._onTouchMove=i=>{this.onTouchMove!=R.prototype.onTouchMove&&i.preventDefault(),this.onTouchMove(i)},this._onTouchEnd=i=>{this.onTouchEnd!=R.prototype.onTouchEnd&&i.preventDefault(),this.onTouchEnd(i)},this._onKeyDown=i=>{this._editingSomething()||(i.code==="Space"&&i.preventDefault(),this.onKeyDown(i))},this._onKeyUp=i=>{this._editingSomething()||(i.code==="Space"&&i.preventDefault(),this.onKeyUp(i))},t.addEventListener("mousedown",this._onMouseDown),t.addEventListener("mouseup",this._onMouseUp),t.addEventListener("mousemove",this._onMouseMove),t.addEventListener("mouseleave",this._onMouseLeave),t.addEventListener("dblclick",this._onDoubleClick),t.addEventListener("wheel",this._onWheel),t.addEventListener("touchstart",this._onTouchStart),t.addEventListener("touchmove",this._onTouchMove),t.addEventListener("touchend",this._onTouchEnd),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this._canvas=t}detachFromCanvas(){this._canvas&&(this._canvas.removeEventListener("mousedown",this._onMouseDown),this._canvas.removeEventListener("mouseup",this._onMouseUp),this._canvas.removeEventListener("mousemove",this._onMouseMove),this._canvas.removeEventListener("mouseleave",this._onMouseLeave),this._canvas.removeEventListener("dblclick",this._onDoubleClick),this._canvas.removeEventListener("wheel",this._onWheel),this._canvas.removeEventListener("touchstart",this._onTouchStart),this._canvas.removeEventListener("touchmove",this._onTouchMove),this._canvas.removeEventListener("touchend",this._onTouchEnd),window.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("keyup",this._onKeyUp),this._canvas=null)}},cA=class extends GA{constructor(t={}){super(),this.fov=t.fov||80,this.sens=t.sens||.003,this.panSens=t.panSens||.0025,this.scrollSens=t.scrollSens||.0025,this.keyMoveSpeed=t.keyMoveSpeed||.02,this.minRadius=t.minRadius||.5,this.maxRadius=t.maxRadius||3,this.targetRadius=t.radius||(this.minRadius+this.maxRadius)/2,this.radius=this.targetRadius,this.targetTheta=t.theta||0,this.theta=this.targetTheta,this.targetPhi=t.phi||0,this.phi=this.targetPhi,this.targetPos=c.fromValues(t.targetX||0,t.targetY||0,t.targetZ||0),this.pos=this.targetPos,this.mouseX=t.mouseX||0,this.mouseY=t.mouseY||0,this.rotating=t.startRotating||!1,this.dragging=t.startRotating||!1,this.pinchStartDistance=0}getViewMatrix(){let t=c.fromValues(this.pos[0]+this.radius*Math.sin(this.theta)*Math.cos(this.phi),this.pos[1]+this.radius*Math.sin(this.phi),this.pos[2]+this.radius*Math.cos(this.theta)*Math.cos(this.phi));return Y.lookAt(Y.create(),t,this.pos,c.fromValues(0,1,0))}getParams(){return{fov:this.fov,sens:this.sens,panSens:this.panSens,scrollSens:this.scrollSens,radius:this.radius,minRadius:this.minRadius,maxRadius:this.maxRadius,theta:this.theta,phi:this.phi,targetX:this.pos[0],targetY:this.pos[1],targetZ:this.pos[2],mouseX:this.mouseX,mouseY:this.mouseY,startRotating:this.rotating||this.dragging}}onMouseDown(t){if(t.button===0)this.rotating=!0;else return;this.mouseX=t.clientX,this.mouseY=t.clientY}onMouseUp(t){this.rotating=!1}onDoubleClick(t){this.targetRadius/=2}onMouseMove(t){if(this.rotating){let i=t.clientX-this.mouseX,C=t.clientY-this.mouseY;this.targetTheta+=i*this.sens,this.targetPhi-=C*this.sens,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2+.01),this.targetPhi=Math.min(this.targetPhi,Math.PI/2-.01)}this.mouseX=t.clientX,this.mouseY=t.clientY}onScroll(t){this.targetRadius+=t*this.scrollSens,this.targetRadius=Math.max(this.targetRadius,this.minRadius),this.targetRadius=Math.min(this.targetRadius,this.maxRadius)}onTouchStart(t){if(t.touches.length===1)this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY,this.dragging=!0;else if(t.touches.length===2){this.dragging=!1;let i=t.touches[0],C=t.touches[1];this.pinchStartDistance=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY)}}onTouchMove(t){if(t.touches.length===1&&this.dragging){let i=t.touches[0],C=i.clientX-this.mouseX,o=i.clientY-this.mouseY;this.targetTheta+=C*this.sens,this.targetPhi-=o*this.sens,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2),this.targetPhi=Math.min(this.targetPhi,Math.PI/2),this.mouseX=i.clientX,this.mouseY=i.clientY}else if(t.touches.length===2){let i=t.touches[0],C=t.touches[1],o=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY),h=this.pinchStartDistance-o;this.onScroll(h),this.pinchStartDistance=o}}onTouchEnd(t){t.touches.length===0?this.dragging=!1:t.touches.length===1&&(this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY)}update(t){super.update(t);let i=1-Math.pow(.99,t);this.pos=c.add(c.create(),this.pos,c.scale(c.create(),c.sub(c.create(),this.targetPos,this.pos),i)),this.radius+=(this.targetRadius-this.radius)*i,this.theta+=(this.targetTheta-this.theta)*i,this.phi+=(this.targetPhi-this.phi)*i,this.keysPressed.size>0&&this.handleKeyboardMovement(t)}handleKeyboardMovement(t){let i=this.keyMoveSpeed*(t/16.67),C=Math.cos(this.targetTheta),o=-Math.sin(this.targetTheta),h=-Math.sin(this.targetTheta),D=-Math.cos(this.targetTheta),d=0,p=0,y=0;this.keysPressed.has("KeyW")&&(d+=h,y+=D),this.keysPressed.has("KeyS")&&(d-=h,y-=D),this.keysPressed.has("KeyA")&&(d+=C,y+=o),this.keysPressed.has("KeyD")&&(d-=C,y-=o),this.keysPressed.has("Space")&&(p-=1),this.keysPressed.has("ShiftLeft")&&(p+=1),this.targetPos=c.add(c.create(),this.targetPos,c.scale(c.create(),c.normalize(c.create(),c.fromValues(d,p,y)),i))}},LA=class extends GA{constructor(t={}){super(),this.fov=t.fov||80,this.baseTheta=t.baseTheta||Math.PI/4,this.basePhi=t.basePhi||Math.PI/4,this.targetTheta=t.theta||this.baseTheta,this.targetPhi=t.phi||this.basePhi,this.targetRadius=t.radius||1.5,this.theta=this.targetTheta,this.phi=this.targetPhi,this.radius=this.targetRadius,this.minRadius=t.minRadius||.5,this.maxRadius=t.maxRadius||3,this.targetX=t.targetX||0,this.targetY=t.targetY||0,this.targetZ=t.targetZ||0,this.sens=t.sens||.003,this.scrollSens=t.scrollSens||.0025,this.resistance=t.resistance||.25,this.deadZone=t.deadZone||.1,this.snapSmoothness=t.snapSmoothness||.9925,this.valueSmoothness=t.valueSmoothness||.9925,this.radiusSmoothness=t.radiusSmoothness||.99,this.mouseX=t.mouseX||0,this.mouseY=t.mouseY||0,this.rotating=t.startRotating||!1,this.pinchStartDistance=0,this.canvas=null}attachToCanvas(t){super.attachToCanvas(t),this.canvas=t}getViewMatrix(){let t=this.targetX+this.radius*Math.sin(this.theta)*Math.cos(this.phi),i=this.targetY+this.radius*Math.sin(this.phi),C=this.targetZ+this.radius*Math.cos(this.theta)*Math.cos(this.phi);return Y.lookAt(Y.create(),c.fromValues(t,i,C),c.fromValues(this.targetX,this.targetY,this.targetZ),c.fromValues(0,1,0))}onMouseDown(t){t.button===0&&(this.rotating=!0,this.mouseX=t.clientX,this.mouseY=t.clientY,this.targetTheta=this.theta,this.targetPhi=this.phi,this.targetRadius=this.radius)}onMouseUp(t){t.button===0&&(this.rotating=!1)}onMouseMove(t){if(!this.rotating){this.mouseX=t.clientX,this.mouseY=t.clientY;return}let i=t.clientX-this.mouseX,C=t.clientY-this.mouseY,o=this.targetTheta-this.baseTheta,h=this.targetPhi-this.basePhi,D=this.#s(o,h,this.resistance);this.targetTheta+=i*this.sens*D,this.targetPhi-=C*this.sens*D,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2+.01),this.targetPhi=Math.min(this.targetPhi,Math.PI/2-.01),this.mouseX=t.clientX,this.mouseY=t.clientY}onScroll(t){this.targetRadius+=t*this.scrollSens,this.targetRadius=Math.max(this.targetRadius,this.minRadius),this.targetRadius=Math.min(this.targetRadius,this.maxRadius)}onTouchStart(t){if(t.touches.length===1){let i=t.touches[0];this.rotating=!0,this.mouseX=i.clientX,this.mouseY=i.clientY}else if(t.touches.length===2){this.rotating=!1;let i=t.touches[0],C=t.touches[1];this.pinchStartDistance=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY)}}onTouchMove(t){if(t.touches.length===1&&this.rotating){let i=t.touches[0],C=i.clientX-this.mouseX,o=i.clientY-this.mouseY,h=this.targetTheta-this.baseTheta,D=this.targetPhi-this.basePhi,d=this.#s(h,D,this.resistance);this.targetTheta+=C*this.sens*d,this.targetPhi-=o*this.sens*d,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2+.01),this.targetPhi=Math.min(this.targetPhi,Math.PI/2-.01),this.mouseX=i.clientX,this.mouseY=i.clientY}else if(t.touches.length===2){let i=t.touches[0],C=t.touches[1],o=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY),h=this.pinchStartDistance-o;this.onScroll(h),this.pinchStartDistance=o}}onTouchEnd(t){if(t.touches.length===0)this.rotating=!1;else if(t.touches.length===1){let i=t.touches[0];this.mouseX=i.clientX,this.mouseY=i.clientY}}update(t){super.update(t);let i=1-Math.pow(this.snapSmoothness,t),C=1-Math.pow(this.valueSmoothness,t);if(this.rotating)this.theta=this.targetTheta,this.phi=this.targetPhi,this.radius=this.targetRadius;else{let o=this.#A(this.targetTheta,this.targetPhi,this.baseTheta,this.basePhi,this.deadZone);this.targetTheta+=(o.theta-this.targetTheta)*i,this.targetPhi+=(o.phi-this.targetPhi)*i,this.theta+=(this.targetTheta-this.theta)*C,this.phi+=(this.targetPhi-this.phi)*C,this.radius+=(this.targetRadius-this.radius)*(1-Math.pow(this.radiusSmoothness,t))}}#s(t,i,C){let h=Math.hypot(t,i)/(1-C);return 1/(1+h*h)}#A(t,i,C,o,h){let D=t-C,d=i-o,p=Math.hypot(D,d);if(p<=h)return{theta:t,phi:i};{let y=h/p;return{theta:C+D*y,phi:o+d*y}}}getParams(){return{fov:this.fov,baseTheta:this.baseTheta,basePhi:this.basePhi,theta:this.theta,phi:this.phi,radius:this.radius,minRadius:this.minRadius,maxRadius:this.maxRadius,targetX:this.targetX,targetY:this.targetY,targetZ:this.targetZ,sens:this.sens,scrollSens:this.scrollSens,resistance:this.resistance,deadZone:this.deadZone,snapSmoothness:this.snapSmoothness,valueSmoothness:this.valueSmoothness,radiusSmoothness:this.radiusSmoothness,startRotating:this.mouseDown,mouseX:this.mouseX,mouseY:this.mouseY}}},PA=class extends GA{constructor(t={}){super(),this.screenPos=t.screenPos||[0,0,1],this.screenTarget=t.screenTarget||[0,0,0],this.screenScale=t.screenScale||1,this.eyePosWorld=t.eyePosWorld||[0,0,1],this.worldToVoxelScale=t.worldToVoxelScale||1,this.screenTransform=Y.invert(Y.create(),Y.lookAt(Y.create(),this.screenPos,this.screenTarget,[0,1,0]))}getViewMatrix(t){return this.#s(t).view}getProjMatrix(t){return this.#s(t).proj}#s(t){var o=t>1?1:t,h=t>1?1/t:1;o*=this.screenScale,h*=this.screenScale;let D=c.transformMat4(c.create(),c.fromValues(-o,-h,0),this.screenTransform),d=c.transformMat4(c.create(),c.fromValues(o,-h,0),this.screenTransform),p=c.transformMat4(c.create(),c.fromValues(-o,h,0),this.screenTransform),y=c.scale(c.create(),this.eyePosWorld,this.worldToVoxelScale);y[1]+=h,y[2]=Math.max(y[2],1e-4);let l=c.transformMat4(c.create(),y,this.screenTransform),N=c.sub(c.create(),d,D),J=c.sub(c.create(),p,D),_=c.sub(c.create(),D,l),W=c.sub(c.create(),d,l),X=c.sub(c.create(),p,l);N=c.normalize(c.create(),N),J=c.normalize(c.create(),J);let M=c.scale(c.create(),c.cross(c.create(),N,J),1),V=-c.dot(_,M),z=c.dot(N,_)*.01/V,j=c.dot(N,W)*.01/V,U=c.dot(J,_)*.01/V,v=c.dot(J,X)*.01/V,G=Y.create();G[0]=2*.01/(j-z),G[4]=0,G[8]=(j+z)/(j-z),G[12]=0,G[1]=0,G[5]=2*.01/(v-U),G[9]=(v+U)/(v-U),G[13]=0,G[2]=0,G[6]=0,G[10]=(100+.01)/(.01-100),G[14]=200*.01/(.01-100),G[3]=0,G[7]=0,G[11]=-1,G[15]=0;let m=Y.create();m[0]=N[0],m[4]=N[1],m[8]=N[2],m[12]=0,m[1]=J[0],m[5]=J[1],m[9]=J[2],m[13]=0,m[2]=M[0],m[6]=M[1],m[10]=M[2],m[14]=0,m[3]=0,m[7]=0,m[11]=0,m[15]=1;let QA=Y.translate(Y.create(),Y.identity(Y.create()),c.scale(c.create(),l,-1));return{view:Y.mul(Y.create(),m,QA),proj:G}}getParams(){return{screenPos:this.screenPos,screenTarget:this.screenTarget,screenScale:this.screenScale,eyePosWorld:this.eyePosWorld,worldToVoxelScale:this.worldToVoxelScale,startRotating:this.mouseDown,mouseX:this.mouseX,mouseY:this.mouseY}}};var Be=class extends HTMLElement{constructor(){super();let t=this.attachShadow({mode:"open"});TA.then(o=>{this.#s=o,this.#R()});let i=document.createElement("div");i.style.position="relative",i.style.width="100%",i.style.height="100%",i.style.overflow="hidden",t.appendChild(i),this.#A=document.createElement("canvas"),Object.assign(this.#A.style,{width:"100%",height:"100%",display:"block"}),i.appendChild(this.#A),this.#C=document.createElement("div"),Object.assign(this.#C.style,{position:"absolute",display:"none",top:"1%",left:"1%",background:"rgba(0,0,0,0.4)",padding:"8px 8px",borderRadius:"8px",backdropFilter:"blur(6px)",pointerEvents:"auto",userSelect:"none"}),i.appendChild(this.#C),this.#n=document.createElement("div"),Object.assign(this.#n.style,{display:"block",color:"white",fontFamily:"monospace",fontSize:"12px",whiteSpace:"pre",marginBottom:"10px"}),this.#C.appendChild(this.#n);let C=document.createElement("div");C.textContent="Show Camera Params \u25BC",Object.assign(C.style,{display:"block",cursor:"pointer",color:"white",fontFamily:"monospace",fontSize:"12px"}),this.#C.appendChild(C),this.#B=document.createElement("pre"),Object.assign(this.#B.style,{display:"none",color:"white",fontFamily:"monospace",fontSize:"12px",whiteSpace:"pre"}),this.#C.appendChild(this.#B),C.addEventListener("click",()=>{this.#B.style.display==="none"?(this.#B.style.display="block",C.textContent="Hide Camera Params \u25B2"):(this.#B.style.display="none",C.textContent="Show Camera Params \u25BC")}),this.#B.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(this.#B.textContent);let o=this.#B.style.color;this.#B.style.color="rgba(255,255,255,0.2)",setTimeout(()=>{this.#B.style.color=o||"transparent"},200)}catch(o){console.error("Failed to copy camera JSON:",o)}}),this.#I=document.createElement("div"),Object.assign(this.#I.style,{position:"absolute",bottom:"1%",left:"50%",transform:"translateX(-50%)",display:"none",alignItems:"center",justifyContent:"center",gap:"8px",background:"rgba(0, 0, 0, 0.4)",padding:"8px 8px",borderRadius:"8px",backdropFilter:"blur(6px)",boxSizing:"border-box",width:"50%",flexWrap:"wrap"}),i.appendChild(this.#I),this.#E=document.createElement("button"),this.#E.type="button",Object.assign(this.#E.style,{border:"none",background:"transparent",color:"white",fontSize:"24px",cursor:"pointer",padding:"4px",flexShrink:"0"}),this.#E.addEventListener("click",()=>{this.#Q=!this.#Q,this.#a.length==1&&this.#e>=this.#a[0].metadata.duration&&(this.#e=0)}),this.#I.appendChild(this.#E),this.#r=document.createElement("input"),this.#r.type="range",this.#r.min=0,this.#r.max=1,this.#r.step=.001,this.#r.value=0,Object.assign(this.#r.style,{flex:"1 1 auto",minWidth:"120px",maxWidth:"100%",cursor:"pointer",accentColor:"#fff"}),this.#h=!1,this.#r.addEventListener("input",()=>{this.#e=parseFloat(this.#r.value)}),this.#r.addEventListener("pointerdown",()=>{this.#h=!0}),this.#r.addEventListener("pointerup",()=>{this.#h=!1}),this.#I.appendChild(this.#r),this.#o=new at(this.#A),this.#t=new cA}connectedCallback(){this.#t.attachToCanvas(this.#A),this.#d=new ResizeObserver(t=>{let i=t[0],C=Math.round(i.contentBoxSize[0].inlineSize*window.devicePixelRatio),o=Math.round(i.contentBoxSize[0].blockSize*window.devicePixelRatio),h=i.target;h.width=C,h.height=o,this.#o.resize()}),this.clear(),this.#o.initialize().then(()=>{this.#d.observe(this.#A),requestAnimationFrame(t=>{this.#l(t)})})}disconnectedCallback(){this.#t.detachFromCanvas(),this.#d.disconnect()}static get observedAttributes(){return["src","scene","camera","background-color","loop","autoplay","controls","point-size","debug"]}attributeChangedCallback(t,i,C){if(i!==C)switch(t){case"src":{C==null?this.#G(null):this.#k(C).then(o=>{this.#m(()=>{C.endsWith(".ply")?this.#G(this.#v(o)):this.#G(this.#F(o))})});break}case"scene":{C==null?this.#p(null):this.#k(C).then(o=>{this.#m(()=>{C.endsWith(".ply")?this.#p(this.#v(o)):this.#p(this.#F(o)),this.#i=!0})});break}case"camera":{let o="default",h={};try{h=JSON.parse(C),o=h.type}catch{}this.setCamera(o,h);break}case"background-color":{try{let o=this.getAttribute("background-color").split(" ").map(h=>Number(h)/255);o.length===3&&(this.#g.backgroundColor=o)}catch{}break}case"loop":this.#c=this.hasAttribute("loop");break;case"autoplay":this.#f=this.hasAttribute("autoplay");break;case"controls":this.#D=this.hasAttribute("controls");break;case"point-size":this.#o.setPointSize(C);break;case"debug":this.#u=this.hasAttribute("debug");break;default:break}}play(){this.#Q=!0}pause(){this.#Q=!1}enqueue(t){this.#m(()=>{this.#a.push(this.#F(t))})}clear(){this.#m(()=>{this.#a=[{gaussians:new this.#s.Gaussians,metadata:{duration:0}}],this.#i=!0})}setCamera(t,i){this.#t.detachFromCanvas(),t==="default"?this.#t=new cA(i):t==="snap"?this.#t=new LA(i):t==="window"?this.#t=new PA(i):(console.warn("Invalid camera provided, defaulting to 'default'"),this.#t=new cA),this.#t.attachToCanvas(this.#A)}get paused(){return!this.#Q}get currentTime(){return this.#e}set currentTime(t){let i=this.#a[0].metadata.duration;if(t<0||t>i){console.warn("Setting out-of-bounds currentTime");return}this.#e=t}get currentSegment(){return this.#a[0]}#s=null;#A=null;#o=null;#t=null;#d=null;#c=!1;#f=!1;#D=!1;#u=!1;#g={};#a=[];#i=!1;#w=null;#e=0;#h=!1;#Q=!1;#I=null;#E=null;#r=null;#C=null;#n=null;#B=null;#l(t){t/=1e3;var i=0;this.#w&&(i=t-this.#w),this.#Q&&!this.#h&&(this.#e+=i);let C=this.#a[0],o=C.metadata.duration,h=!1;for(;this.#e>=o&&this.#a.length>1;)o>0&&this.onSegmentEnd?.(!1),this.#e-=o,this.#a.shift(),C=this.#a[0],o=C.metadata.duration,h=!0;(h||this.#i)&&(this.#o.setGaussians(C.gaussians),this.#i=!1),this.#c?this.#e%=o>0?o:1:this.#e>o&&(o>0&&this.onSegmentEnd?.(!0),this.#e=o,this.#Q=!1);let D=this.#D&&o>0;Object.assign(this.#I.style,{display:D?"flex":"none"}),this.#E.textContent=this.#Q?"\u23F8\uFE0F":"\u25B6\uFE0F",this.#r.max=o,!this.#h&&this.#r&&(this.#r.value=this.#e),this.#w=t,this.#t.update(i*1e3);let d=this.#t.getViewMatrix(this.#A.width/this.#A.height),p=this.#t.getProjMatrix(this.#A.width/this.#A.height),y=this.#e/(o>0?o:1);this.#o.draw(d,p,y,this.#g,this.#u);let l=this.#o.performanceProfile;Object.assign(this.#C.style,{display:this.#u?"block":"none"}),this.#n.textContent=`Time: ${this.#e.toFixed(3)} / ${o.toFixed(3)} s
|
|
432
|
-
Num Gaussians Visible: ${this.#
|
|
431
|
+
}`;var H=Float32Array.BYTES_PER_ELEMENT,eA=Uint32Array.BYTES_PER_ELEMENT,rt=64,mA=4,pi=.001,yi=.001,mi=0,re=class{constructor(t){this.#t=t}async initialize(){this.#B=await TA,this.#A=await ie,this.#I=await _A,this.#u=this.#v(),this.#h=this.#p(),this.#d=this.#G(),this.#f=this.#F(),this.#D=this.#k(),this.#s=this.#y(),this.#C=this.#N(),this.#I.features.has("timestamp-query")&&(this.#g=this.#R())}resize(){this.#h=this.#p()}setGaussians(t){this.#e=this.#w?this.#B.combine(t,this.#w):t,this.#i=this.#Y(this.#e);let i=new yA(this.#e,(C,o)=>{this.#r=!1,this.#E==i&&(this.#b(C),this.#n=!0,this.#a.lastSortTime=o)});this.#n=!1,this.#o=null,this.#E=i}setScene(t){this.#w=t}setPointSize(t){this.#c=t}draw(t,i,C,o={},h=!1){if(!this.#e||(this.#g==null&&(h=!1),!this.#r&&this.#U(t,C)&&(this.#r=!0,this.#E.sort(t,i,C),this.#o={view:t.slice(),time:C}),!this.#n))return;let D=performance.now();var d=0;this.#l&&(d=D-this.#l),this.#l=D;let p=se.transformMat4(se.create(),se.fromValues(0,0,0),Bt.invert(Bt.create(),t)),y=[i[0]*(this.#t.width/2),i[5]*(this.#t.height/2)],l=[this.#t.width,this.#t.height];this.#S(t,i,p,y,l,C);let N=this.#m(),J=null,_=null;h&&(J=this.#A.createBuffer({size:mA*8,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC}),_=this.#A.createBuffer({size:mA*8,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}));let W=this.#A.createCommandEncoder(),X=W.beginComputePass({timestampWrites:h?{querySet:this.#g.querySet,beginningOfPassWriteIndex:0,endOfPassWriteIndex:1}:void 0});X.setPipeline(this.#d),X.setBindGroup(0,N.preprocess),this.#Q>0&&X.dispatchWorkgroups(Math.ceil(this.#Q/rt)),X.end();let M=W.beginRenderPass({label:"main",colorAttachments:[{view:this.#h.view,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],timestampWrites:h?{querySet:this.#g.querySet,beginningOfPassWriteIndex:2,endOfPassWriteIndex:3}:void 0});M.setPipeline(this.#f),M.setVertexBuffer(0,this.#s.vertex),M.setIndexBuffer(this.#s.index,"uint16"),M.setBindGroup(0,N.rasterize),this.#Q>0&&M.drawIndexed(6,this.#Q),M.end();let V=o.backgroundColor??[0,0,0],z=W.beginRenderPass({label:"composite",colorAttachments:[{view:this.#u.getCurrentTexture().createView(),clearValue:{r:V[0],g:V[1],b:V[2],a:1},loadOp:"clear",storeOp:"store"}]});z.setPipeline(this.#D),z.setBindGroup(0,N.composite),z.draw(3),z.end(),h&&(W.resolveQuerySet(this.#g.querySet,0,mA,J,0),W.copyBufferToBuffer(J,0,_,0,mA*8)),this.#A.queue.submit([W.finish()]),h&&_.mapAsync(GPUMapMode.READ).then(()=>{let j=_.getMappedRange(),U=new BigUint64Array(j);if(this.#g.accumFrames++,this.#g.accumTime+=d,this.#g.accumPreprocessTime+=Number(U[1]-U[0]),this.#g.accumRasterTime+=Number(U[3]-U[2]),_.unmap(),this.#g.accumTime>=1e3){let v=this.#g.accumPreprocessTime/1e6/this.#g.accumFrames,G=this.#g.accumRasterTime/1e6/this.#g.accumFrames,m=v+G;this.#a.preprocessTime=v,this.#a.rasterTime=G,this.#a.totalTime=m,this.#g.accumFrames=0,this.#g.accumTime=0,this.#g.accumPreprocessTime=0,this.#g.accumRasterTime=0}})}get numGaussians(){return this.#e?.length??0}get numGaussiansVisible(){return this.#Q??0}get performanceProfile(){return this.#a}#B=null;#A=null;#I=null;#t=null;#u=null;#h=null;#d=null;#f=null;#D=null;#g=null;#w=null;#e=null;#c=null;#i=null;#s=null;#C=null;#Q=0;#E=null;#n=!1;#r=!1;#o=null;#l=null;#a={};#v(){let t=this.#t.getContext("webgpu");return t.configure({device:this.#A,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:"opaque"}),t}#p(){let t=this.#t.width|0,i=this.#t.height|0;if(t==0||i==0)return;let C=navigator.gpu.getPreferredCanvasFormat(),o=this.#A.createTexture({size:[t,i,1],format:C,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING});return{tex:o,view:o.createView(),sampler:this.#A.createSampler({magFilter:"linear",minFilter:"linear"})}}#G(){let t=this.#A.createShaderModule({label:"gaussian preprocess",code:gt});return this.#A.createComputePipeline({label:"gaussian preprocess",layout:"auto",compute:{module:t,entryPoint:"preprocess",constants:{WORKGROUP_SIZE:rt}}})}#F(){let t=this.#A.createShaderModule({label:"gaussian rasterize",code:it});return this.#A.createRenderPipeline({label:"gaussian",layout:"auto",vertex:{module:t,entryPoint:"vs",buffers:[{stepMode:"vertex",arrayStride:2*H,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:t,entryPoint:"fs",targets:[{format:navigator.gpu.getPreferredCanvasFormat(),blend:{alpha:{srcFactor:"one-minus-dst-alpha",dstFactor:"one",operation:"add"},color:{srcFactor:"one-minus-dst-alpha",dstFactor:"one",operation:"add"}}}]},primitive:{topology:"triangle-list",cullMode:"none"}})}#k(){let t=this.#A.createShaderModule({label:"composite",code:st});return this.#A.createRenderPipeline({label:"composite",layout:"auto",vertex:{module:t,entryPoint:"vs"},fragment:{module:t,entryPoint:"fs",targets:[{format:navigator.gpu.getPreferredCanvasFormat(),blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-list",cullMode:"none"}})}#R(){return{querySet:this.#A.createQuerySet({type:"timestamp",count:mA}),accumFrames:0,accumTime:0,accumRasterTime:0,accumPreprocessTime:0}}#y(){let t=new Float32Array([-2,-2,2,-2,2,2,-2,2]),i=this.#A.createBuffer({label:"quad vertices",size:t.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});this.#A.queue.writeBuffer(i,0,t);let C=new Uint16Array([0,1,2,0,2,3]),o=this.#A.createBuffer({label:"quad indices",size:C.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});return this.#A.queue.writeBuffer(o,0,C),{vertex:i,index:o}}#N(){let t=0;return t+=16*H,t+=16*H,t+=3*H,t+=1*H,t+=2*H,t+=2*H,t+=1*H,t+=1*eA,t+=1*eA,t+=1*eA,t+=2*H,t+=2*H,t+=2*H,t+=2*eA,this.#A.createBuffer({label:"params",size:t,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST})}#Y(t){let i={};return[{name:"means",alignment:4*H},{name:"scales",alignment:eA},{name:"rotations",alignment:eA},{name:"opacities",alignment:eA},{name:"colors",alignment:eA},{name:"shs",alignment:eA},{name:"velocities",alignment:4*H}].forEach(o=>{i[o.name]=this.#M(this.#i?.[o.name],{label:o.name,size:this.#J(t[o.name].byteLength,o.alignment),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.#x(i[o.name],t[o.name])}),i.sortedIndices=this.#M(this.#i?.sortedIndices,{label:"sorted indices",size:Math.max(t.length,1)*eA,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.STORAGE}),i.rendered=this.#M(this.#i?.rendered,{label:"rendered gaussians",size:Math.max(t.length,1)*12*H,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.INDIRECT}),i}#S(t,i,C,o,h,D){let d=new ArrayBuffer(this.#C.size),p=new Float32Array(d),y=new Uint32Array(d),l=0;p.set(t,l),l+=16,p.set(i,l),l+=16,p.set(C,l),l+=3,p.set([D],l),l+=1,p.set(o,l),l+=2,p.set(h,l),l+=2,p.set([this.#c??0],l),l+=1,y.set([this.#Q],l),l+=1,y.set([Number(this.#e.dynamic)],l),l+=1,y.set([this.#e.shDegree],l),l+=1,p.set([this.#e.scaleMin,this.#e.scaleMax],l),l+=2,p.set([this.#e.colorMin,this.#e.colorMax],l),l+=2,p.set([this.#e.shMin,this.#e.shMax],l),l+=2,this.#A.queue.writeBuffer(this.#C,0,d)}#m(){let t=this.#A.createBindGroup({label:"gaussian preprocess",layout:this.#d.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.#C}},{binding:1,resource:{buffer:this.#i.means}},{binding:2,resource:{buffer:this.#i.scales}},{binding:3,resource:{buffer:this.#i.rotations}},{binding:4,resource:{buffer:this.#i.opacities}},{binding:5,resource:{buffer:this.#i.colors}},{binding:6,resource:{buffer:this.#i.shs}},{binding:7,resource:{buffer:this.#i.velocities}},{binding:8,resource:{buffer:this.#i.sortedIndices}},{binding:9,resource:{buffer:this.#i.rendered}}]}),i=this.#A.createBindGroup({label:"gaussian rasterize",layout:this.#f.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.#C}},{binding:1,resource:{buffer:this.#i.rendered}}]}),C=this.#A.createBindGroup({label:"composite",layout:this.#D.getBindGroupLayout(0),entries:[{binding:0,resource:this.#h.view},{binding:1,resource:this.#h.sampler}]});return{preprocess:t,rasterize:i,composite:C}}#U(t,i){if(this.#o==null)return!0;let C=this.#o.view,o=[t[2],t[6],t[10]],h=[t[12],t[13],t[14]],D=[C[2],C[6],C[10]],d=[C[12],C[13],C[14]],p=1-(o[0]*D[0]+o[1]*D[1]+o[2]*D[2]),y=Math.pow(h[0]-d[0],2)+Math.pow(h[1]-d[1],2)+Math.pow(h[2]-d[2],2),l=Math.abs(i-this.#o.time);return p>pi||y>yi||l>mi}#b(t){this.#Q=t.length,this.#A.queue.writeBuffer(this.#i.sortedIndices,0,t)}#M(t,i){return t==null||t.size<i.size?(t?.destroy(),this.#A.createBuffer(i)):t}#x(t,i){let C,o,h;i instanceof ArrayBuffer?(C=i,o=0,h=i.byteLength):(C=i.buffer,o=i.byteOffset,h=i.byteLength);let D=h&-4;D>0&&this.#A.queue.writeBuffer(t,0,C,o,D);let d=h-D;if(d>0){let p=new Uint8Array(4);p.set(new Uint8Array(C,o+D,d)),this.#A.queue.writeBuffer(t,D,p,0,4)}}#J(t,i){return t==0?i:t+i-1&~(i-1)}},at=re;import{mat4 as Y,vec3 as c}from"gl-matrix";var GA=class R{constructor(){if(new.target===R)throw new Error("Cannot instantiate abstract class Camera directly");this.keysPressed=new Set,this.mouseDown=!1,this.mouseX=0,this.mouseY=0}getViewMatrix(){return null}getProjMatrix(t){let i=this.fov||80;return Y.perspective(Y.create(),i*Math.PI/180,t,.01,100)}getParams(){return{}}onMouseDown(t){t.button===0&&(this.mouseDown=!0)}onMouseUp(t){t.button===0&&(this.mouseDown=!1)}onMouseMove(t){this.mouseX=t.clientX,this.mouseY=t.clientY}onDoubleClick(t){}onScroll(t){}onTouchStart(t){t.touches.length===1&&(this.mouseDown=!0),this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY}onTouchEnd(t){t.touches.length===1&&(this.mouseDown=!1)}onTouchMove(t){this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY}onKeyDown(t){this.keysPressed.add(t.code)}onKeyUp(t){this.keysPressed.delete(t.code)}update(t){}_editingSomething(){let t=document.activeElement;return t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable)}attachToCanvas(t){this._onMouseDown=i=>this.onMouseDown(i),this._onMouseUp=i=>this.onMouseUp(i),this._onMouseMove=i=>this.onMouseMove(i),this._onMouseLeave=i=>this.onMouseUp(i),this._onDoubleClick=i=>this.onDoubleClick(i),this._onWheel=i=>{this.onScroll!==R.prototype.onScroll&&i.preventDefault(),this.onScroll(i.deltaY)},this._onTouchStart=i=>{this.onTouchStart!=R.prototype.onTouchStart&&i.preventDefault(),this.onTouchStart(i)},this._onTouchMove=i=>{this.onTouchMove!=R.prototype.onTouchMove&&i.preventDefault(),this.onTouchMove(i)},this._onTouchEnd=i=>{this.onTouchEnd!=R.prototype.onTouchEnd&&i.preventDefault(),this.onTouchEnd(i)},this._onKeyDown=i=>{this._editingSomething()||(i.code==="Space"&&i.preventDefault(),this.onKeyDown(i))},this._onKeyUp=i=>{this._editingSomething()||(i.code==="Space"&&i.preventDefault(),this.onKeyUp(i))},t.addEventListener("mousedown",this._onMouseDown),t.addEventListener("mouseup",this._onMouseUp),t.addEventListener("mousemove",this._onMouseMove),t.addEventListener("mouseleave",this._onMouseLeave),t.addEventListener("dblclick",this._onDoubleClick),t.addEventListener("wheel",this._onWheel),t.addEventListener("touchstart",this._onTouchStart),t.addEventListener("touchmove",this._onTouchMove),t.addEventListener("touchend",this._onTouchEnd),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this._canvas=t}detachFromCanvas(){this._canvas&&(this._canvas.removeEventListener("mousedown",this._onMouseDown),this._canvas.removeEventListener("mouseup",this._onMouseUp),this._canvas.removeEventListener("mousemove",this._onMouseMove),this._canvas.removeEventListener("mouseleave",this._onMouseLeave),this._canvas.removeEventListener("dblclick",this._onDoubleClick),this._canvas.removeEventListener("wheel",this._onWheel),this._canvas.removeEventListener("touchstart",this._onTouchStart),this._canvas.removeEventListener("touchmove",this._onTouchMove),this._canvas.removeEventListener("touchend",this._onTouchEnd),window.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("keyup",this._onKeyUp),this._canvas=null)}},cA=class extends GA{constructor(t={}){super(),this.fov=t.fov||80,this.sens=t.sens||.003,this.panSens=t.panSens||.0025,this.scrollSens=t.scrollSens||.0025,this.keyMoveSpeed=t.keyMoveSpeed||.02,this.minRadius=t.minRadius||.5,this.maxRadius=t.maxRadius||3,this.targetRadius=t.radius||(this.minRadius+this.maxRadius)/2,this.radius=this.targetRadius,this.targetTheta=t.theta||0,this.theta=this.targetTheta,this.targetPhi=t.phi||0,this.phi=this.targetPhi,this.targetPos=c.fromValues(t.targetX||0,t.targetY||0,t.targetZ||0),this.pos=this.targetPos,this.mouseX=t.mouseX||0,this.mouseY=t.mouseY||0,this.rotating=t.startRotating||!1,this.dragging=t.startRotating||!1,this.pinchStartDistance=0}getViewMatrix(){let t=c.fromValues(this.pos[0]+this.radius*Math.sin(this.theta)*Math.cos(this.phi),this.pos[1]+this.radius*Math.sin(this.phi),this.pos[2]+this.radius*Math.cos(this.theta)*Math.cos(this.phi));return Y.lookAt(Y.create(),t,this.pos,c.fromValues(0,1,0))}getParams(){return{fov:this.fov,sens:this.sens,panSens:this.panSens,scrollSens:this.scrollSens,radius:this.radius,minRadius:this.minRadius,maxRadius:this.maxRadius,theta:this.theta,phi:this.phi,targetX:this.pos[0],targetY:this.pos[1],targetZ:this.pos[2],mouseX:this.mouseX,mouseY:this.mouseY,startRotating:this.rotating||this.dragging}}onMouseDown(t){if(t.button===0)this.rotating=!0;else return;this.mouseX=t.clientX,this.mouseY=t.clientY}onMouseUp(t){this.rotating=!1}onDoubleClick(t){this.targetRadius/=2}onMouseMove(t){if(this.rotating){let i=t.clientX-this.mouseX,C=t.clientY-this.mouseY;this.targetTheta+=i*this.sens,this.targetPhi-=C*this.sens,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2+.01),this.targetPhi=Math.min(this.targetPhi,Math.PI/2-.01)}this.mouseX=t.clientX,this.mouseY=t.clientY}onScroll(t){this.targetRadius+=t*this.scrollSens,this.targetRadius=Math.max(this.targetRadius,this.minRadius),this.targetRadius=Math.min(this.targetRadius,this.maxRadius)}onTouchStart(t){if(t.touches.length===1)this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY,this.dragging=!0;else if(t.touches.length===2){this.dragging=!1;let i=t.touches[0],C=t.touches[1];this.pinchStartDistance=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY)}}onTouchMove(t){if(t.touches.length===1&&this.dragging){let i=t.touches[0],C=i.clientX-this.mouseX,o=i.clientY-this.mouseY;this.targetTheta+=C*this.sens,this.targetPhi-=o*this.sens,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2),this.targetPhi=Math.min(this.targetPhi,Math.PI/2),this.mouseX=i.clientX,this.mouseY=i.clientY}else if(t.touches.length===2){let i=t.touches[0],C=t.touches[1],o=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY),h=this.pinchStartDistance-o;this.onScroll(h),this.pinchStartDistance=o}}onTouchEnd(t){t.touches.length===0?this.dragging=!1:t.touches.length===1&&(this.mouseX=t.touches[0].clientX,this.mouseY=t.touches[0].clientY)}update(t){super.update(t);let i=1-Math.pow(.99,t);this.pos=c.add(c.create(),this.pos,c.scale(c.create(),c.sub(c.create(),this.targetPos,this.pos),i)),this.radius+=(this.targetRadius-this.radius)*i,this.theta+=(this.targetTheta-this.theta)*i,this.phi+=(this.targetPhi-this.phi)*i,this.keysPressed.size>0&&this.handleKeyboardMovement(t)}handleKeyboardMovement(t){let i=this.keyMoveSpeed*(t/16.67),C=Math.cos(this.targetTheta),o=-Math.sin(this.targetTheta),h=-Math.sin(this.targetTheta),D=-Math.cos(this.targetTheta),d=0,p=0,y=0;this.keysPressed.has("KeyW")&&(d+=h,y+=D),this.keysPressed.has("KeyS")&&(d-=h,y-=D),this.keysPressed.has("KeyA")&&(d+=C,y+=o),this.keysPressed.has("KeyD")&&(d-=C,y-=o),this.keysPressed.has("Space")&&(p-=1),this.keysPressed.has("ShiftLeft")&&(p+=1),this.targetPos=c.add(c.create(),this.targetPos,c.scale(c.create(),c.normalize(c.create(),c.fromValues(d,p,y)),i))}},LA=class extends GA{constructor(t={}){super(),this.fov=t.fov||80,this.baseTheta=t.baseTheta||Math.PI/4,this.basePhi=t.basePhi||Math.PI/4,this.targetTheta=t.theta||this.baseTheta,this.targetPhi=t.phi||this.basePhi,this.targetRadius=t.radius||1.5,this.theta=this.targetTheta,this.phi=this.targetPhi,this.radius=this.targetRadius,this.minRadius=t.minRadius||.5,this.maxRadius=t.maxRadius||3,this.targetX=t.targetX||0,this.targetY=t.targetY||0,this.targetZ=t.targetZ||0,this.sens=t.sens||.003,this.scrollSens=t.scrollSens||.0025,this.resistance=t.resistance||.25,this.deadZone=t.deadZone||.1,this.snapSmoothness=t.snapSmoothness||.9925,this.valueSmoothness=t.valueSmoothness||.9925,this.radiusSmoothness=t.radiusSmoothness||.99,this.mouseX=t.mouseX||0,this.mouseY=t.mouseY||0,this.rotating=t.startRotating||!1,this.pinchStartDistance=0,this.canvas=null}attachToCanvas(t){super.attachToCanvas(t),this.canvas=t}getViewMatrix(){let t=this.targetX+this.radius*Math.sin(this.theta)*Math.cos(this.phi),i=this.targetY+this.radius*Math.sin(this.phi),C=this.targetZ+this.radius*Math.cos(this.theta)*Math.cos(this.phi);return Y.lookAt(Y.create(),c.fromValues(t,i,C),c.fromValues(this.targetX,this.targetY,this.targetZ),c.fromValues(0,1,0))}onMouseDown(t){t.button===0&&(this.rotating=!0,this.mouseX=t.clientX,this.mouseY=t.clientY,this.targetTheta=this.theta,this.targetPhi=this.phi,this.targetRadius=this.radius)}onMouseUp(t){t.button===0&&(this.rotating=!1)}onMouseMove(t){if(!this.rotating){this.mouseX=t.clientX,this.mouseY=t.clientY;return}let i=t.clientX-this.mouseX,C=t.clientY-this.mouseY,o=this.targetTheta-this.baseTheta,h=this.targetPhi-this.basePhi,D=this.#B(o,h,this.resistance);this.targetTheta+=i*this.sens*D,this.targetPhi-=C*this.sens*D,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2+.01),this.targetPhi=Math.min(this.targetPhi,Math.PI/2-.01),this.mouseX=t.clientX,this.mouseY=t.clientY}onScroll(t){this.targetRadius+=t*this.scrollSens,this.targetRadius=Math.max(this.targetRadius,this.minRadius),this.targetRadius=Math.min(this.targetRadius,this.maxRadius)}onTouchStart(t){if(t.touches.length===1){let i=t.touches[0];this.rotating=!0,this.mouseX=i.clientX,this.mouseY=i.clientY}else if(t.touches.length===2){this.rotating=!1;let i=t.touches[0],C=t.touches[1];this.pinchStartDistance=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY)}}onTouchMove(t){if(t.touches.length===1&&this.rotating){let i=t.touches[0],C=i.clientX-this.mouseX,o=i.clientY-this.mouseY,h=this.targetTheta-this.baseTheta,D=this.targetPhi-this.basePhi,d=this.#B(h,D,this.resistance);this.targetTheta+=C*this.sens*d,this.targetPhi-=o*this.sens*d,this.targetPhi=Math.max(this.targetPhi,-Math.PI/2+.01),this.targetPhi=Math.min(this.targetPhi,Math.PI/2-.01),this.mouseX=i.clientX,this.mouseY=i.clientY}else if(t.touches.length===2){let i=t.touches[0],C=t.touches[1],o=Math.hypot(C.clientX-i.clientX,C.clientY-i.clientY),h=this.pinchStartDistance-o;this.onScroll(h),this.pinchStartDistance=o}}onTouchEnd(t){if(t.touches.length===0)this.rotating=!1;else if(t.touches.length===1){let i=t.touches[0];this.mouseX=i.clientX,this.mouseY=i.clientY}}update(t){super.update(t);let i=1-Math.pow(this.snapSmoothness,t),C=1-Math.pow(this.valueSmoothness,t);if(this.rotating)this.theta=this.targetTheta,this.phi=this.targetPhi,this.radius=this.targetRadius;else{let o=this.#A(this.targetTheta,this.targetPhi,this.baseTheta,this.basePhi,this.deadZone);this.targetTheta+=(o.theta-this.targetTheta)*i,this.targetPhi+=(o.phi-this.targetPhi)*i,this.theta+=(this.targetTheta-this.theta)*C,this.phi+=(this.targetPhi-this.phi)*C,this.radius+=(this.targetRadius-this.radius)*(1-Math.pow(this.radiusSmoothness,t))}}#B(t,i,C){let h=Math.hypot(t,i)/(1-C);return 1/(1+h*h)}#A(t,i,C,o,h){let D=t-C,d=i-o,p=Math.hypot(D,d);if(p<=h)return{theta:t,phi:i};{let y=h/p;return{theta:C+D*y,phi:o+d*y}}}getParams(){return{fov:this.fov,baseTheta:this.baseTheta,basePhi:this.basePhi,theta:this.theta,phi:this.phi,radius:this.radius,minRadius:this.minRadius,maxRadius:this.maxRadius,targetX:this.targetX,targetY:this.targetY,targetZ:this.targetZ,sens:this.sens,scrollSens:this.scrollSens,resistance:this.resistance,deadZone:this.deadZone,snapSmoothness:this.snapSmoothness,valueSmoothness:this.valueSmoothness,radiusSmoothness:this.radiusSmoothness,startRotating:this.mouseDown,mouseX:this.mouseX,mouseY:this.mouseY}}},PA=class extends GA{constructor(t={}){super(),this.screenPos=t.screenPos||[0,0,1],this.screenTarget=t.screenTarget||[0,0,0],this.screenScale=t.screenScale||1,this.eyePosWorld=t.eyePosWorld||[0,0,1],this.worldToVoxelScale=t.worldToVoxelScale||1,this.screenTransform=Y.invert(Y.create(),Y.lookAt(Y.create(),this.screenPos,this.screenTarget,[0,1,0]))}getViewMatrix(t){return this.#B(t).view}getProjMatrix(t){return this.#B(t).proj}#B(t){var o=t>1?1:t,h=t>1?1/t:1;o*=this.screenScale,h*=this.screenScale;let D=c.transformMat4(c.create(),c.fromValues(-o,-h,0),this.screenTransform),d=c.transformMat4(c.create(),c.fromValues(o,-h,0),this.screenTransform),p=c.transformMat4(c.create(),c.fromValues(-o,h,0),this.screenTransform),y=c.scale(c.create(),this.eyePosWorld,this.worldToVoxelScale);y[1]+=h,y[2]=Math.max(y[2],1e-4);let l=c.transformMat4(c.create(),y,this.screenTransform),N=c.sub(c.create(),d,D),J=c.sub(c.create(),p,D),_=c.sub(c.create(),D,l),W=c.sub(c.create(),d,l),X=c.sub(c.create(),p,l);N=c.normalize(c.create(),N),J=c.normalize(c.create(),J);let M=c.scale(c.create(),c.cross(c.create(),N,J),1),V=-c.dot(_,M),z=c.dot(N,_)*.01/V,j=c.dot(N,W)*.01/V,U=c.dot(J,_)*.01/V,v=c.dot(J,X)*.01/V,G=Y.create();G[0]=2*.01/(j-z),G[4]=0,G[8]=(j+z)/(j-z),G[12]=0,G[1]=0,G[5]=2*.01/(v-U),G[9]=(v+U)/(v-U),G[13]=0,G[2]=0,G[6]=0,G[10]=(100+.01)/(.01-100),G[14]=200*.01/(.01-100),G[3]=0,G[7]=0,G[11]=-1,G[15]=0;let m=Y.create();m[0]=N[0],m[4]=N[1],m[8]=N[2],m[12]=0,m[1]=J[0],m[5]=J[1],m[9]=J[2],m[13]=0,m[2]=M[0],m[6]=M[1],m[10]=M[2],m[14]=0,m[3]=0,m[7]=0,m[11]=0,m[15]=1;let QA=Y.translate(Y.create(),Y.identity(Y.create()),c.scale(c.create(),l,-1));return{view:Y.mul(Y.create(),m,QA),proj:G}}getParams(){return{screenPos:this.screenPos,screenTarget:this.screenTarget,screenScale:this.screenScale,eyePosWorld:this.eyePosWorld,worldToVoxelScale:this.worldToVoxelScale,startRotating:this.mouseDown,mouseX:this.mouseX,mouseY:this.mouseY}}};var Be=class extends HTMLElement{constructor(){super();let t=this.attachShadow({mode:"open"});TA.then(o=>{this.#B=o,this.#Y()});let i=document.createElement("div");i.style.position="relative",i.style.width="100%",i.style.height="100%",i.style.overflow="hidden",t.appendChild(i),this.#A=document.createElement("canvas"),Object.assign(this.#A.style,{width:"100%",height:"100%",display:"block"}),i.appendChild(this.#A),this.#o=document.createElement("div"),Object.assign(this.#o.style,{position:"absolute",display:"none",top:"1%",left:"1%",background:"rgba(0,0,0,0.4)",padding:"8px 8px",borderRadius:"8px",backdropFilter:"blur(6px)",pointerEvents:"auto",userSelect:"none"}),i.appendChild(this.#o),this.#l=document.createElement("div"),Object.assign(this.#l.style,{display:"block",color:"white",fontFamily:"monospace",fontSize:"12px",whiteSpace:"pre",marginBottom:"10px"}),this.#o.appendChild(this.#l);let C=document.createElement("div");C.textContent="Show Camera Params \u25BC",Object.assign(C.style,{display:"block",cursor:"pointer",color:"white",fontFamily:"monospace",fontSize:"12px"}),this.#o.appendChild(C),this.#a=document.createElement("pre"),Object.assign(this.#a.style,{display:"none",color:"white",fontFamily:"monospace",fontSize:"12px",whiteSpace:"pre"}),this.#o.appendChild(this.#a),C.addEventListener("click",()=>{this.#a.style.display==="none"?(this.#a.style.display="block",C.textContent="Hide Camera Params \u25B2"):(this.#a.style.display="none",C.textContent="Show Camera Params \u25BC")}),this.#a.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(this.#a.textContent);let o=this.#a.style.color;this.#a.style.color="rgba(255,255,255,0.2)",setTimeout(()=>{this.#a.style.color=o||"transparent"},200)}catch(o){console.error("Failed to copy camera JSON:",o)}}),this.#E=document.createElement("div"),Object.assign(this.#E.style,{position:"absolute",bottom:"1%",left:"50%",transform:"translateX(-50%)",display:"none",alignItems:"center",justifyContent:"center",gap:"8px",background:"rgba(0, 0, 0, 0.4)",padding:"8px 8px",borderRadius:"8px",backdropFilter:"blur(6px)",boxSizing:"border-box",width:"50%",flexWrap:"wrap"}),i.appendChild(this.#E),this.#n=document.createElement("button"),this.#n.type="button",Object.assign(this.#n.style,{border:"none",background:"transparent",color:"white",fontSize:"24px",cursor:"pointer",padding:"4px",flexShrink:"0"}),this.#n.addEventListener("click",()=>{this.#Q=!this.#Q,this.#e.length==1&&this.#s>=this.#e[0].metadata.duration&&(this.#s=0)}),this.#E.appendChild(this.#n),this.#r=document.createElement("input"),this.#r.type="range",this.#r.min=0,this.#r.max=1,this.#r.step=.001,this.#r.value=0,Object.assign(this.#r.style,{flex:"1 1 auto",minWidth:"120px",maxWidth:"100%",cursor:"pointer",accentColor:"#fff"}),this.#C=!1,this.#r.addEventListener("input",()=>{this.#s=parseFloat(this.#r.value)}),this.#r.addEventListener("pointerdown",()=>{this.#C=!0}),this.#r.addEventListener("pointerup",()=>{this.#C=!1}),this.#E.appendChild(this.#r),this.#I=new at(this.#A),this.#t=new cA}connectedCallback(){this.#t.attachToCanvas(this.#A),this.#u=new ResizeObserver(t=>{let i=t[0],C=Math.round(i.contentBoxSize[0].inlineSize*window.devicePixelRatio),o=Math.round(i.contentBoxSize[0].blockSize*window.devicePixelRatio),h=i.target;h.width=C,h.height=o,this.#I.resize()}),this.clear(),this.#I.initialize().then(()=>{this.#u.observe(this.#A),requestAnimationFrame(t=>{this.#v(t)})})}disconnectedCallback(){this.#t.detachFromCanvas(),this.#u.disconnect()}static get observedAttributes(){return["src","scene","camera","background-color","loop","autoplay","controls","point-size","time-scale","debug"]}attributeChangedCallback(t,i,C){if(i!==C)switch(t){case"src":{C==null?this.#p(null):this.#R(C).then(o=>{this.#m(()=>{C.endsWith(".ply")?this.#p(this.#k(o)):this.#p(this.#F(o))})});break}case"scene":{C==null?this.#G(null):this.#R(C).then(o=>{this.#m(()=>{C.endsWith(".ply")?this.#G(this.#k(o)):this.#G(this.#F(o)),this.#c=!0})});break}case"camera":{let o="default",h={};try{h=JSON.parse(C),o=h.type}catch{}this.setCamera(o,h);break}case"background-color":{try{let o=this.getAttribute("background-color").split(" ").map(h=>Number(h)/255);o.length===3&&(this.#w.backgroundColor=o)}catch{}break}case"loop":this.#h=this.hasAttribute("loop");break;case"autoplay":this.#d=this.hasAttribute("autoplay");break;case"controls":this.#f=this.hasAttribute("controls");break;case"time-scale":try{this.#D=Number(this.getAttribute("time-scale"))}catch{}break;case"point-size":this.#I.setPointSize(C);break;case"debug":this.#g=this.hasAttribute("debug");break;default:break}}play(){this.#Q=!0}pause(){this.#Q=!1}enqueue(t){this.#m(()=>{this.#e.push(this.#F(t))})}clear(){this.#m(()=>{this.#e=[{gaussians:new this.#B.Gaussians,metadata:{duration:0}}],this.#c=!0})}setCamera(t,i){this.#t.detachFromCanvas(),t==="default"?this.#t=new cA(i):t==="snap"?this.#t=new LA(i):t==="window"?this.#t=new PA(i):(console.warn("Invalid camera provided, defaulting to 'default'"),this.#t=new cA),this.#t.attachToCanvas(this.#A)}get paused(){return!this.#Q}get currentTime(){return this.#s}set currentTime(t){let i=this.#e[0].metadata.duration;if(t<0||t>i){console.warn("Setting out-of-bounds currentTime");return}this.#s=t}get currentSegment(){return this.#e[0]}#B=null;#A=null;#I=null;#t=null;#u=null;#h=!1;#d=!1;#f=!1;#D=1;#g=!1;#w={};#e=[];#c=!1;#i=null;#s=0;#C=!1;#Q=!1;#E=null;#n=null;#r=null;#o=null;#l=null;#a=null;#v(t){t/=1e3;var i=0;this.#i&&(i=t-this.#i),this.#Q&&!this.#C&&(this.#s+=i*this.#D);let C=this.#e[0],o=C.metadata.duration,h=!1;for(;this.#s>=o&&this.#e.length>1;)o>0&&this.onSegmentEnd?.(!1),this.#s-=o,this.#e.shift(),C=this.#e[0],o=C.metadata.duration,h=!0;(h||this.#c)&&(this.#I.setGaussians(C.gaussians),this.#c=!1),this.#h?this.#s%=o>0?o:1:this.#s>o&&(o>0&&this.onSegmentEnd?.(!0),this.#s=o,this.#Q=!1);let D=this.#f&&o>0;Object.assign(this.#E.style,{display:D?"flex":"none"}),this.#n.textContent=this.#Q?"\u23F8\uFE0F":"\u25B6\uFE0F",this.#r.max=o,!this.#C&&this.#r&&(this.#r.value=this.#s),this.#i=t,this.#t.update(i*1e3);let d=this.#t.getViewMatrix(this.#A.width/this.#A.height),p=this.#t.getProjMatrix(this.#A.width/this.#A.height),y=this.#s/(o>0?o:1);this.#I.draw(d,p,y,this.#w,this.#g);let l=this.#I.performanceProfile;Object.assign(this.#o.style,{display:this.#g?"block":"none"}),this.#l.textContent=`Time: ${this.#s.toFixed(3)} / ${o.toFixed(3)} s
|
|
432
|
+
Num Gaussians Visible: ${this.#I.numGaussiansVisible} / ${this.#I.numGaussians}
|
|
433
433
|
|
|
434
434
|
Frame Time: ${this.#y(l.totalTime)}
|
|
435
435
|
- Preprocess: ${this.#y(l.preprocessTime)}
|
|
436
436
|
- Raster: ${this.#y(l.rasterTime)}
|
|
437
|
-
Last Sort Time: ${this.#y(l.lastSortTime)}`,this.#
|
|
437
|
+
Last Sort Time: ${this.#y(l.lastSortTime)}`,this.#a.textContent=JSON.stringify(this.#t.getParams(),null,2),requestAnimationFrame(N=>{this.#v(N)})}#p(t){this.#e=[t],this.#s=0,this.#Q=this.#d,this.#c=!0}#G(t){this.#I.setScene(t.gaussians)}#F(t){try{return this.#B.decode(t)}catch(i){throw new Error("Failed to decode .dgs file, see the above stack trace for details: "+i)}}#k(t){try{return this.#B.loadPly(t)}catch(i){throw new Error("Failed to load .ply file, see the above stack trace for details: "+i)}}async#R(t){let i=await fetch(t);if(!i.ok)throw new Error("Failed to fetch buffer at "+t);return await i.arrayBuffer()}#y(t){return(t?.toFixed(2)??"N/A")+" ms"}#N=Promise.resolve();#Y=null;#S=new Promise(t=>this.#Y=t);#m(t){return this.#N=this.#N.then(async()=>(await this.#S,await t()),i=>{throw console.error("Enqueuing call failed: ",i),i}),this.#N}};customElements.define("dgs-player",Be);export{Be as DGSPlayer};
|