@sparkjsdev/spark 0.1.5 → 0.1.6

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.
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const iA=require("three");var SI=typeof document<"u"?document.currentScript:null;function rs(t){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const I in t)if(I!=="default"){const g=Object.getOwnPropertyDescriptor(t,I);Object.defineProperty(A,I,g.get?g:{enumerable:!0,get:()=>t[I]})}}return A.default=t,Object.freeze(A)}const n=rs(iA);let OA;const Eg=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&Eg.decode();let Rt=null;function cs(){return(Rt===null||Rt.byteLength===0)&&(Rt=new Uint8Array(OA.memory.buffer)),Rt}function hs(t,A){return t=t>>>0,Eg.decode(cs().subarray(t,t+A))}function ls(t,A,I,g,B,i,e,Q,s,E,a){return OA.raycast_splats(t,A,I,g,B,i,e,Q,s,E,a)}async function us(t,A){if(typeof Response=="function"&&t instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(t,A)}catch(g){if(t.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",g);else throw g}const I=await t.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(t,A);return I instanceof WebAssembly.Instance?{instance:I,module:t}:I}}function Ds(){const t={};return t.wbg={},t.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},t.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},t.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},t.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},t.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},t.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},t.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,I,g){return new Float32Array(A,I>>>0,g>>>0)},t.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,I,g){return new Uint32Array(A,I>>>0,g>>>0)},t.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},t.wbg.__wbg_set_10bad9bee0e9c58b=function(A,I,g){A.set(I,g>>>0)},t.wbg.__wbg_set_d23661d19148b229=function(A,I,g){A.set(I,g>>>0)},t.wbg.__wbg_set_f4f1f0daa30696fc=function(A,I,g){A.set(I,g>>>0)},t.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,I,g){return A.subarray(I>>>0,g>>>0)},t.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,I,g){return A.subarray(I>>>0,g>>>0)},t.wbg.__wbindgen_init_externref_table=function(){const A=OA.__wbindgen_export_0,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)},t.wbg.__wbindgen_memory=function(){return OA.memory},t.wbg.__wbindgen_throw=function(A,I){throw new Error(hs(A,I))},t}function ys(t,A){return OA=t.exports,ag.__wbindgen_wasm_module=A,Rt=null,OA.__wbindgen_start(),OA}async function ag(t){if(OA!==void 0)return OA;typeof t<"u"&&(Object.getPrototypeOf(t)===Object.prototype?{module_or_path:t}=t:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof t>"u"&&(t=new URL("data:application/wasm;base64,AGFzbQEAAAAB9wEkYAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAR/f39/AGABbwFvYANvb38AYAFvAX9gAAF/YAAAYAd/f39/f39/AX9gAX0BfWAGf39/f39/AGAEf39/fwF/YAF/AW9gAAFvYAd/f39/f39/AGACf34Bf2ADf35+AGACf34AYAt9fX19fX19fX9vfwFvYAZ/f39/f38Bf2AFf398f38AYAR/fH9/AGAFf399f38AYAR/fX9/AGAFf39+f38AYAR/fn9/AGADf35+AX9gA39vbwF/YAJ9fQF9AvIEEQN3YmcdX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgACgN3YmcaX193YmdfbmV3XzlmZWU5N2E0MDliMzJiNjgACgN3YmcaX193Ymdfc2V0X2Y0ZjFmMGRhYTMwNjk2ZmMACwN3YmcdX193YmdfbGVuZ3RoXzhjZmQyYzY0MDlhZjg4YWQADAN3YmcxX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfZjFkZWFkNDRkMWZjNzIxMgAHA3diZxpfX3diZ19uZXdfZTNiMzIxZGNmZWY4OWZjNwAKA3diZxpfX3diZ19zZXRfZDIzNjYxZDE5MTQ4YjIyOQALA3diZx1fX3diZ19sZW5ndGhfNmNhNTI3NjY1ZDg5Njk0ZAAMA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9lNmI3ZTY5YWNkNGM3MzU0AAcDd2JnGl9fd2JnX3NldF8xMGJhZDliZWUwZTljNThiAAsDd2JnHV9fd2JnX2xlbmd0aF8zYjRmMDIyMTg4YWU4ZGI2AAwDd2JnH19fd2JnX3N1YmFycmF5Xzc2OWUxZTBmODFiYjI1OWIABwN3YmcfX193Ymdfc3ViYXJyYXlfM2FhZWVjODliYjI1NDRmMAAHA3diZyRfX3diZ19uZXd3aXRobGVuZ3RoXzVhNWVmZTMxM2NmZDU5ZjEAEwN3YmcQX193YmluZGdlbl90aHJvdwACA3diZxFfX3diaW5kZ2VuX21lbW9yeQAUA3diZx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4DwAG+AQUAAAYPAAUF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BSADOgAcIAUgAjYCGCAFIAUpAwA3AhBBlM/AACgCACAFQRBqQZjPwAAoAgAoAhQRAgBBkM/AACgCAEEBawUgBgs2AgBB6NLAAEEAOgAAIANFDQAACwALsgEBBn8CQAJAIABBhAFJDQAgANBvJgEQRSIBKAIMIQUgASgCECECIAFCADcCDCABKAIIIQMgASgCBCEEIAFCBDcCBCABKAIAIQYgAUEANgIAIAAgAkkNASAAIAJrIgAgA08NASAEIABBAnRqIAU2AgAgASACNgIQIAEgADYCDCABIAM2AgggASgCBCABIAQ2AgQgASgCACEAIAEgBjYCACAARQ0AIABBAnRBBBCwAQsPCwALqQEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBgACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAkEEELABDAELIAMgAkEEIAFBAnQiAhCXASIFRQ0CCyAAIAE2AgQgACAFNgIAIAZBEGokAA8LQZiPwABBMhC5AQALQQQgAhCUAQALowEBAn8jAEEgayIDJAACQCABRQRAQQFBACACEMYBIQAMAQsgAyABNgIMIAMgADYCCCADQRBqIANBCGoQLSADKAIQIgEEQANAIAMoAhQhBCADKAIcRQRAIAEgBCACEMYBIQAMAwtBASEAIAIgASAEEJkBDQIgAkH9/wMQnAENAiADQRBqIANBCGoQLSADKAIQIgENAAsLQQAhAAsgA0EgaiQAIAALiwEBAX8CQCACQQBOBEACfyADKAIEBEACQCADKAIIIgRFBEAMAQsgAygCACAEIAEgAhCXAQwCCwsgASACRQ0AGkH9zsAALQAAGiACIAEQpgELIgMEQCAAIAI2AgggACADNgIEIABBADYCAA8LIAAgAjYCCCAAIAE2AgQMAQsgAEEANgIECyAAQQE2AgALqwEBAn8jAEEgayIBJAACQCAAKAIEIgJBA0YgAkECSXINAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIABBKEEEELABIAFBIGokAAuaAQECfyMAQSBrIgEkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIAFBIGokAAuSAQEEfyMAQRBrIgIkAEEBIQQCQCABKAIUIgNBJyABKAIYIgUoAhAiAREAAA0AIAJBBGogACgCAEGBAhAiAkAgAi0ABEGAAUYEQCADIAIoAgggAREAAEUNAQwCCyADIAItAA4iACACQQRqaiACLQAPIABrIAUoAgwRAQANAQsgA0EnIAERAAAhBAsgAkEQaiQAIAQLlQEBAn8jAEEgayIDJAACQCAAKAIEIgRBA0YgBEECSXINAAJAAkAgAC0AGEEBaw4CAgABCyADQQE2AgggA0GshcAANgIEIANCADcCECADIANBHGo2AgwgA0EEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiBEUNACAAKAIMIARBDGxBBBCwAQsgAEEoQQQQsAEgA0EgaiQAC4QBAQN/An8CQCAAKAIAIgFFDQADQAJAIAAoAggiAyAAKAIETw0AIAEgA2otAABBxQBHDQAgACADQQFqNgIIDAILAkAgAkUNACAAKAIQIgFFDQBB+aTAAEECIAEQxgFFDQBBAQ8LQQEgAEEBEBMNAhogAkEBayECIAAoAgAiAQ0ACwtBAAsLegEBfyMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQmQEMAQsgAkEQaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEYaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIUIAEoAhggAkEIahApCyACQSBqJAALSQEDfiAAIAFC/////w+DIgJCPn4iA0IAIgIgAUIgiEI+fnwiAUIghnwiBDcDACAAIAMgBFatIAEgAlStQiCGIAFCIIiEfDcDCAt8AQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQQI2AhwgBUG8rsAANgIYIAVCAjcCJCAFIAVBEGqtQoCAgICADIQ3AzggBSAFQQhqrUKAgICAkAyENwMwIAUgBUEwajYCICAFQRhqIAQQhAEAC3gBA38CQCAAKAIAIgFBgICAgHhHBEAgAUUNASAAKAIEIAFBARCwAQ8LIAAtAARBA0cNACAAKAIIIgAoAgAhASAAQQRqKAIAIgMoAgAiAgRAIAEgAhEEAAsgAygCBCICBEAgASACIAMoAggQsAELIABBDEEEELABCwvzAwIIfwF+IwBBEGsiAyQAIAAoAgQhBSAAKAIAIQAgASgCFEG4rMAAQQEgASgCGCgCDBEBACEEIANBBGoiAkEAOgAFIAIgBDoABCACIAE2AgAgBQRAA0AgAyAANgIMIANBDGohCCMAQUBqIgEkAEEBIQYCQCADQQRqIgQtAAQNACAELQAFIQkCQCAEKAIAIgIoAhwiB0EEcUUEQCAJQQFxRQ0BIAIoAhRB667AAEECIAIoAhgoAgwRAQBFDQEMAgsgCUEBcUUEQCACKAIUQfWuwABBASACKAIYKAIMEQEADQIgAigCHCEHCyABQQE6ABsgASACKQIUNwIMIAFBzK7AADYCNCABIAFBG2o2AhQgASACKQIINwIkIAIpAgAhCiABIAc2AjggASACKAIQNgIsIAEgAi0AIDoAPCABIAo3AhwgASABQQxqNgIwIAggAUEcakGAmcAAKAIAEQAADQEgASgCMEHwrsAAQQIgASgCNCgCDBEBACEGDAELIAggAkGAmcAAKAIAEQAAIQYLIARBAToABSAEIAY6AAQgAUFAayQAIABBAWohACAFQQFrIgUNAAsLQQEhACADQQRqIgEtAARFBEAgASgCACIAKAIUQfauwABBASAAKAIYKAIMEQEAIQALIAEgADoABCADQRBqJAAgAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0HYscAANgIIIANCAjcCFCADQoCAgIDwAiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhAEAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZitwAA2AgggA0ICNwIUIANCgICAgPACIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhCEAQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIM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AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIMIQMCQAJAAkACQCACKAIEDgIAAQILIAMNAUEBIQJBACEDDAILIAMNACACKAIAIgIoAgQhAyACKAIAIQIMAQsgAEGAgICAeDYCACAAIAE2AgwgAEHglsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALIAAgAzYCBCAAIAI2AgAgAEHElsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALJQAgAEUEQEGYj8AAQTIQuQEACyAAIAIgAyAEIAUgASgCEBEIAAsoACABIAAoAgAtAABBAnQiAEHkp8AAaigCACAAQdCnwABqKAIAEJkBCyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQEQkACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERIACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERwACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQER4ACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQESAACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARCwAQsLJwAgAEEcakEAIAJC2KGkg7Hi0d18URtBACABQpXX3ZjDl4qMC1EbCyEAIABFBEBBmI/AAEEyELkBAAsgACACIAMgASgCEBEDAAsfACAARQRAQZiPwABBMhC5AQALIAAgAiABKAIQEQAAC+MVAQx/EDMiBCABJgECfyAAIQYQMyIAIAImASMAQdAAayIIJAAgCCAANgIYIAggBDYCFCAIQRRqKAIAEMoBIQtBvM7AACgCAEUEQEHkzsAAQQA2AgBB2M7AAEEANgIAQczOwABBADYCAEHAzsAAQQA2AgBB4M7AACgCACEFQeDOwABBBDYCAEHczsAAKAIAIQ1B3M7AAEEANgIAQdTOwAAoAgAhA0HUzsAAQQQ2AgBB0M7AACgCACEJQdDOwABBADYCAEHIzsAAKAIAIQRByM7AAEECNgIAQcTOwAAoAgAhB0HEzsAAQQA2AgBBvM7AACgCACEAQbzOwABBATYCAAJAIABFDQAgBwRAIAQgB0EBdEECELABCyAJBEAgAyAJQQJ0QQQQsAELIA1FDQAgBSAN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IABBAWshACACQRBJIAJBBHYhAkUNAAsgAEGAAWoiAkGBAUkEQCABQZyvwABBAiAAIARqQYABakEAIABrECEgASAFNgIcIAEgBzYCBCABIAY2AgAgBEGAAWokAAwBCyACQYABQYyvwAAQaAALCwwAIAAgASkCADcDAAsNACABQfCYwABBAhAeCw0AIABBhJzAACABECkLDgAgAUGvm8AAQQUQmQELDgAgAUG8p8AAQRIQmQELDQAgAEHQqcAAIAEQKQsOACABQcipwABBBRCZAQsZACAAIAFBjM/AACgCACIAQTogABsRAgAACw0AIABBzK7AACABECkLCgAgAiAAIAEQHguQBQEHfwJAAn8CQCACIgUgACABa0sEQCABIAJqIQMgACACaiECIAAgBUEQSQ0CGiACQXxxIQRBACACQQNxIgZrIQcgBgRAIANBAWshAANAIAJBAWsiAiAALQAAOgAAIABBAWshACACIARLDQALCyAEIAUgBmsiBkF8cSIFayECIAMgB2oiA0EDcQRAIAVBAEwNAiADQQN0IgBBGHEhByADQXxxIghBBGshAUEAIABrQRhxIQkgCCgCACEAA0AgBEEEayIEIAAgCXQgASgCACIAIAd2cjYCACABQQRrIQEgAiAESQ0ACwwCCyAFQQBMDQEgASAGakEEayEBA0AgBEEEayIEIAEoAgA2AgAgAUEEayEBIAIgBEkNAAsMAQsCQCAFQRBJBEAgACECDAELIABBACAAa0EDcSIDaiEEIAMEQCAAIQIgASEAA0AgAiAALQAAOgAAIABBAWohACACQQFqIgIgBEkNAAsLIAQgBSADayIFQXxxIgZqIQICQCABIANqIgNBA3EEQCAGQQBMDQEgA0EDdCIAQRhxIQcgA0F8cSIIQQRqIQFBACAAa0EYcSEJIAgoAgAhAANAIAQgACAHdiABKAIAIgAgCXRyNgIAIAFBBGohASAEQQRqIgQgAkkNAAsMAQsgBkEATA0AIAMhAQNAIAQgASgCADYCACABQQRqIQEgBEEEaiIEIAJJDQALCyAFQQNxIQUgAyAGaiEBCyAFRQ0CIAIgBWohAANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIABJDQALDAILIAZBA3EiAEUNASADIAVrIQMgAiAAawshACADQQFrIQEDQCACQQFrIgIgAS0AADoA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YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwB0AxAATwAAAGgDAAA0AAAAdAMQAE8AAABvAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAAA4EEABLAAAAxAcAAB0AAAAOBBAASwAAAMwHAAAdAAAAHAAAAAwAAAAEAAAAHQAAAB4AAAAfAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnPJBBAASwAAAMAFAAANAAAAAAAAABAAAAAEAAAAIgAAACMAAAAkAAAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAAVAUQAF4AAABnBAAADgAAAAEAAAAAAAAAOiAAAMwFEAACAAAACgpDYXVzZWQgYnk6CgAAACUAAAAMAAAABAAAACYAAAAnAAAAHwAAAAoKc3RhY2sgYmFja3RyYWNlOlN0YWNrIGJhY2t0cmFjZToKABIGEAARAAAAUwBBuIzAAAvZBAEAAAAoAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQDJBBAASwAAAHsKAAAOAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc4gGEABMAAAALQoAACQAAAAAAAAAEAAAAAQAAAAiAAAAIwAAACQAAAAgICAgOiAAAAEAAAAAAAAAAAcQAAIAAAAgICAgICAgL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnMAGwcQAFwAAAD7GAAAAQAAAAAAAAAEAAAABAAAADUAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZMoHEAAqAAAAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMA/AcQAF8AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AABsCBAADgAAAPwHEABfAAAAegIAAA0AQZyRwAALlQ8EAAAABAAAADsAAAA6AAAAPAAAAAwAAAAEAAAAPQAAAD4AAAA/AAAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAMQIEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADECBAAKQAAAK4EAAANAAAAc3RkL3NyYy9iYWNrdHJhY2UucnNvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtgAkQACgAAAAkAAAAAAAAAAIAAACoCRAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAGwJEAAUAAAAigEAAB0AAABAAAAAEAAAAAQAAABBAAAAQgAAAAEAAAAAAAAAOiBzdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzABYKEAAZAAAA0AAAABMAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleEAKEAAgAAAAc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzaAoQACQAAAAUAAAACQAAAHN0ZC9zcmMvc3luYy9vbmNlLnJznAoQABQAAACeAAAAMgAAADx1bmtub3duPu+/vW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAMwKEAAVAAAA4QoQAA0AAABzdGQvc3JjL2FsbG9jLnJzAAsQABAAAABjAQAACQAAAAoAAAA8AAAADAAAAAQAAABDAAAAAAAAAAgAAAAEAAAARAAAAAAAAAAIAAAABAAAAEUAAABGAAAARwAAAEgAAABJAAAAEAAAAAQAAABKAAAASwAAAEwAAABNAAAAc3RkL3NyYy8uLi8uLi9iYWNrdHJhY2Uvc3JjL3N5bWJvbGl6ZS9tb2QucnN8CxAALAAAAGcBAAAwAAAAAQAAAAAAAAAUChAAAgAAACAtIAABAAAAAAAAAMgLEAADAAAAICAgICAgICAgICAgICAgICAgIGF0IAAAqAgQAAEAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAPwLEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHkwDBAAOAAAACgpAAAAAAAABAAAAAQAAABRAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnOEDBAAUAAAAKYAAAAFAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwDkDBAATwAAAMgFAAAUAAAA5AwQAE8AAADIBQAAIQAAAOQMEABPAAAAvAUAACEAAAAwMTIzNDU2Nzg5YWJjZGVmAAAAAAAAAAABAAAAUgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVFcnJvckVtcHR5SW52YWxpZERpZ2l0UG9zT3ZlcmZsb3dOZWdPdmVyZmxvd1plcm8AAAAAAAQAAAAEAAAAUwAAAFBhcnNlSW50RXJyb3JraW5kAAAAAAAAAAwAAAAEAAAAVAAAAFUAAABWAAAA5AwQAE8AAABMBAAAJAAAAOQMEABPAAAAvgEAADcAAABfWk4vcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvbGVnYWN5LnJzAAAAPw4QAC4AAAA9AAAACwAAAD8OEAAuAAAAOgAAAAsAAAA/DhAALgAAADYAAAALAAAAPw4QAC4AAABmAAAAHAAAAD8OEAAuAAAAbwAAACcAAAA/DhAALgAAAHAAAAAdAAAAPw4QAC4AAAByAAAAIQAAAD8OEAAuAAAAcwAAABoAAAA/DhAALgAAAHQAAAAZAAAAOjoAAD8OEAAuAAAAfgAAAB0AAAA/DhAALgAAALQAAAAmAAAAPw4QAC4AAAC1AAAAIQAAAD8OEAAuAAAAigAAAEkAAAA/DhAALgAAAIsAAAAfAAAAPw4QAC4AAACLAAAALwAAAEMAAAA/DhAALgAAAJ0AAAA1AAAALCkoPjwmKkA/DhAALgAAAIIAAAAsAAAAPw4QAC4AAACEAAAAJQAAAC4AAAA/DhAALgAAAIcAAAAlAAAAAAAAAAEAAAABAAAAVwAAAD8OEAAuAAAAcgAAAEgAAABfX1IvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvdjAucnMAAADXDxAAKgAAADIAAAATAAAA1w8QACoAAAAvAAAAEwAAANcPEAAqAAAAKwAAABMAQbygwAAL6QkBAAAAWAAAAGBmbXQ6OkVycm9yYHMgc2hvdWxkIGJlIGltcG9zc2libGUgd2l0aG91dCBhIGBmbXQ6OkZvcm1hdHRlcmAAAADXDxAAKgAAAEsAAAAOAAAA1w8QACoAAABaAAAAKAAAANcPEAAqAAAAigAAAA0AAABwdW55Y29kZXstfTDXDxAAKgAAAB4BAAAxAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdcPEAAqAAAAMQEAABYAAADXDxAAKgAAADQBAABHAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc3RyOjpmcm9tX3V0ZjgoKSA9ICB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGNoYXIsIGJ1dCAgY2hhcnMgd2VyZSBmb3VuZBgREAA5AAAAUREQAAQAAABVERAAIgAAAHcREAARAAAA1w8QACoAAABcAQAAGgAAAGJvb2xjaGFyc3RyaThpMTZpMzJpNjRpMTI4aXNpemV1OHUxNnUzMnU2NHUxMjh1c2l6ZWYzMmY2NCFfLi4uAADXDxAAKgAAAL8BAAAfAAAA1w8QACoAAAAeAgAAHgAAANcPEAAqAAAAIwIAACIAAADXDxAAKgAAACQCAAAlAAAA1w8QACoAAACHAgAAEQAAAHtpbnZhbGlkIHN5bnRheH17cmVjdXJzaW9uIGxpbWl0IHJlYWNoZWR9Pydmb3I8PiAsIFtdOjp7Y2xvc3VyZXNoaW06IyBhcyAgbXV0IGNvbnN0IDsgZHluICArIHVuc2FmZSBleHRlcm4gItcPEAAqAAAA1AMAAC0AAAAiIGZuKCAtPiAgPSBmYWxzZXRydWV7IHsgIH06IDB4ANcPEAAqAAAAygQAAC0AAAAubGx2bS4vcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvbGliLnJzAAAA+hIQACsAAABiAAAAGwAAAPoSEAArAAAAaQAAABMAAAABAAAAAAAAAHtzaXplIGxpbWl0IHJlYWNoZWR9AAAAAAAAAAABAAAAWQAAAGBmbXQ6OkVycm9yYCBmcm9tIGBTaXplTGltaXRlZEZtdEFkYXB0ZXJgIHdhcyBkaXNjYXJkZWQA+hIQACsAAABTAQAAHgAAAFNpemVMaW1pdEV4aGF1c3RlZAAABQAAAAwAAAALAAAACwAAAAQAAAC0DRAAuQ0QAMUNEADQDRAA2w0QAAIAAAAEAAAABAAAAAMAAAADAAAAAwAAAAQAAAACAAAABQAAAAUAAAAEAAAAAwAAAAMAAAAEAAAABAAAAAEAAAAEAAAABAAAAAMAAAADAAAAAgAAAAMAAAAEAAAAAwAAAAMAAAABAAAAwxEQALgREAC8ERAA7hEQAMAREADrERAAuBEQANcREADSERAA5hEQALgREADIERAA3BEQAM4READiERAA8hEQALgREAC4ERAAxREQANkREABwDBAA8xEQALgREADLERAA3xEQAPEREABFcnJvcgAAAFoAAAAMAAAABAAAAFsAAABcAAAAXQAAAGNhcGFjaXR5IG92ZXJmbG93AAAA6BQQABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5ycwQVEAAUAAAAGAAAAAUAQbCqwAALsAoBAAAAXgAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAjhUQABAAAAB+AgAADgAAAGZyb21fc3RyX3JhZGl4X2ludDogbXVzdCBsaWUgaW4gdGhlIHJhbmdlIGBbMiwgMzZdYCAtIGZvdW5kILAVEAA8AAAALi4wMTIzNDU2Nzg5YWJjZGVmQm9ycm93TXV0RXJyb3JhbHJlYWR5IGJvcnJvd2VkOiAAABQWEAASAAAAAQAAAAAAAABbY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAABkFhAAIAAAAIQWEAASAAAAPT0hPW1hdGNoZXNhc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAAsxYQABAAAADDFhAAFwAAANoWEAAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAALMWEAAQAAAA/BYQABAAAAAMFxAACQAAANoWEAAJAAAAOiAAAAEAAAAAAAAAOBcQAAIAAAAAAAAADAAAAAQAAABlAAAAZgAAAGcAAAAgICAgIHsgLCAgewosCn0gfQpdY29yZS9zcmMvZm10L251bS5ycwAAdxcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTljb3JlL3NyYy9mbXQvbW9kLnJzZmFsc2V0cnVlAABmGBAAEwAAAKMJAAAmAAAAZhgQABMAAACsCQAAGgAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2Yg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",typeof document>"u"?require("url").pathToFileURL(__filename).href:SI&&SI.tagName.toUpperCase()==="SCRIPT"&&SI.src||new URL("spark.cjs.min.js",document.baseURI).href));const A=Ds();(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));const{instance:I,module:g}=await us(await t,A);return ys(I,g)}const TA=-9,ws=9,VA=(ws-TA)/254,ds=11,ps=11,j=1<<ds,It=1<<ps,ng=1;function rt(t){return t==="bool"||t==="bvec2"||t==="bvec3"||t==="bvec4"}function ct(t){return t==="int"||t==="uint"||t==="float"}function lA(t){return t==="int"||t==="ivec2"||t==="ivec3"||t==="ivec4"}function uA(t){return t==="uint"||t==="uvec2"||t==="uvec3"||t==="uvec4"}function Wt(t){return t==="float"||t==="vec2"||t==="vec3"||t==="vec4"}function og(t){return t==="mat2"||t==="mat2x2"||t==="mat2x3"||t==="mat2x4"||t==="mat3"||t==="mat3x2"||t==="mat3x3"||t==="mat3x4"||t==="mat4"||t==="mat4x2"||t==="mat4x3"||t==="mat4x4"}function et(t){return Wt(t)||og(t)}function St(t){return t==="vec2"||t==="ivec2"||t==="uvec2"}function Nt(t){return t==="vec3"||t==="ivec3"||t==="uvec3"}function Ot(t){return t==="vec4"||t==="ivec4"||t==="uvec4"}function fs(t){return St(t)||Nt(t)||Ot(t)}function Qt(t){return t==="mat2"||t==="mat2x2"}function st(t){return t==="mat3"||t==="mat3x3"}function Ct(t){return t==="mat4"||t==="mat4x4"}function rg(t){switch(t){case"vec2":return"float";case"vec3":return"float";case"vec4":return"float";case"ivec2":return"int";case"ivec3":return"int";case"ivec4":return"int";case"uvec2":return"uint";case"uvec3":return"uint";case"uvec4":return"uint";default:throw new Error(`Invalid vector type: ${t}`)}}function cg(t){switch(t){case"vec2":case"ivec2":case"uvec2":return 2;case"vec3":case"ivec3":case"uvec3":return 3;case"vec4":case"ivec4":case"uvec4":return 4;default:throw new Error(`Invalid vector type: ${t}`)}}function Fs(t){if(ct(t))return"float";if(St(t))return"vec2";if(Nt(t))return"vec3";if(Ot(t))return"vec4";throw new Error(`Invalid vector type: ${t}`)}function hg(t){if(ct(t))return"uint";if(St(t))return"uvec2";if(Nt(t))return"uvec3";if(Ot(t))return"uvec4";throw new Error(`Invalid vector type: ${t}`)}function Gs(t){if(ct(t))return"int";if(St(t))return"ivec2";if(Nt(t))return"ivec3";if(Ot(t))return"ivec4";throw new Error(`Invalid vector type: ${t}`)}function lg(t){if(typeof t=="string")return t;if(typeof t=="object"&&t.type)return t.type;throw new Error(`Invalid DynoType: ${String(t)}`)}function eA(t){return Math.trunc(t).toString()}function QA(t){return`${Math.max(0,Math.trunc(t)).toString()}u`}function K(t){return t===Number.POSITIVE_INFINITY?"INFINITY":t===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(t)?t.toFixed(1):t.toString()}function z(t){return t instanceof gt?t.type:t.dynoOut().type}class gt{constructor(A){this.__isDynoValue=!0,this.type=A}}class v extends gt{constructor(A,I){super(A.outTypes[I]),this.dyno=A,this.key=I}}class pt extends gt{constructor(A,I){super(A),this.literal=I}getLiteral(){return this.literal}}function CI(t,A){return new pt(t,A)}class ug extends pt{constructor(A,I){super(A,""),this.value=I}getLiteral(){const{type:A,value:I}=this;switch(A){case"bool":return I?"true":"false";case"uint":return QA(I);case"int":return eA(I);case"float":return K(I);case"bvec2":{const g=I;return`bvec2(${g[0]}, ${g[1]})`}case"uvec2":{if(I instanceof n.Vector2)return`uvec2(${QA(I.x)}, ${QA(I.y)})`;const g=I;return`uvec2(${QA(g[0])}, ${QA(g[1])})`}case"ivec2":{if(I instanceof n.Vector2)return`ivec2(${eA(I.x)}, ${eA(I.y)})`;const g=I;return`ivec2(${eA(g[0])}, ${eA(g[1])})`}case"vec2":{if(I instanceof n.Vector2)return`vec2(${K(I.x)}, ${K(I.y)})`;const g=I;return`vec2(${K(g[0])}, ${K(g[1])})`}case"bvec3":{const g=I;return`bvec3(${g[0]}, ${g[1]}, ${g[2]})`}case"uvec3":{if(I instanceof n.Vector3)return`uvec3(${QA(I.x)}, ${QA(I.y)}, ${QA(I.z)})`;const g=I;return`uvec3(${QA(g[0])}, ${QA(g[1])}, ${QA(g[2])})`}case"ivec3":{if(I instanceof n.Vector3)return`ivec3(${eA(I.x)}, ${eA(I.y)}, ${eA(I.z)})`;const g=I;return`ivec3(${eA(g[0])}, ${eA(g[1])}, ${eA(g[2])})`}case"vec3":{if(I instanceof n.Vector3)return`vec3(${K(I.x)}, ${K(I.y)}, ${K(I.z)})`;const g=I;return`vec3(${K(g[0])}, ${K(g[1])}, ${K(g[2])})`}case"bvec4":{const g=I;return`bvec4(${g[0]}, ${g[1]}, ${g[2]}, ${g[3]})`}case"uvec4":{if(I instanceof n.Vector4)return`uvec4(${QA(I.x)}, ${QA(I.y)}, ${QA(I.z)}, ${QA(I.w)})`;const g=I;return`uvec4(${QA(g[0])}, ${QA(g[1])}, ${QA(g[2])}, ${QA(g[3])})`}case"ivec4":{if(I instanceof n.Vector4)return`ivec4(${eA(I.x)}, ${eA(I.y)}, ${eA(I.z)}, ${eA(I.w)})`;const g=I;return`ivec4(${eA(g[0])}, ${eA(g[1])}, ${eA(g[2])}, ${eA(g[3])})`}case"vec4":{if(I instanceof n.Vector4)return`vec4(${K(I.x)}, ${K(I.y)}, ${K(I.z)}, ${K(I.w)})`;if(I instanceof n.Quaternion)return`vec4(${K(I.x)}, ${K(I.y)}, ${K(I.z)}, ${K(I.w)})`;const g=I;return`vec4(${K(g[0])}, ${K(g[1])}, ${K(g[2])}, ${K(g[3])})`}case"mat2":case"mat2x2":{const g=I,B=g instanceof n.Matrix2?g.elements:I,i=new Array(4).fill(0).map((e,Q)=>K(B[Q]));return`${A}(${i.join(", ")})`}case"mat2x3":{const g=I,B=new Array(6).fill(0).map((i,e)=>K(g[e]));return`${A}(${B.join(", ")})`}case"mat2x4":{const g=I,B=new Array(8).fill(0).map((i,e)=>K(g[e]));return`${A}(${B.join(", ")})`}case"mat3":case"mat3x3":{const g=I,B=g instanceof n.Matrix3?g.elements:I,i=new Array(9).fill(0).map((e,Q)=>K(B[Q]));return`${A}(${i.join(", ")})`}case"mat3x2":{const g=I,B=new Array(6).fill(0).map((i,e)=>K(g[e]));return`${A}(${B.join(", ")})`}case"mat3x4":{const g=I,B=new Array(12).fill(0).map((i,e)=>K(g[e]));return`${A}(${B.join(", ")})`}case"mat4":case"mat4x4":{const g=I,B=g instanceof n.Matrix4?g.elements:I,i=new Array(16).fill(0).map((e,Q)=>K(B[Q]));return`${A}(${i.join(", ")})`}case"mat4x2":{const g=I,B=new Array(8).fill(0).map((i,e)=>K(g[e]));return`${A}(${B.join(", ")})`}case"mat4x3":{const g=I,B=new Array(12).fill(0).map((i,e)=>K(g[e]));return`${A}(${B.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function q(t,A){return new ug(t,A)}function xt(t){const A=String(t);if(rt(t))return`${A}(false)`;if(et(t))return`${A}(0.0)`;if(lA(t))return`${A}(0)`;if(uA(t))return`${A}(0u)`;throw new Error(`Type not implemented: ${A}`)}function Ss(t){const A=String(t);if(rt(t))return`${A}(true)`;if(et(t))return`${A}(1.0)`;if(lA(t))return`${A}(1)`;if(uA(t))return`${A}(1u)`;throw new Error(`Type not implemented: ${A}`)}function Ns(t){const A=String(t);if(rt(t))return`${A}(true)`;if(et(t))return`${A}(-1.0)`;if(lA(t))return`${A}(-1)`;if(uA(t))return`${A}(0xFFFFFFFFu)`;throw new Error(`Type not implemented: ${A}`)}const tg=" ";class Dg{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=tg,this.indent=A??tg}nextSequence(){return this.sequence++}}class W{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:i,statements:e,generate:Q}){this.inTypes=A??{},this.outTypes=I??{},this.inputs=g??{},this.update=B,this.globals=i,this.statements=e,this.generate=Q??(({inputs:s,outputs:E,compile:a})=>{var C,o;return{globals:(C=this.globals)==null?void 0:C.call(this,{inputs:s,outputs:E,compile:a}),statements:(o=this.statements)==null?void 0:o.call(this,{inputs:s,outputs:E,compile:a})}})}get outputs(){const A={};for(const I in this.outTypes)A[I]=new v(this,I);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:I,compile:g}){const B=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(I).join(", ")})`],i=[];for(const E in I){const a=I[E];a&&!g.declares.has(a)&&(g.declares.add(a),i.push(E))}const{globals:e,statements:Q,uniforms:s}=this.generate({inputs:A,outputs:I,compile:g});for(const E of e??[])g.globals.add(E);for(const E in s)g.uniforms[E]=s[E];this.update&&g.updaters.push(this.update);for(const E of i){const a=I[E];a&&(g.uniforms[a]||B.push(`${KI(a,this.outTypes[E])};`))}return Q!=null&&Q.length&&(B.push("{"),B.push(...Q.map(E=>g.indent+E)),B.push("}")),B}}class vA extends W{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:i,construct:e}){super({inTypes:A,outTypes:I,inputs:g,update:B,globals:i,generate:Q=>this.generateBlock(Q)}),this.construct=e}generateBlock({inputs:A,outputs:I,compile:g}){var h,c;const B={},i={};for(const l in A)A[l]!=null&&(B[l]=new pt(this.inTypes[l],A[l]));for(const l in I)I[l]!=null&&(i[l]=new gt(this.outTypes[l]));const e={roots:[]},Q=this.construct(B,i,e);for(const l of((h=this.globals)==null?void 0:h.call(this,{inputs:A,outputs:I,compile:g}))??[])g.globals.add(l);const s=[],E=new Map;function a(l,u,D){let y=E.get(l);if(!y){y={sequence:g.nextSequence(),outNames:new Map,newOuts:new Set},E.set(l,y);for(const d in l.inputs){let w=l.inputs[d];for(;w;){if(w instanceof gt){w instanceof v&&a(w.dyno,w.key);break}w=w.dynoOut()}}s.push(l)}u&&(D||y.newOuts.add(u),y.outNames.set(u,D??`${u}_${y.sequence}`))}for(const l of e.roots)a(l);for(const l in i){let u=(Q==null?void 0:Q[l])??i[l];for(;u;){if(u instanceof gt){u instanceof v&&a(u.dyno,u.key,I[l]);break}u=u.dynoOut()}i[l]=u}const C=[];for(const l of s){const u={},D={};for(const w in l.inputs){let F=l.inputs[w];for(;F;){if(F instanceof gt){if(F instanceof pt)u[w]=F.getLiteral();else if(F instanceof v){const m=(c=E.get(F.dyno))==null?void 0:c.outNames.get(F.key);if(!m)throw new Error(`Source not found for ${F.dyno.constructor.name}.${F.key}`);u[w]=m}break}F=F.dynoOut()}}const y=E.get(l)??{outNames:new Map};for(const[w,F]of y.outNames.entries())D[w]=F;const d=l.compile({inputs:u,outputs:D,compile:g});C.push(d)}const o=[];for(const l in I)i[l]instanceof pt&&o.push(`${I[l]} = ${i[l].getLiteral()};`);return o.length>0&&C.push(o),{statements:C.flatMap((l,u)=>u===0?l:["",...l])}}}function kA(t,A,I,{update:g,globals:B}={}){return new vA({inTypes:t,outTypes:A,construct:I,update:g,globals:B})}function Vt({inTypes:t,outTypes:A,inputs:I,update:g,globals:B,statements:i,generate:e}){return new W({inTypes:t,outTypes:A,inputs:I,update:g,globals:B,statements:i,generate:e})}function KI(t,A,I){const g=typeof A=="string"?A:A.type;if(!g)throw new Error(`Invalid DynoType: ${String(A)}`);return`${g} ${t}${I!=null?`[${I}]`:""}`}function YA(t){var i;let A=!1;const I=t.split(`
2
- `).map(e=>{const Q=e.trimEnd();return A?Q:Q.length>0?(A=!0,Q):null}).filter(e=>e!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(i=I[0].match(/^\s*/))==null?void 0:i[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(e=>e.replace(B,""))}function rA(t){return YA(t).join(`
3
- `)}class N extends W{constructor({a:A,outKey:I,outTypeFunc:g}){const B={a:z(A)},i=g(z(A)),e={[I]:i};super({inTypes:B,outTypes:e,inputs:{a:A}}),this.outKey=I}dynoOut(){return new v(this,this.outKey)}}class $ extends W{constructor({a:A,b:I,outKey:g,outTypeFunc:B}){const i={a:z(A),b:z(I)},e=B(z(A),z(I)),Q={[g]:e};super({inTypes:i,outTypes:Q,inputs:{a:A,b:I}}),this.outKey=g}dynoOut(){return new v(this,this.outKey)}}class ht extends W{constructor({a:A,b:I,c:g,outKey:B,outTypeFunc:i}){const e={a:z(A),b:z(I),c:z(g)},Q=i(z(A),z(I),z(g)),s={[B]:Q};super({inTypes:e,outTypes:s,inputs:{a:A,b:I,c:g}}),this.outKey=B}dynoOut(){return new v(this,this.outKey)}}const _={type:"Gsplat"},Pt={type:"PackedSplats"},ms=t=>new wg({packedSplats:t}),bt=(t,A)=>new pg({packedSplats:t,index:A}),yg=(t,A,I,g)=>new fg({packedSplats:t,index:A,base:I,count:g}),at=t=>new Fg({gsplat:t}),Bt=({gsplat:t,flags:A,index:I,center:g,scales:B,quaternion:i,rgba:e,rgb:Q,opacity:s,x:E,y:a,z:C,r:o,g:r,b:h})=>new Gg({gsplat:t,flags:A,index:I,center:g,scales:B,quaternion:i,rgba:e,rgb:Q,opacity:s,x:E,y:a,z:C,r:o,g:r,b:h}),RI=t=>new Ng({gsplat:t}),qI=(t,{scale:A,rotate:I,translate:g,recolor:B})=>new mg({gsplat:t,scale:A,rotate:I,translate:g,recolor:B}),MA=rA(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const nA=require("three");var Ne=typeof document<"u"?document.currentScript:null;function wg(t){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(A,e,s.get?s:{enumerable:!0,get:()=>t[e]})}}return A.default=t,Object.freeze(A)}const B=wg(nA);var EA=Uint8Array,wt=Uint16Array,Dg=Int32Array,ls=new EA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),us=new EA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),fg=new EA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ds=function(t,A){for(var e=new wt(31),s=0;s<31;++s)e[s]=A+=1<<t[s-1];for(var i=new Dg(e[30]),s=1;s<30;++s)for(var n=e[s];n<e[s+1];++n)i[n]=n-e[s]<<5|s;return{b:e,r:i}},ps=ds(ls,2),ys=ps.b,mg=ps.r;ys[28]=258,mg[258]=28;var xg=ds(us,0),Sg=xg.b,be=new wt(32768);for(var iA=0;iA<32768;++iA){var At=(iA&43690)>>1|(iA&21845)<<1;At=(At&52428)>>2|(At&13107)<<2,At=(At&61680)>>4|(At&3855)<<4,be[iA]=((At&65280)>>8|(At&255)<<8)>>1}var Tt=function(t,A,e){for(var s=t.length,i=0,n=new wt(A);i<s;++i)t[i]&&++n[t[i]-1];var a=new wt(A);for(i=1;i<A;++i)a[i]=a[i-1]+n[i-1]<<1;var r;if(e){r=new wt(1<<A);var g=15-A;for(i=0;i<s;++i)if(t[i])for(var I=i<<4|t[i],Q=A-t[i],o=a[t[i]-1]++<<Q,C=o|(1<<Q)-1;o<=C;++o)r[be[o]>>g]=I}else for(r=new wt(s),i=0;i<s;++i)t[i]&&(r[i]=be[a[t[i]-1]++]>>15-t[i]);return r},Wt=new EA(288);for(var iA=0;iA<144;++iA)Wt[iA]=8;for(var iA=144;iA<256;++iA)Wt[iA]=9;for(var iA=256;iA<280;++iA)Wt[iA]=7;for(var iA=280;iA<288;++iA)Wt[iA]=8;var ws=new EA(32);for(var iA=0;iA<32;++iA)ws[iA]=5;var Mg=Tt(Wt,9,1),Fg=Tt(ws,5,1),ke=function(t){for(var A=t[0],e=1;e<t.length;++e)t[e]>A&&(A=t[e]);return A},vA=function(t,A,e){var s=A/8|0;return(t[s]|t[s+1]<<8)>>(A&7)&e},Ge=function(t,A){var e=A/8|0;return(t[e]|t[e+1]<<8|t[e+2]<<16)>>(A&7)},Ds=function(t){return(t+7)/8|0},mt=function(t,A,e){return(A==null||A<0)&&(A=0),(e==null||e>t.length)&&(e=t.length),new EA(t.subarray(A,e))},Ng=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],fA=function(t,A,e){var s=new Error(A||Ng[t]);if(s.code=t,Error.captureStackTrace&&Error.captureStackTrace(s,fA),!e)throw s;return s},fs=function(t,A,e,s){var i=t.length,n=s?s.length:0;if(!i||A.f&&!A.l)return e||new EA(0);var a=!e,r=a||A.i!=2,g=A.i;a&&(e=new EA(i*3));var I=function(DA){var SA=e.length;if(DA>SA){var hA=new EA(Math.max(SA*2,DA));hA.set(e),e=hA}},Q=A.f||0,o=A.p||0,C=A.b||0,E=A.l,l=A.d,c=A.m,h=A.n,u=i*8;do{if(!E){Q=vA(t,o,1);var p=vA(t,o+1,3);if(o+=3,p)if(p==1)E=Mg,l=Fg,c=9,h=5;else if(p==2){var S=vA(t,o,31)+257,m=vA(t,o+10,15)+4,f=S+vA(t,o+5,31)+1;o+=14;for(var w=new EA(f),R=new EA(19),M=0;M<m;++M)R[fg[M]]=vA(t,o+M*3,7);o+=m*3;for(var x=ke(R),L=(1<<x)-1,N=Tt(R,x,1),M=0;M<f;){var k=N[vA(t,o,L)];o+=k&15;var d=k>>4;if(d<16)w[M++]=d;else{var U=0,v=0;for(d==16?(v=3+vA(t,o,3),o+=2,U=w[M-1]):d==17?(v=3+vA(t,o,7),o+=3):d==18&&(v=11+vA(t,o,127),o+=7);v--;)w[M++]=U}}var AA=w.subarray(0,S),z=w.subarray(S);c=ke(AA),h=ke(z),E=Tt(AA,c,1),l=Tt(z,h,1)}else fA(1);else{var d=Ds(o)+4,y=t[d-4]|t[d-3]<<8,D=d+y;if(D>i){g&&fA(0);break}r&&I(C+y),e.set(t.subarray(d,D),C),A.b=C+=y,A.p=o=D*8,A.f=Q;continue}if(o>u){g&&fA(0);break}}r&&I(C+131072);for(var sA=(1<<c)-1,tA=(1<<h)-1,V=o;;V=o){var U=E[Ge(t,o)&sA],J=U>>4;if(o+=U&15,o>u){g&&fA(0);break}if(U||fA(2),J<256)e[C++]=J;else if(J==256){V=o,E=null;break}else{var Z=J-254;if(J>264){var M=J-257,P=ls[M];Z=vA(t,o,(1<<P)-1)+ys[M],o+=P}var X=l[Ge(t,o)&tA],b=X>>4;X||fA(3),o+=X&15;var z=Sg[b];if(b>3){var P=us[b];z+=Ge(t,o)&(1<<P)-1,o+=P}if(o>u){g&&fA(0);break}r&&I(C+131072);var yA=C+Z;if(C<z){var IA=n-z,wA=Math.min(z,yA);for(IA+C<0&&fA(3);C<wA;++C)e[C]=s[IA+C]}for(;C<yA;++C)e[C]=e[C-z]}}A.l=E,A.p=V,A.b=C,A.f=Q,E&&(Q=1,A.m=c,A.d=l,A.n=h)}while(!Q);return C!=e.length&&a?mt(e,0,C):e.subarray(0,C)},kg=new EA(0),HA=function(t,A){return t[A]|t[A+1]<<8},YA=function(t,A){return(t[A]|t[A+1]<<8|t[A+2]<<16|t[A+3]<<24)>>>0},Re=function(t,A){return YA(t,A)+YA(t,A+4)*4294967296},Gg=function(t){(t[0]!=31||t[1]!=139||t[2]!=8)&&fA(6,"invalid gzip data");var A=t[3],e=10;A&4&&(e+=(t[10]|t[11]<<8)+2);for(var s=(A>>3&1)+(A>>4&1);s>0;s-=!t[e++]);return e+(A&2)},Ue=function(){function t(A,e){typeof A=="function"&&(e=A,A={}),this.ondata=e;var s=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:s?s.length:0},this.o=new EA(32768),this.p=new EA(0),s&&this.o.set(s)}return t.prototype.e=function(A){if(this.ondata||fA(5),this.d&&fA(4),!this.p.length)this.p=A;else if(A.length){var e=new EA(this.p.length+A.length);e.set(this.p),e.set(A,this.p.length),this.p=e}},t.prototype.c=function(A){this.s.i=+(this.d=A||!1);var e=this.s.b,s=fs(this.p,this.s,this.o);this.ondata(mt(s,e,this.s.b),this.d),this.o=mt(s,this.s.b-32768),this.s.b=this.o.length,this.p=mt(this.p,this.s.p/8|0),this.s.p&=7},t.prototype.push=function(A,e){this.e(A),this.c(e)},t}();function Rg(t,A){return fs(t,{i:2},A&&A.out,A&&A.dictionary)}var ms=function(){function t(A,e){this.v=1,this.r=0,Ue.call(this,A,e)}return t.prototype.push=function(A,e){if(Ue.prototype.e.call(this,A),this.r+=A.length,this.v){var s=this.p.subarray(this.v-1),i=s.length>3?Gg(s):4;if(i>s.length){if(!e)return}else this.v>1&&this.onmember&&this.onmember(this.r-s.length);this.p=s.subarray(i),this.v=0}Ue.prototype.c.call(this,e),this.s.f&&!this.s.l&&!e&&(this.v=Ds(this.s.p)+9,this.s={i:0},this.o=new EA(0),this.push(new EA(0),e))},t}(),ve=typeof TextDecoder<"u"&&new TextDecoder,Ug=0;try{ve.decode(kg,{stream:!0}),Ug=1}catch{}var Lg=function(t){for(var A="",e=0;;){var s=t[e++],i=(s>127)+(s>223)+(s>239);if(e+i>t.length)return{s:A,r:mt(t,e-1)};i?i==3?(s=((s&15)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,A+=String.fromCharCode(55296|s>>10,56320|s&1023)):i&1?A+=String.fromCharCode((s&31)<<6|t[e++]&63):A+=String.fromCharCode((s&15)<<12|(t[e++]&63)<<6|t[e++]&63):A+=String.fromCharCode(s)}};function bg(t,A){if(A){for(var e="",s=0;s<t.length;s+=16384)e+=String.fromCharCode.apply(null,t.subarray(s,s+16384));return e}else{if(ve)return ve.decode(t);var i=Lg(t),n=i.s,e=i.r;return e.length&&fA(8),n}}var vg=function(t,A){return A+30+HA(t,A+26)+HA(t,A+28)},Yg=function(t,A,e){var s=HA(t,A+28),i=bg(t.subarray(A+46,A+46+s),!(HA(t,A+8)&2048)),n=A+46+s,a=YA(t,A+20),r=e&&a==4294967295?Jg(t,n):[a,YA(t,A+24),YA(t,A+42)],g=r[0],I=r[1],Q=r[2];return[HA(t,A+10),g,I,i,n+HA(t,A+30)+HA(t,A+32),Q]},Jg=function(t,A){for(;HA(t,A)!=1;A+=4+HA(t,A+2));return[Re(t,A+12),Re(t,A+4),Re(t,A+20)]};function Tg(t,A){for(var e={},s=t.length-22;YA(t,s)!=101010256;--s)(!s||t.length-s>65558)&&fA(13);var i=HA(t,s+8);if(!i)return{};var n=YA(t,s+16),a=n==4294967295||i==65535;if(a){var r=YA(t,s-12);a=YA(t,r)==101075792,a&&(i=YA(t,r+32),n=YA(t,r+48))}for(var g=A&&A.filter,I=0;I<i;++I){var Q=Yg(t,n,a),o=Q[0],C=Q[1],E=Q[2],l=Q[3],c=Q[4],h=Q[5],u=vg(t,h);n=c,(!g||g({name:l,size:C,originalSize:E,compression:o}))&&(o?o==8?e[l]=Rg(t.subarray(u,u+C),{out:new EA(E)}):fA(14,"unknown compression type "+o):e[l]=mt(t,u,u+C))}return e}let ZA;const xs=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&xs.decode();let vt=null;function Hg(){return(vt===null||vt.byteLength===0)&&(vt=new Uint8Array(ZA.memory.buffer)),vt}function qg(t,A){return t=t>>>0,xs.decode(Hg().subarray(t,t+A))}function Kg(t,A,e,s,i,n,a,r,g,I,Q){return ZA.raycast_splats(t,A,e,s,i,n,a,r,g,I,Q)}async function zg(t,A){if(typeof Response=="function"&&t instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(t,A)}catch(s){if(t.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",s);else throw s}const e=await t.arrayBuffer();return await WebAssembly.instantiate(e,A)}else{const e=await WebAssembly.instantiate(t,A);return e instanceof WebAssembly.Instance?{instance:e,module:t}:e}}function _g(){const t={};return t.wbg={},t.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},t.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},t.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},t.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},t.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},t.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},t.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,e,s){return new Float32Array(A,e>>>0,s>>>0)},t.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,e,s){return new Uint32Array(A,e>>>0,s>>>0)},t.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},t.wbg.__wbg_set_10bad9bee0e9c58b=function(A,e,s){A.set(e,s>>>0)},t.wbg.__wbg_set_d23661d19148b229=function(A,e,s){A.set(e,s>>>0)},t.wbg.__wbg_set_f4f1f0daa30696fc=function(A,e,s){A.set(e,s>>>0)},t.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,e,s){return A.subarray(e>>>0,s>>>0)},t.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,e,s){return A.subarray(e>>>0,s>>>0)},t.wbg.__wbindgen_init_externref_table=function(){const A=ZA.__wbindgen_export_0,e=A.grow(4);A.set(0,void 0),A.set(e+0,void 0),A.set(e+1,null),A.set(e+2,!0),A.set(e+3,!1)},t.wbg.__wbindgen_memory=function(){return ZA.memory},t.wbg.__wbindgen_throw=function(A,e){throw new Error(qg(A,e))},t}function Og(t,A){return ZA=t.exports,Ss.__wbindgen_wasm_module=A,vt=null,ZA.__wbindgen_start(),ZA}async function Ss(t){if(ZA!==void 0)return ZA;typeof t<"u"&&(Object.getPrototypeOf(t)===Object.prototype?{module_or_path:t}=t:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof t>"u"&&(t=new URL("data:application/wasm;base64,AGFzbQEAAAAB9wEkYAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAR/f39/AGABbwFvYANvb38AYAFvAX9gAAF/YAAAYAd/f39/f39/AX9gAX0BfWAGf39/f39/AGAEf39/fwF/YAF/AW9gAAFvYAd/f39/f39/AGACf34Bf2ADf35+AGACf34AYAt9fX19fX19fX9vfwFvYAZ/f39/f38Bf2AFf398f38AYAR/fH9/AGAFf399f38AYAR/fX9/AGAFf39+f38AYAR/fn9/AGADf35+AX9gA39vbwF/YAJ9fQF9AvIEEQN3YmcdX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgACgN3YmcaX193YmdfbmV3XzlmZWU5N2E0MDliMzJiNjgACgN3YmcaX193Ymdfc2V0X2Y0ZjFmMGRhYTMwNjk2ZmMACwN3YmcdX193YmdfbGVuZ3RoXzhjZmQyYzY0MDlhZjg4YWQADAN3YmcxX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfZjFkZWFkNDRkMWZjNzIxMgAHA3diZxpfX3diZ19uZXdfZTNiMzIxZGNmZWY4OWZjNwAKA3diZxpfX3diZ19zZXRfZDIzNjYxZDE5MTQ4YjIyOQALA3diZx1fX3diZ19sZW5ndGhfNmNhNTI3NjY1ZDg5Njk0ZAAMA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9lNmI3ZTY5YWNkNGM3MzU0AAcDd2JnGl9fd2JnX3NldF8xMGJhZDliZWUwZTljNThiAAsDd2JnHV9fd2JnX2xlbmd0aF8zYjRmMDIyMTg4YWU4ZGI2AAwDd2JnH19fd2JnX3N1YmFycmF5Xzc2OWUxZTBmODFiYjI1OWIABwN3YmcfX193Ymdfc3ViYXJyYXlfM2FhZWVjODliYjI1NDRmMAAHA3diZyRfX3diZ19uZXd3aXRobGVuZ3RoXzVhNWVmZTMxM2NmZDU5ZjEAEwN3YmcQX193YmluZGdlbl90aHJvdwACA3diZxFfX3diaW5kZ2VuX21lbW9yeQAUA3diZx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4DwAG+AQUAAAYPAAUFBQIAAQUBAgUIAwIDBAMFAQEBABACAhUCBQUNAwACAhECDwIBAAAAAAAAAgMNAAkAAgMCBgAEBAIBAAUEAxYAAgYEEQEJBAQAFwUAGAYEAAMDAwMBAgADDgEBAQACAgEDAQIAAAgDAgAAABkCGgAGCBsdHwQhCQEiBCMEAgUCEgABAAAABg0CAgICAgAAAAICAAIAAAAAAwMBAAQAAAAAAAIAAAACAAAAAAAAAgABAwIABQUQBQMECQJwAWhobwCAAQUDAQARBgkBfwFBgIDAAAsHVAUGbWVtb3J5AgALc29ydF9zcGxhdHMAkAEOcmF5Y2FzdF9zcGxhdHMAgwETX193YmluZGdlbl9leHBvcnRfMAEBEF9fd2JpbmRnZW5fc3RhcnQAEAmyAQEAQQELZ5EBpQGkAcgBowGfAcgBzgFfgQHJAXWiAZ8BzgFelgGgAVCNAWHNAbIBtwGRAaEBzgGRAXI9tQGaAaUBKE24AZEBcj62AYgBW4cBiAGFAY8BjgGHAYcBigGJAYsBe5MBvAGpAVJtugGRAXNBuwFmUWyoAacBqwF2qgG9AYwBY0lYyAGsAWdufL4BhgF5SL8BgAHAAcEBkQF3QMIBwwGYAZsBrQGuAYIBYCp0xQEKzdEEvgGEJAIJfwF+IwBBEGsiCCQAAn8CQAJAAkACQAJAAkAgAEH1AU8EQEEAIABBzf97Tw0HGiAAQQtqIgFBeHEhBUG80sAAKAIAIglFDQRBHyEHQQAgBWshBCAAQfT//wdNBEAgBUEGIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEHCyAHQQJ0QaDPwABqKAIAIgFFBEBBACEADAILQQAhACAFQRkgB0EBdmtBACAHQR9HG3QhAwNAAkAgASgCBEF4cSIGIAVJDQAgBiAFayIGIARPDQAgASECIAYiBA0AQQAhBCABIQAMBAsgASgCFCIGIAAgBiABIANBHXZBBHFqQRBqKAIAIgFHGyAAIAYbIQAgA0EBdCEDIAENAAsMAQtBuNLAACgCACICQRAgAEELakH4A3EgAEELSRsiBUEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgZBA3QiAEGw0MAAaiIDIABBuNDAAGooAgAiASgCCCIERwRAIAQgAzYCDCADIAQ2AggMAQtBuNLAACACQX4gBndxNgIACyABIABBA3I2AgQgACABaiIAIAAoAgRBAXI2AgQgAUEIagwHCyAFQcDSwAAoAgBNDQMCQAJAIAFFBEBBvNLAACgCACIARQ0GIABoQQJ0QaDPwABqKAIAIgIoAgRBeHEgBWshBCACIQEDQAJAIAIoAhAiAA0AIAIoAhQiAA0AIAEoAhghBwJAAkAgASABKAIMIgBGBEAgAUEUQRAgASgCFCIAG2ooAgAiAg0BQQAhAAwCCyABKAIIIgIgADYCDCAAIAI2AggMAQsgAUEUaiABQRBqIAAbIQMDQCADIQYgAiIAQRRqIABBEGogACgCFCICGyEDIABBFEEQIAIbaigCACICDQALIAZBADYCAAsgB0UNBCABIAEoAhxBAnRBoM/AAGoiAigCAEcEQCAHQRBBFCAHKAIQIAFGG2ogADYCACAARQ0FDAQLIAIgADYCACAADQNBvNLAAEG80sAAKAIAQX4gASgCHHdxNgIADAQLIAAoAgRBeHEgBWsiAiAEIAIgBEkiAhshBCAAIAEgAhshASAAIQIMAAsACwJAQQIgAHQiA0EAIANrciABIAB0cWgiBkEDdCIBQbDQwABqIgMgAUG40MAAaigCACIAKAIIIgRHBEAgBCADNgIMIAMgBDYCCAwBC0G40sAAIAJBfiAGd3E2AgALIAAgBUEDcjYCBCAAIAVqIgYgASAFayIDQQFyNgIEIAAgAWogAzYCAEHA0sAAKAIAIgQEQCAEQXhxQbDQwABqIQFByNLAACgCACECAn9BuNLAACgCACIFQQEgBEEDdnQiBHFFBEBBuNLAACAEIAVyNgIAIAEMAQsgASgCCAshBCABIAI2AgggBCACNgIMIAIgATYCDCACIAQ2AggLQcjSwAAgBjYCAEHA0sAAIAM2AgAgAEEIagwICyAAIAc2AhggASgCECICBEAgACACNgIQIAIgADYCGAsgASgCFCICRQ0AIAAgAjYCFCACIAA2AhgLAkACQCAEQRBPBEAgASAFQQNyNgIEIAEgBWoiAyAEQQFyNgIEIAMgBGogBDYCAEHA0sAAKAIAIgZFDQEgBkF4cUGw0MAAaiEAQcjSwAAoAgAhAgJ/QbjSwAAoAgAiBUEBIAZBA3Z0IgZxRQRAQbjSwAAgBSAGcjYCACAADAELIAAoAggLIQYgACACNgIIIAYgAjYCDCACIAA2AgwgAiAGNgIIDAELIAEgBCAFaiIAQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIEDAELQcjSwAAgAzYCAEHA0sAAIAQ2AgALIAFBCGoMBgsgACACckUEQEEAIQJBAiAHdCIAQQAgAGtyIAlxIgBFDQMgAGhBAnRBoM/AAGooAgAhAAsgAEUNAQsDQCAAIAIgACgCBEF4cSIDIAVrIgYgBEkiBxshCSAAKAIQIgFFBEAgACgCFCEBCyACIAkgAyAFSSIAGyECIAQgBiAEIAcbIAAbIQQgASIADQALCyACRQ0AIAVBwNLAACgCACIATSAEIAAgBWtPcQ0AIAIoAhghBwJAAkAgAiACKAIMIgBGBEAgAkEUQRAgAigCFCIAG2ooAgAiAQ0BQQAhAAwCCyACKAIIIgEgADYCDCAAIAE2AggMAQsgAkEUaiACQRBqIAAbIQMDQCADIQYgASIAQRRqIABBEGogACgCFCIBGyEDIABBFEEQIAEbaigCACIBDQALIAZBADYCAAsgB0UNAiACIAIoAhxBAnRBoM/AAGoiASgCAEcEQCAHQRBBFCAHKAIQIAJGG2ogADYCACAARQ0DDAILIAEgADYCACAADQFBvNLAAEG80sAAKAIAQX4gAigCHHdxNgIADAILAkACQAJAAkACQCAFQcDSwAAoAgAiAUsEQCAFQcTSwAAoAgAiAE8EQCAFQa+ABGpBgIB8cSICQRB2QAAhACAIQQRqIgFBADYCCCABQQAgAkGAgHxxIABBf0YiAhs2AgQgAUEAIABBEHQgAhs2AgBBACAIKAIEIgFFDQkaIAgoAgwhBkHQ0sAAIAgoAggiBEHQ0sAAKAIAaiIANgIAQdTSwABB1NLAACgCACICIAAgACACSRs2AgACQAJAQczSwAAoAgAiAgRAQaDQwAAhAANAIAEgACgCACIDIAAoAgQiB2pGDQIgACgCCCIADQALDAILQdzSwAAoAgAiAEEAIAAgAU0bRQRAQdzSwAAgATYCAAtB4NLAAEH/HzYCAEGs0MAAIAY2AgBBpNDAACAENgIAQaDQwAAgATYCAEG80MAAQbDQwAA2AgBBxNDAAEG40MAANgIAQbjQwABBsNDAADYCAEHM0MAAQcDQwAA2AgBBwNDAAEG40MAANgIAQdTQwABByNDAADYCAEHI0MAAQcDQwAA2AgBB3NDAAEHQ0MAANgIAQdDQwABByNDAADYCAEHk0MAAQdjQwAA2AgBB2NDAAEHQ0MAANgIAQezQwABB4NDAADYCAEHg0MAAQdjQwAA2AgBB9NDAAEHo0MAANgIAQejQwABB4NDAADYCAEH80MAAQfDQwAA2AgBB8NDAAEHo0MAANgIAQfjQwABB8NDAADYCAEGE0cAAQfjQwAA2AgBBgNHAAEH40MAANgIAQYzRwABBgNHAADYCAEGI0cAAQYDRwAA2AgBBlNHAAEGI0cAANgIAQZDRwABBiNHAADYCAEGc0cAAQZDRwAA2AgBBmNHAAEGQ0cAANgIAQaTRwABBmNHAADYCAEGg0cAAQZjRwAA2AgBBrNHAAEGg0cAANgIAQajRwABBoNHAADYCAEG00cAAQajRwAA2AgBBsNHAAEGo0cAANgIAQbzRwABBsNHAADYCAEHE0cAAQbjRwAA2AgBBuNHAAEGw0cAANgIAQczRwABBwNHAADYCAEHA0cAAQbjRwAA2AgBB1NHAAEHI0cAANgIAQcjRwABBwNHAADYCAEHc0cAAQdDRwAA2AgBB0NHAAEHI0cAANgIAQeTRwABB2NHAADYCAEHY0cAAQdDRwAA2AgBB7NHAAEHg0cAANgIAQeDRwABB2NHAADYCAEH00cAAQejRwAA2AgBB6NHAAEHg0cAANgIAQfzRwABB8NHAADYCAEHw0cAAQejRwAA2AgBBhNLAAEH40cAANgIAQfjRwABB8NHAADYCAEGM0sAAQYDSwAA2AgBBgNLAAEH40cAANgIAQZTSwABBiNLAADYCAEGI0sAAQYDSwAA2AgBBnNLAAEGQ0sAANgIAQZDSwABBiNLAADYCAEGk0sAAQZjSwAA2AgBBmNLAAEGQ0sAANgIAQazSwABBoNLAADYCAEGg0sAAQZjSwAA2AgBBtNLAAEGo0sAANgIAQajSwABBoNLAADYCAEHM0sAAIAFBD2pBeHEiAEEIayICNgIAQbDSwABBqNLAADYCAEHE0sAAIARBKGsiAyABIABrakEIaiIANgIAIAIgAEEBcjYCBCABIANqQSg2AgRB2NLAAEGAgIABNgIADAgLIAIgA0kgASACTXINACAAKAIMIgNBAXENACADQQF2IAZGDQMLQdzSwABB3NLAACgCACIAIAEgACABSRs2AgAgASAEaiEDQaDQwAAhAAJAAkADQCADIAAoAgAiB0cEQCAAKAIIIgANAQwCCwsgACgCDCIDQQFxDQAgA0EBdiAGRg0BC0Gg0MAAIQADQAJAIAIgACgCACIDTwRAIAIgAyAAKAIEaiIHSQ0BCyAAKAIIIQAMAQsLQczSwAAgAUEPakF4cSIAQQhrIgM2AgBBxNLAACAEQShrIgkgASAAa2pBCGoiADYCACADIABBAXI2AgQgASAJakEoNgIEQdjSwABBgICAATYCACACIAdBIGtBeHFBCGsiACAAIAJBEGpJGyIDQRs2AgRBoNDAACkCACEKIANBEGpBqNDAACkCADcCACADIAo3AghBrNDAACAGNgIAQaTQwAAgBDYCAEGg0MAAIAE2AgBBqNDAACADQQhqNgIAIANBHGohAANAIABBBzYCACAAQQRqIgAgB0kNAAsgAiADRg0HIAMgAygCBEF+cTYCBCACIAMgAmsiAEEBcjYCBCADIAA2AgAgAEGAAk8EQCACIAAQQwwICyAAQfgBcUGw0MAAaiEBAn9BuNLAACgCACIDQQEgAEEDdnQiAHFFBEBBuNLAACAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggMBwsgACABNgIAIAAgACgCBCAEajYCBCABQQ9qQXhxQQhrIgIgBUEDcjYCBCAHQQ9qQXhxQQhrIgQgAiAFaiIAayEFIARBzNLAACgCAEYNAyAEQcjSwAAoAgBGDQQgBCgCBCIBQQNxQQFGBEAgBCABQXhxIgEQOyABIAVqIQUgASAEaiIEKAIEIQELIAQgAUF+cTYCBCAAIAVBAXI2AgQgACAFaiAFNgIAIAVBgAJPBEAgACAFEEMMBgsgBUH4AXFBsNDAAGohAQJ/QbjSwAAoAgAiA0EBIAVBA3Z0IgRxRQRAQbjSwAAgAyAEcjYCACABDAELIAEoAggLIQMgASAANgIIIAMgADYCDCAAIAE2AgwgACADNgIIDAULQcTSwAAgACAFayIBNgIAQczSwABBzNLAACgCACIAIAVqIgI2AgAgAiABQQFyNgIEIAAgBUEDcjYCBCAAQQhqDAgLQcjSwAAoAgAhAAJAIAEgBWsiAkEPTQRAQcjSwABBADYCAEHA0sAAQQA2AgAgACABQQNyNgIEIAAgAWoiASABKAIEQQFyNgIEDAELQcDSwAAgAjYCAEHI0sAAIAAgBWoiAzYCACADIAJBAXI2AgQgACABaiACNgIAIAAgBUEDcjYCBAsgAEEIagwHCyAAIAQgB2o2AgRBzNLAAEHM0sAAKAIAIgBBD2pBeHEiAUEIayICNgIAQcTSwABBxNLAACgCACAEaiIDIAAgAWtqQQhqIgE2AgAgAiABQQFyNgIEIAAgA2pBKDYCBEHY0sAAQYCAgAE2AgAMAwtBzNLAACAANgIAQcTSwABBxNLAACgCACAFaiIBNgIAIAAgAUEBcjYCBAwBC0HI0sAAIAA2AgBBwNLAAEHA0sAAKAIAIAVqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAAsgAkEIagwDC0EAQcTSwAAoAgAiACAFTQ0CGkHE0sAAIAAgBWsiATYCAEHM0sAAQczSwAAoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIagwCCyAAIAc2AhggAigCECIBBEAgACABNgIQIAEgADYCGAsgAigCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgBEEQTwRAIAIgBUEDcjYCBCACIAVqIgAgBEEBcjYCBCAAIARqIAQ2AgAgBEGAAk8EQCAAIAQQQwwCCyAEQfgBcUGw0MAAaiEBAn9BuNLAACgCACIDQQEgBEEDdnQiBHFFBEBBuNLAACADIARyNgIAIAEMAQsgASgCCAshAyABIAA2AgggAyAANgIMIAAgATYCDCAAIAM2AggMAQsgAiAEIAVqIgBBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQLIAJBCGoLIAhBEGokAAuCFwIKfwJ+IwBB0ABrIgUkAAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIIBEAgACAAKAIMQQFqIgI2AgwgAkH1A0kNASAAKAIQIgFFDQJB2KTAAEEZIAEQxgFFDQJBASEEDAsLIAAoAhAiAEUNCkHxpMAAQQEgABDGASEEDAoLIAAoAggiByAAKAIEIgZJBEBBASEEIAAgB0EBaiIDNgIIAkACQAJAAkACQAJAAkACQAJAIAcgCGotAAAiAkHCAGsOGAMCAAAAAAABAAAABwYAAAAAAAAAAAAHDQALIAAoAhAiAUUNEUHIpMAAQRAgARDGAQ0SDBELIAAgARASDREgAQ0GDA4LIAVBMGoiASAAEDYgBS0AMA0CIAUgBSkDOCIMNwMYAkAgACgCAARAIAEgABAfIAUoAjBFDQMgBUEoaiAFQThqKQIANwMAIAUgBSkCMDcDICAAKAIQIgFFDRAgBUEgaiABEBZFDQEMEgsgACgCECIARQRAQQAhBAwSC0HxpMAAQQEgABDGASEEDBELIAAoAhAiAUUgDFByDQ4gASgCHEEEcQ0OIAFB+6TAAEEBEJkBDRAgACgCECMAQYABayIDJAAgBUEYaikDACEMQQAhBgNAIAMgBmpB/wBqIAynQQ9xIgFBMHIgAUHXAGogAUEKSRs6AAAgBkEBayEGIAxCEFQgDEIEiCEMRQ0ACyAGQYABaiIBQYEBTwRAIAFBgAFBjK/AABBoAAtBnK/AAEECIAMgBmpBgAFqQQAgBmsQISADQYABaiQADRAgACgCEEH8pMAAQQEQmQFFDQ4MEAtBACEDIwBBIGsiCSQAAkACQAJAAkACfgJAAkACQCAAKAIAIgsEQCAAKAIIIgIgACgCBCIISQRAIAIgC2otAABB3wBGDQMLIAIgCCACIAhLGyEGIAIhAwNAIAMgCEkEQCADIAtqLQAAQd8ARg0DCyADIAZGDQYCQCADIAtqLQAAIgpBMGsiB0H/AXFBCkkNACAKQeEAa0H/AXFBGk8EQCAKQcEAa0H/AXFBGk8NCCAKQR1rIQcMAQsgCkHXAGshBwsgACADQQFqIgM2AgggCSANEGQgCSkDCEIAUg0GIAkpAwAiDCAHrUL/AYN8Ig0gDFoNAAsMBQsgACgCECIBRQ0HQfGkwABBASABEMYBIQMMBwsgACADQQFqNgIIIA1Cf1INAQwDCyAAIAJBAWo2AghCAAwBCyANQgF8CyEMIAwgAkEBa61aDQBBASEDIAAoAhAhAiAAKAIMQQFqIgZB9ANLDQEgAkUEQEEAIQMMBAsgCUEYaiICIABBCGoiBykCADcDACAAIAY2AgwgByAMPgIAIAkgACkCADcDECAAIAFBAXEQEiEDIAcgAikDADcCACAAIAkpAxA3AgAMAwtBACEDIAAoAhAiAUUNAUHIpMAAQRAgARDGAUUNAUEBIQMMAgsgAkUNAEHYpMAAQRkgAhDGAQ0BCyAAIAM6AARBACEDIABBADYCAAsgCUEgaiQAIAMNDwwNCyAAKAIQIQICQCAFLQA0IgFFBEAgAkUNAUHIpMAAQRAgAhDGAUUNAQwQCyACRQ0AQdikwABBGSACEMYBRQ0ADA8LIAAgAToABAwKCyAAKAIQIQICQCAFLQAxIgFFBEAgAkUNAUHIpMAAQRAgAhDGAUUNAQwPCyACRQ0AQdikwABBGSACEMYBRQ0ADA4LIAAgAToABAwJCwJAIAMgBk8NACAAIAdBAmo2AgggAyAIai0AACIDQcEAa0H/AXFBGk8EQCADQeEAa0GAgMQAIQNB/wFxQRpPDQELIAAgARASBEAMDgsCQAJAAn8CQAJAAkACQAJAIAAoAgBFBEBBACEEIAAoAhAiAUUNFkGAnsAAQQIgARDGAQRAQQEhBAwXCyAAKAIARQ0BCyAFQTBqIgEgABA2IAUtADANByAAKAIARQ0BIAUpAzghDCABIAAQHyAFKAIwRQ0GIAVByABqIAVBOGopAgA3AwAgBSAFKQIwNwNAIANBgIDEAEcNAiAFKAJEIAUoAkxyRQ0TIAAoAhAiAUUNE0GAnsAAQQIgARDGAUUNA0EBIQQMFQsgACgCECIARQ0UQfGkwABBASAAEMYBIQQMFAsgACgCECIARQRAQQAhBAwUC0HxpMAAQQEgABDGASEEDBMLQQAgACgCECIBRQ0CGkH9pMAAQQMgARDGAUUNAUEBIQQMEgsgACgCECIBRQ0PQQEhBCAFQUBrIAEQFkUNDwwRCyAAKAIQCyECAkACQCADQcMAayIBBEAgAUEQRg0BIAUgAzYCMCACRQ0CQQEhBCAFQTBqIAIQRkUNAgwSCyACRQ0BQQEhBEGApcAAQQcgAhDGAUUNAQwRCyACRQ0AQQEhBEGHpcAAQQQgAhDGAQ0QCyAAKAIQIQMgBSgCRCAFKAJMckUNCiADRQ0NQQEhBEGLpcAAQQEgAxDGAQ0PIAAoAhAiAUUNDSAFQUBrIAEQFg0PIAAoAhAhAwwKCyAAKAIQIQICQCAFLQA0IgFFBEAgAkUNAUHIpMAAQRAgAhDGAUUNAUEBIQQMEAsgAkUNAEHYpMAAQRkgAhDGAUUNAEEBIQQMDwsgACABOgAEDAoLIAAoAhAhAgJAIAUtADEiAUUEQCACRQ0BQcikwABBECACEMYBRQ0BQQEhBAwPCyACRQ0AQdikwABBGSACEMYBRQ0AQQEhBAwOCyAAIAE6AAQMCQsgACgCECIBRQ0LQcikwABBECABEMYBRQ0LDAwLIAMgBk8NBCADIAhqLQAAQfMARw0EIAAgB0ECaiIENgIIIAQgBk8NAyAEIAhqLQAAQd8ARw0DIAAgB0EDajYCCAwECyAAKAIQIgFFDQdBgJ7AAEECIAEQxgFFDQcMCgsgACgCECIBRQ0IQcikwABBECABEMYBRQ0IQQEhBAwJCyAAQQE6AAQMBAsCQANAAkAgBCAGSQRAIAQgCGotAABB3wBGDQELIAQgBkYNAgJAIAQgCGotAAAiA0EwayIBQf8BcUEKSQ0AIANB4QBrQf8BcUEaTwRAIANBwQBrQf8BcUEaTw0EIANBHWshAQwBCyADQdcAayEBCyAAIARBAWoiBDYCCCAFQQhqIA0QZCAFKQMQQgBSDQIgBSkDCCIMIAGtQv8Bg3wiDSAMWg0BDAILCyAAIARBAWo2AgggDUJ9WA0BCyAAKAIQIgFFDQZByKTAAEEQIAEQxgFFDQZBASEEDAcLIwBBEGsiAyQAIAAoAhAhASAAQQA2AhACQCAAQQAQEkUEQCAAIAE2AhAgA0EQaiQADAELQcSgwABBPSADQQ9qQbSgwABBuKTAABBlAAsLIAAoAhAiAQRAQQEhBEH8nsAAQQEgARDGAQ0GC0EBIQQgABAZDQUgAkHNAEcEQCAAKAIQIgEEQEGNpcAAQQQgARDGAQ0HCyAAQQAQEg0GCyAAKAIQIgFFDQNB+57AAEEBIAEQxgFFDQMMBQsgA0UNAkEBIQRBjKXAAEEBIAMQxgENBCAAKAIQIQEgBSAMNwMwIAFFDQIgBUEwaiABELQBDQQgACgCECIBRQ0CQb6hwABBASABEMYBRQ0CDAQLQQAhBCAAQQA2AgAMAwsgACgCECIBBEBB/J7AAEEBIAEQxgENAwsCf0EAIQMgACgCACICBEADQAJAIAAoAggiASAAKAIETw0AIAEgAmotAABBxQBHDQAgACABQQFqNgIIQQAMAwsCQCADRQ0AIAAoAhAiAUUNAEH5pMAAQQIgARDGAUUNAEEBDAMLQQEgABAxDQIaIANBAWshAyAAKAIAIgINAAsLQQALDQIgACgCECIBRQ0AQfuewABBASABEMYBDQILQQAhBCAAKAIARQ0BIAAgACgCDEEBazYCDAwBC0EAIQQgAEEAOgAEIABBADYCAAsgBUHQAGokACAEC8YbAgl/An4jAEEwayIJJAACQAJAAkACQAJAAkACQAJAAkAgACgCACIKBEAgACgCCCIHIAAoAgQiBEkNASAAKAIQIgFFDQJByKTAAEEQIAEQxgFFDQJBASEDDAkLIAAoAhAiAEUNCEHxpMAAQQEgABDGASEDDAgLIAAgB0EBaiIFNgIIIAcgCmotAAAhBiAAIAAoAgxBAWoiAjYCDCACQfQDSw0BAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHBAGsOOQ0EAAAAAAAAAAAAAAAAAAAKCQAOAA8AAAAAAAAAAAAAAwYHAAgAAAIDAgADAgMCAQAAAwIAAAADAgALIAAoAhAiAUUND0HIpMAAQRAgARDGAUUND0EBIQMMFgsgACgCECIBRQ0UQQEhA0Hyo8AAQQEgARDGAUUNFAwVCyAAIAYQK0UNE0EBIQMMFAsgBCAFTQ0RIAUgCmotAABB7gBGDQEMEQtBACEEIwBBIGsiAyQAAkACQAJAAkACfgJAAkACQCAAKAIAIgcEQCAAKAIIIgIgACgCBCIFSQRAIAIgB2otAABB3wBGDQMLIAIgBSACIAVLGyEKIAIhBANAIAQgBUkEQCAEIAdqLQAAQd8ARg0DCyAEIApGDQYCQCAEIAdqLQAAIghBMGsiBkH/AXFBCkkNACAIQeEAa0H/AXFBGk8EQCAIQcEAa0H/AXFBGk8NCCAIQR1rIQYMAQsgCEHXAGshBgsgACAEQQFqIgQ2AgggAyAMEGQgAykDCEIAUg0GIAMpAwAiCyAGrUL/AYN8IgwgC1oNAAsMBQsgACgCECIBRQ0HQfGkwABBASABEMYBIQQMBwsgACAEQQFqNgIIIAxCf1INAQwDCyAAIAJBAWo2AghCAAwBCyAMQgF8CyELIAsgAkEBa61aDQBBASEEIAAoAhAhAiAAKAIMQQFqIgpB9ANLDQEgAkUEQEEAIQQMBAsgA0EYaiICIABBCGoiBikCADcDACAAIAo2AgwgBiALPgIAIAMgACkCADcDECAAIAFBAXEQEyEEIAYgAikDADcCACAAIAMpAxA3AgAMAwtBACEEIAAoAhAiAUUNAUHIpMAAQRAgARDGAUUNAUEBIQQMAgsgAkUNAEHYpMAAQRkgAhDGAQ0BCyAAIAQ6AARBACEEIABBADYCAAsgA0EgaiQAIARFDRFBASEDDBILIAAgB0ECajYCCCAAKAIQIgFFDQ9BASEDQb2hwABBASABEMYBRQ0PDBELIAlBKGogABBLIAkoAigiAQRAIAkgASAJKAIsEDQCQAJAAkAgCSkDAEIBUg0AIAkpAwgiC0IBVg0AIAunQQFrDQEMAgsgACgCECIBRQ0MQcikwABBECABEMYBRQ0MQQEhAwwTCyAAKAIQIgFFDRFB0KXAAEEFIAEQxgFFDRFBASEDDBILIAAoAhAiAUUNEEHVpcAAQQQgARDGAUUNEEEBIQMMEQsgACgCECECAkAgCS0ALCIBRQRAIAJFDQFByKTAAEEQIAIQxgFFDQFBASEDDBILIAJFDQBB2KTAAEEZIAIQxgFFDQBBASEDDBELIAAgAToABAwNCyAJQShqIAAQSyAJKAIoIgEEQCAJQRBqIAEgCSgCLBA0AkACQCAJKQMQUA0AIAkpAxgiC0KAgICAEFoNACALpyIBQYCwA3NBgIDEAGtBgJC8f0kNACALQoCAxABSDQELIAAoAhAiAUUNCkHIpMAAQRAgARDGAUUNCkEBIQMMEQsgACgCECEGIwBBEGsiBSQAAn9BACAGRQ0AGgJAIAZBJxCcAQ0AIAVBCGohCgNAAkACQCABQSJHBEAgAUGAgMQARgRAIAZBJxCcAQwGCyAFIAEQIyAFLQAAQYABRw0BQYABIQIDQAJAIAJBgAFHBEAgBS0ACiIBIAUtAAtPDQUgBSABQQFqOgAKIAEgBWotAAAhAQwBC0EAIQIgCkEANgIAIAUoAgQhASAFQgA3AwALIAYgARCcAUUNAAsMBAtBgIDEACEBIAZBIhCcAUUNAgwDCyAFLQAKIgEgBS0ACyICIAEgAksbIQQDQCABIARGDQEgASAFaiECIAFBAWohASAGIAItAAAQnAFFDQALDAILQYCAxAAhAQwACwALQQELIAVBEGokAEUND0EBIQMMEAsgACgCECECAkAgCS0ALCIBRQRAIAJFDQFByKTAAEEQIAIQxgFFDQFBASEDDBELIAJFDQBB2KTAAEEZIAIQxgFFDQBBASEDDBALIAAgAToABAwMCwJAIAENACAAKAIQIgJFDQBBASEDQdmlwABBASACEMYBDQ8LIAAoAhAiAgRAQQEhA0H+nsAAQQEgAhDGAQ0PCyAAEB1FDQpBASEDDA4LIAQgBU0NACAFIApqLQAAQeUARg0BCwJAIAENACAAKAIQIgJFDQBBASEDQdmlwABBASACEMYBDQ0LIAAoAhAiAgRAQQEhA0H9nsAAQQEgAhDGAQ0NCyAGQdIARw0BDAcLIAAgB0ECajYCCCAAEB1FDQpBASEDDAsLIAAoAhAiAkUNBUGSpcAAQQQgAhDGAUUNBUEBIQMMCgsCQCABDQAgACgCECICRQ0AQQEhA0HZpcAAQQEgAhDGAQ0KCyAAKAIQIgIEQEEBIQNB+6TAAEEBIAIQxgENCgsgABBiBEBBASEDDAoLIAAoAhAiAkUNCEEBIQNB/KTAAEEBIAIQxgFFDQUMCQsCQCABDQAgACgCECICRQ0AQQEhA0HZpcAAQQEgAhDGAQ0JCyAAKAIQIgIEQEEBIQNB+p7AAEEBIAIQxgENCQsgCUEgaiEKQQAhBgJ/AkAgACgCACIERQ0AA0ACQCAAKAIIIgIgACgCBE8NACACIARqLQAAQcUARw0AIAAgAkEBajYCCAwCCwJAIAZFDQAgACgCECICRQ0AQfmkwABBAiACEMYBRQ0AQQEMAwtBASAAQQEQEw0CGiAGQQFqIQYgACgCACIEDQALC0EACyECIAogBjYCBCAKIAI2AgAgCSgCIARAQQEhAwwJCyAJKAIkQQFGBEAgACgCECICRQ0IQQEhA0H4nsAAQQEgAhDGAQ0JCyAAKAIQIgJFDQdBASEDQfmewABBASACEMYBRQ0EDAgLAkAgAQ0AIAAoAhAiAkUNAEEBIQNB2aXAAEEBIAIQxgENCAtBASEDIABBARASDQcCQAJAAkACQAJAAkAgACgCACICBEAgACgCCCIEIAAoAgRPDQYgACAEQQFqNgIIIAIgBGotAABB0wBrDgMDAgoBCyAAKAIQIgBFBEBBACEDDA4LQfGkwABBASAAEMYBIQMMDQsgACgCECIBRQ0FQcikwABBECABEMYBRQ0FDAwLIAAoAhAiAgRAQfqewABBASACEMYBDQwLIAAQYkUNAQwLCyAAKAIQIgJFDQFB2qXAAEEDIAIQxgFFDQEMCgsgACgCECICRQ0IQfmewABBASACEMYBRQ0FDAkLQQAhCiMAQTBrIgckAAJAAkAgACgCACIFRQ0AA0ACQCAAKAIIIgIgACgCBE8NACACIAVqLQAAQcUARw0AIAAgAkEBajYCCAwCCwJAAkACQAJAAkACQAJAIApFDQAgACgCECICRQ0AQfmkwABBAiACEMYBBEBBASEIDAoLIAAoAgAiBUUNAQsgACgCCCICIAAoAgQiBE8NAiACIAVqLQAAQfMARw0CIAAgAkEBaiIINgIIIAQgCE0NASAFIAhqLQAAQd8ARw0BIAAgAkECajYCCAwCCyAAKAIQIgJFDQZBASEIQfGkwABBASACEMYBDQcMBAtCACEMAkADQAJAIAQgCEsEQCAFIAhqLQAAQd8ARg0BCyAEIAhGDQICQCAFIAhqLQAAIgZBMGsiAkH/AXFBCkkNACAGQeEAa0H/AXFBGk8EQCAGQcEAa0H/AXFBGk8NBCAGQR1rIQIMAQsgBkHXAGshAgsgACAIQQFqIgg2AgggByAMEGQgBykDCEIAUg0CIAcpAwAiCyACrUL/AYN8IgwgC1oNAQwCCwsgACAIQQFqNgIIIAxCfVgNAQsgACgCECICBEBByKTAAEEQIAIQxgENAgsgAEEAOgAEIABBADYCAAwFCyAHQRBqIAAQHyAHKAIQBEAgB0EoaiAHQRhqKQIANwMAIAcgBykCEDcDICAAKAIQIgIEQCAHQSBqIAIQFg0CQd+lwABBAiACEMYBDQILQQEhCCAAQQEQE0UNAwwGCyAAKAIQIQQCQCAHLQAUIgJFBEAgBEUNA0HIpMAAQRAgBBDGAQ0BDAMLIARFDQJB2KTAAEEZIAQQxgFFDQILQQEhCAwFC0EBIQgMBAsgACACOgAEIABBADYCAAsgCkEBaiEKIAAoAgAiBQ0ACwtBACEICyAHQTBqJAAgCA0IIAAoAhAiAkUNB0HdpcAAQQIgAhDGAUUNBAwICyAAKAIQIgFFDQBByKTAAEEQIAEQxgENBwtBACEDIABBADoABCAAQQA2AgAMBgsCQCAAKAIQIgFFDQBB2KTAAEEZIAEQxgFFDQBBASEDDAYLIABBAToABAwCC0EBIQMgAEEBEBMNBAsgAQ0CIAAoAhAiAUUNAkEBIQNBvqHAAEEBIAEQxgFFDQIMAwsgAEEANgIADAILIAAgBhArRQ0AQQEhAwwBC0EAIQMgACgCAEUNACAAIAAoAgxBAWs2AgwLIAlBMGokACADC5cLAgp/AX4gBEUEQCAAQQA2AjwgACADNgI4IAAgAjYCNCAAIAE2AjAgAEEAOgAOIABBgQI7AQwgACACNgIIIABCADcDAA8LQQEhCwJAAkACQAJAAkACQAJAAkACQAJAIARBAUYEQEEBIQkMAQtBASEGQQEhBwNAIAUgCmoiCCAETw0CIAchDAJAIAMgBmotAAAiBiADIAhqLQAAIghJBEAgBSAHakEBaiIHIAprIQtBACEFDAELIAYgCEcEQEEBIQsgDEEBaiEHQQAhBSAMIQoMAQtBACAFQQFqIgcgByALRiIGGyEFIAdBACAGGyAMaiEHCyAFIAdqIgYgBEkNAAtBASEGQQAhCEEBIQdBACEFQQEhCQNAIAUgCGoiDSAETw0DIAchDAJAIAMgBmotAAAiBiADIA1qLQAAIg1LBEAgBSAHakEBaiIHIAhrIQlBACEFDAELIAYgDUcEQEEBIQkgDEEBaiEHQQAhBSAMIQgMAQtBACAFQQFqIgcgByAJRiIGGyEFIAdBACAGGyAMaiEHCyAFIAdqIgYgBEkNAAsgCiEFCyAEIAUgCCAFIAhLIgUbIgxJDQIgCyAJIAUbIgcgDGoiBSAHSQ0DIAQgBUkNBAJ/IAMgAyAHaiAMEHEEQCAMIAQgDGsiBkshCyAEQQNxIQgCQCAEQQFrQQNJBEBBACEHDAELIARBfHEhCkEAIQcDQEIBIAMgB2oiBUEDajEAAIZCASAFMQAAhiAPhEIBIAVBAWoxAACGhEIBIAVBAmoxAACGhIQhDyAKIAdBBGoiB0cNAAsLIAgEQCADIAdqIQUDQEIBIAUxAACGIA+EIQ8gBUEBaiEFIAhBAWsiCA0ACwsgDCAGIAsbQQFqIQdBfyEKIAwhC0F/DAELQQEhCEEAIQVBASEGQQAhCwNAIAQgBiIKIAVqIg1LBEAgBCAFayAGQX9zaiIGIARPDQggBUF/cyAEaiALayIJIARPDQkCQCADIAZqLQAAIgYgAyAJai0AACIJSQRAIA1BAWoiBiALayEIQQAhBQwBCyAGIAlHBEAgCkEBaiEGQQAhBUEBIQggCiELDAELQQAgBUEBaiIGIAYgCEYiCRshBSAGQQAgCRsgCmohBgsgByAIRw0BCwtBASEIQQAhBUEBIQZBACEJA0AgBCAGIgogBWoiDksEQCAEIAVrIAZBf3NqIgYgBE8NCiAFQX9zIARqIAlrIg0gBE8NCwJAIAMgBmotAAAiBiADIA1qLQAAIg1LBEAgDkEBaiIGIAlrIQhBACEFDAELIAYgDUcEQCAKQQFqIQZBACEFQQEhCCAKIQkMAQtBACAFQQFqIgYgBiAIRiINGyEFIAZBACANGyAKaiEGCyAHIAhHDQELCyAEIAsgCSAJIAtJG2shCwJAIAdFBEBBACEHQQAhCgwBCyAHQQNxIQZBACEKAkAgB0EESQRAQQAhCAwBCyAHQXxxIQlBACEIA0BCASADIAhqIgVBA2oxAACGQgEgBTEAAIYgD4RCASAFQQFqMQAAhoRCASAFQQJqMQAAhoSEIQ8gCSAIQQRqIghHDQALCyAGRQ0AIAMgCGohBQNAQgEgBTEAAIYgD4QhDyAFQQFqIQUgBkEBayIGDQALCyAECyEFIAAgBDYCPCAAIAM2AjggACACNgI0IAAgATYCMCAAIAU2AiggACAKNgIkIAAgAjYCICAAQQA2AhwgACAHNgIYIAAgCzYCFCAAIAw2AhAgACAPNwMIIABBATYCAA8LIAggBEGYtsAAEGkACyANIARBmLbAABBpAAsgDCAEQfi1wAAQagALIAcgBUGItsAAEGsACyAFIARBiLbAABBqAAsgBiAEQai2wAAQaQALIAkgBEG4tsAAEGkACyAGIARBqLbAABBpAAsgDSAEQbi2wAAQaQALlAwCB38BfiMAQfAAayIHJAAgACgCBCELIAAoAgAhCCAHQQA2AgQCfwJAIAgtABBBAUcNACAIKAIAIQkCQAJAAkAgC0UEQCAHIAhBDGqtQoCAgIDwAoQ3AwggB0EDOgBkIAdBADYCYCAHQiA3AlggB0KAgICAwAA3AlAgB0ECNgJIIAdBATYCPCAHQQI2AiwgB0G4l8AANgIoIAdBATYCNCAJQRRqKAIAIAlBGGooAgAgByAHQcgAaiIMNgI4IAcgB0EIaiINNgIwIAdBKGoQKQ0CIAgtABBBAUcNASAIKAIAIQkgB0KAgICAoAE3AxAgByAHQQRqrUKAgICA8AaENwMIIAdBAzoAZCAHQQA2AmAgB0IgNwJYIAdCgYCAgBA3AlAgB0ECNgJIIAdBATYCPCAHQQI2AiwgB0HMl8AANgIoIAdBAjYCNCAJQRRqKAIAIAlBGGooAgAgByAMNgI4IAcgDTYCMCAHQShqECkNAgwBCyAJQRRqKAIAQdyXwABBBiAJQRhqKAIAKAIMEQEADQEgCC0AEEEBRw0AIAgoAgAhCSAHQoCAgIDQATcDECAHQYyUwAA2AiggB0KMlMCAgAc3AwggB0EDOgBkIAdBADYCYCAHQiA3AlggB0KBgICAEDcCUCAHQQI2AkggB0EBNgI8IAdBATYCLCAHQQI2AjQgCUEUaigCACAJQRhqKAIAIAcgB0HIAGo2AjggByAHQQhqNgIwIAdBKGoQKQ0BCwJAIAEoAgBBA0YEQCAIKAIAIgFBFGooAgBBwJXAAEEJIAFBGGooAgAoAgwRAQBFDQEMAgtCgICAgJAHIQ4gCC0AEEUEQCAHQegAaiABQSBqKQIANwMAIAdB4ABqIAFBGGopAgA3AwAgB0HYAGogAUEQaikCADcDACAHQdAAaiABQQhqKQIANwMAIAcgASkCADcDSCAIKAIAIQEgByAOIAdByABqrYQ3AyAgB0EDOgBEIAdBBDYCQCAHQiA3AjggB0ECNgIwIAdBAjYCKCAHQQE2AhwgB0EBNgIMIAdBjJTAADYCCCAHQQE2AhQgAUEUaigCACABQRhqKAIAIAcgB0EoajYCGCAHIAdBIGo2AhAgB0EIahApDQIMAQsgB0HoAGogAUEgaikCADcDACAHQeAAaiABQRhqKQIANwMAIAdB2ABqIAFBEGopAgA3AwAgB0HQAGogAUEIaikCADcDACAHIAEpAgA3A0ggCCgCACEBIAcgDiAHQcgAaq2ENwMIIAdBATYCLCAHQYyUwAA2AiggB0IBNwI0IAFBFGooAgAgAUEYaigCACAHIAdBCGo2AjAgB0EoahApDQELIAgoAgBBoJbAAEEBEJkBDQAgA0EBcUUgAigCAEECRnINAiAHIAQ2AiAgCC0AEEEBRgRAIAgoAgAhASAHQoCAgICgATcDECAHQYyUwAA2AiggB0KMlMCAgAc3AwggB0EDOgBkIAdBADYCYCAHQiA3AlggB0KBgICAEDcCUCAHQQI2AkggB0EBNgI8IAdBATYCLCAHQQI2AjQgAUEUaigCACABQRhqKAIAIAcgB0HIAGo2AjggByAHQQhqNgIwIAdBKGoQKQ0BCyAIKAIAIgFBFGooAgBB4pfAAEEQIAFBGGooAgAoAgwRAQANACAIKAIEIAgoAgghAyAHQdQAaiACQQhqKAIANgIAIAcgCCgCACIENgJIIAcgAikCADcCTCAEIAdBzABqIAMoAhARAQANACAIKAIAIQEgB0KAgICA8AIiDiAHQSBqrYQ3AyggB0EBNgJMIAdB9JfAADYCSCAHQgE3AlQgAUEUaigCACABQRhqKAIAIAcgB0EoaiIDNgJQIAdByABqECkNACAFQQFxRQ0BIAcgBjYCCCAIKAIAIQEgByAOIAdBCGqthDcDKCAHQQE2AkwgB0H0l8AANgJIIAdCATcCVCABQRRqKAIAIAFBGGooAgAgByADNgJQIAdByABqEClFDQELQQEMAgtBASAIKAIAIgJBFGooAgBBoJbAAEEBIAJBGGooAgAoAgwRAQANARoLIAAgC0EBajYCBEEACyAHQfAAaiQAC7wJAhV/An4jAEGQBGsiCiQAIApBDGpBgAQQVxoCQCAAKAIMIhJFBEAgASAAKAIAIAAoAgQQmQEhAgwBCyAAKAIAIQ0gACgCCCIOLQAAIQsCQAJAIAAoAgQiD0UNACANIA9qIQcgCkEMaiEDIA0hAANAAn8gACwAACIEQQBOBEAgBEH/AXEhBSAAQQFqDAELIAAtAAFBP3EhBiAEQR9xIQkgBEFfTQRAIAlBBnQgBnIhBSAAQQJqDAELIAAtAAJBP3EgBkEGdHIhBiAEQXBJBEAgBiAJQQx0ciEFIABBA2oMAQsgCUESdEGAgPAAcSAALQADQT9xIAZBBnRyciIFQYCAxABGDQIgAEEEagshACACQYABRg0CIAMgBTYCACADQQRqIQMgAkEBaiECIAAgB0cNAAsLIA4gEmohEyACQQFrIRUgAkECdCIAQQRqIQwgACAKakEIaiEQIApBBGshFkG8BSEUQcgAIQcgDiEFQYABIQkCQANAIAtB4QBrIgBB/wFxQRpPBEAgC0Ewa0H/AXFBCUsNAyALQRZrIQALIAVBAWohBQJAQQFBGkEkIAdrIgNBACADQSRNGyIDIANBGk8bIAdBJE8bIgQgAEH/AXEiA00EQEEkIARrIQZByAAhAANAIAUgE0YNBSAFLQAAIgtB4QBrIgRB/wFxQRpPBEAgC0Ewa0H/AXFBCUsNBiALQRZrIQQLIAatIhcgBEH/AXEiBq1+IhhCIIinDQUgGKcgA2oiBCADSQ0FIAZBAUEaIAAgB2siA0EAIAAgA08bIgMgA0EaTxsgACAHTRsiA08EQCAFQQFqIQUgAEEkaiEAIBdBJCADa61+IhenIQYgBCEDIBdCIIhQDQEMBgsLIAVBAWohBQwBCyADIQQLIAQgCGoiACAISQ0CIAkgACACQQFqIgZuIgMgCWoiCUsgCUGAsANzQYAQa0H/78MAS3IgCUGAgMQARiACQf8AS3JyDQICQCAAIAMgBmxrIgggAkkEQCACIAhrQQNxIgcEQEEAIQMgECEAA0AgAEEEaiAAKAIANgIAIABBBGshACAHIANBAWoiA0cNAAsgAiADayECCyARIBVqIAhrQQNJDQEgFiACQQJ0aiEAA0AgAEEMaiAAQQhqKQIANwIAIABBBGogACkCADcCACAAQRBrIQAgAkEEayICIAhLDQALDAELIAhBgAFPDQILIApBDGogCEECdGogCTYCACAFIBNHBEAgBS0AACELQQAhAAJAIAQgFG4iAiAGbiACaiICQcgDSQRAIAIhBwwBCwNAIABBJGohACACQdf8AEsgAkEjbiIHIQINAAsLIAhBAWohCCAAIAdBJGxB/P8DcSAHQSZqQf//A3FuaiEHIBBBBGohECAMQQRqIQwgEUEBaiERQQIhFCAGIQIMAQsLIApBDGohAANAIAogACgCADYCjAQgCkGMBGogARBGIgINAyAAQQRqIQAgDEEEayIMDQALDAILIAhBgAFBpKHAABBpAAtBASECIAFBtKHAAEEJEJkBDQAgDwRAIAEgDSAPEJkBDQEgAUG9ocAAQQEQmQENAQsgASAOIBIQmQENACABQb6hwABBARCZASECCyAKQZAEaiQAIAIL6QoBC38jAEHQAGsiAiQAQYGAxAAhBAJAAkACQCAAKAIEIgEgACgCECIDSQ0AIAAgASADayIKNgIEIAAgACgCACIBIANqIgk2AgACQAJAAkAgA0ECRgRAIAEtAAEhBSABLQAAIgFBMGsiBkEKTwRAQX8gAUEgciIDQdcAayIBIAEgA0HhAGtJGyIGQRBPDQcLIAVBMGsiBEEKTwRAQX8gBUEgciIDQdcAayIBIAEgA0HhAGtJGyIEQRBPDQcLIAQgBkEEdCIBciEDIAHAQQBODQFBgIDEACEEIAZBDEkNBCACAn9BAiAGQQ5JDQAaIAZBD0cEQEEBIQhBAwwBCyADQf8BcUH4AU8NBUEECyILNgIIIAJBADoADyACQQA7AA0gAiADOgAMIAIgAkEMajYCBCAKQQJJDQMgACAKQQJrIgU2AgQgACAJQQJqNgIAIAktAAEhByAJLQAAIgFBMGsiBEEKTwRAQX8gAUEgciIDQdcAayIBIAEgA0HhAGtJGyIEQQ9LDQcLAkAgB0EwayIBQQpPBEBBfyAHQSByIgNB1wBrIgEgASADQeEAa0kbIgFBD0sNAQsgAiAEQQR0IAFyOgANIAZBDkkNAyAFQQJJDQQgACAKQQRrIgU2AgQgACAJQQRqNgIAIAktAAMhByAJLQACIgFBMGsiBkEKTwRAQX8gAUEgciIDQdcAayIBIAEgA0HhAGtJGyIGQQ9LDQgLIAdBMGsiBEEKTwRAQX8gB0EgciIDQdcAayIBIAEgA0HhAGtJGyIEQQ9LDQELIAIgBkEEdCAEcjoADiAIDQMgBUECSQ0EIAAgCkEGazYCBCAAIAlBBmo2AgAgCS0ABSEDIAktAAQiAEEwayIEQQpPBEBBfyAAQSByIgFB1wBrIgAgACABQeEAa0kbIgRBD0sNCAsgA0EwayIGQQpPBEBBfyADQSByIgFB1wBrIgAgACABQeEAa0kbIgZBD0sNAQsgAiAEQQR0IAZyOgAPDAMLDAYLQdChwABBKEH4ocAAEHgAC0EBIQsgAkEBNgIIIAJBADoADyACQQA7AA0gAiADOgAMIAIgAkEMajYCBAsgAkEwaiACQQxqIAsQJCACKAIwDQAgAigCNCEAIAIgAigCOCIBNgIUIAIgADYCECAAIAFqIQMgAUUNAiADAn8gACwAACIIQQBOBEAgCEH/AXEhBCAAQQFqDAELIAAtAAFBP3EhASAIQR9xIQUgCEFfTQRAIAVBBnQgAXIhBCAAQQJqDAELIAAtAAJBP3EgAUEGdHIhASAIQXBJBEAgASAFQQx0ciEEIABBA2oMAQsgBUESdEGAgPAAcSAALQADQT9xIAFBBnRyciEEIABBBGoLIgFHBEAgASwAABoMAwsgBEGAgMQARg0CDAELQYCAxAAhBAsgAkHQAGokACAEDwsCfyADIABrIgFBEE8EQCAAIAEQGwwBCwJ/QQAhCEEAIAFFDQAaIAFBA3EhBQJAIAFBBEkEQEEAIQcMAQsgAUF8cSEBQQAhBwNAIAcgACAIaiIDLAAAQb9/SmogA0EBaiwAAEG/f0pqIANBAmosAABBv39KaiADQQNqLAAAQb9/SmohByABIAhBBGoiCEcNAAsLIAUEQCAAIAhqIQADQCAHIAAsAABBv39KaiEHIABBAWohACAFQQFrIgUNAAsLIAcLCyEAIAIgAkHMAGqtQoCAgIDwAoQ3A0AgAiACQRBqrUKAgICA4AmENwM4IAIgAkEEaq1CgICAgPAJhDcDMCACIAA2AkwgAkEENgIcIAJBiKPAADYCGCACQgM3AiQgAiACQTBqNgIgIAJBGGpBqKPAABCEAQALQYiiwAAQswEAC5cKAQZ/IwBB4ABrIgEkAAJ/AkAgACgCACIDRQ0AAkAgACgCCCICIAAoAgQiBE8NACACIANqLQAAQdUARw0AQQEhBSAAIAJBAWoiAjYCCAsCQAJAAkAgAiAESQRAIAIgA2otAABBywBGDQELIAVFDQNBACEDDAELIAAgAkEBaiIGNgIIAkACQCAEIAZNDQAgAyAGai0AAEHDAEcNACAAIAJBAmo2AghBASEEQeSewAAhAwwBCyABQShqIAAQHyABKAIoIgMEQCABKAIsIgQEQCABKAI0RQ0CCwJAIAAoAhAiAkUNAEHIpMAAQRAgAhDGAUUNAEEBDAYLIABBADoABCAAQQA2AgBBAAwFCyAAKAIQIQICQCABLQAsIgNFBEAgAkUNAUHIpMAAQRAgAhDGAUUNAUEBDAYLIAJFDQBB2KTAAEEZIAIQxgFFDQBBAQwFCyAAIAM6AAQgAEEANgIAQQAMBAsgBUUNAQsCQCAAKAIQIgJFDQBBpaXAAEEHIAIQxgFFDQBBAQwDCyADRQ0BCwJAIAAoAhAiAkUNAEGspcAAQQggAhDGAUUNAEEBDAILIAFBATsBJCABIAQ2AiAgAUEANgIcIAFBAToAGCABQd8ANgIUIAEgBDYCECABQQA2AgwgASAENgIIIAEgAzYCBCABQd8ANgIAIAFBKGogARAuAn8gASgCKEUEQAJAIAEtACUNACABQQE6ACUCQCABLQAkQQFGBEAgASgCICEFIAEoAhwhBAwBCyABKAIgIgUgASgCHCIERg0BCyABKAIEIARqIQMgBSAEawwCC0G0pcAAELMBAAsgASgCHCEEIAEgASgCMDYCHCADIARqIQMgASgCLCAEawshBAJAIAIEQCADIAQgAhDGAQ0BCyABQcgAaiABQSBqKQIANwMAIAFBQGsgAUEYaikCADcDACABQThqIAFBEGopAgA3AwAgAUEwaiABQQhqKQIANwMAIAEgASkCADcDKAJAIAEtAE0NACACIQMDQCABKAIsIQUgAUHUAGogAUEoahAuAn8gASgCVEUEQCABLQBNDQMgAUEBOgBNAkAgAS0ATEEBRgRAIAEoAkghBSABKAJEIQQMAQsgASgCSCIFIAEoAkQiBEYNBAsgASgCLCAEaiEGIAUgBGsMAQsgASgCRCEEIAEgASgCXDYCRCAEIAVqIQYgASgCWCAEawshBAJAIANFBEBBACEDDAELQb2hwABBASADEMYBDQMgACgCECICRQRAQQAhAkEAIQMMAQsgAiEDIAYgBCACEMYBDQMLIAEtAE1FDQALCyACRQ0BQcSlwABBAiACEMYBRQ0BC0EBDAELAkAgACgCECICRQ0AQcalwABBAyACEMYBRQ0AQQEMAQsCQAJAAkAgACgCACIDRQRAQQAhAwwBC0EAIQIDQAJAIAAoAggiBCAAKAIETw0AIAMgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkAgAkUNACAAKAIQIgNFDQBB+aTAAEECIAMQxgFFDQBBAQwFCyAAEBkNAiACQQFrIQIgACgCACIDDQALQQAhAwsgACgCECIEBEBBAUH5nsAAQQEgBBDGAQ0DGiAAKAIAIQMLIANFDQEgACgCCCICIAAoAgRPDQEgAiADai0AAEH1AEcNASAAIAJBAWo2AghBAAwCC0EBDAELAkAgACgCECICRQ0AQcmlwABBBCACEMYBRQ0AQQEMAQsgABAZCyABQeAAaiQAC9AaAgl/An4jAEEgayIGJAACQAJAAkACQAJAAkACQAJAAkAgACgCACIDBEAgACgCCCICIAAoAgRPDQMgACACQQFqNgIIIAIgA2otAAAiAUHhAGsiBEH/AXEiBUEZS0G/9/MdIAV2QQFxRXINAiAAKAIQIgANAUEAIQMMCQsgACgCECIARQRAQQAhAwwJC0HxpMAAQQEgABDGASEDDAgLIARB/wFxQQJ0IgFB4KjAAGooAgAgAUH4p8AAaigCACAAEMYBIQMMBwsgACAAKAIMQQFqIgQ2AgwgBEH0A00EQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUHBAGsOFAIGDQUNBA0NDQ0NDQ0NAQEAAAIDDQsgACgCECICBEBBASEDQf2ewABBASACEMYBDRUgACgCACIDRQ0SCyAAKAIIIgIgACgCBE8NESACIANqLQAAQcwARw0RIAAgAkEBajYCCCAGQRBqIAAQOSAGLQAQDQcgBikDGCIKUEUNBgwRCyAAKAIQIgIEQEEBIQNB/p7AAEEBIAIQxgENFAsgACgCECEDIAFB0ABHDQcgA0UNCEGWpcAAQQYgAxDGAUUNCAwSCyAAKAIQIgIEQEEBIQNB+6TAAEEBIAIQxgENEwtBASEDIAAQGQ0SIAFBwQBGBEAgACgCECIBBEBBnKXAAEECIAEQxgENFAsgAEEBEBMNEwsgACgCECIBRQ0QQfykwABBASABEMYBRQ0QDBILIAAoAhAiAQRAQQEhA0H6nsAAQQEgARDGAQ0SCyAGQQhqIQNBACEBAn8CQCAAKAIAIgJFDQADQAJAIAAoAggiBCAAKAIETw0AIAIgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkAgAUUNACAAKAIQIgJFDQBB+aTAAEECIAIQxgFFDQBBAQwDC0EBIAAQGQ0CGiABQQFqIQEgACgCACICDQALC0EACyECIAMgATYCBCADIAI2AgAgBigCCA0QIAYoAgxBAUYEQCAAKAIQIgFFDRBBASEDQfiewABBASABEMYBDRILIAAoAhAiAUUND0EBIQNB+Z7AAEEBIAEQxgFFDQ8MEQtBACEBIwBBEGsiAyQAAkACQAJAAkAgACgCACICBEAgACgCCCIEIAAoAgQiBU8NAyACIARqLQAAQccARw0DIAAgBEEBaiIBNgIIIAEgBU8NASABIAJqLQAAQd8ARw0BIAAgBEECajYCCAwCCyAAKAIQIgJFDQNB8aTAAEEBIAIQxgEhAQwDCwNAAkACQAJAAkAgASAFSQRAIAEgAmotAABB3wBGDQELIAEgBUYNAyABIAJqLQAAIgRBMGsiB0H/AXFBCkkNAiAEQeEAa0H/AXFBGkkNASAEQcEAa0H/AXFBGk8NAyAEQR1rIQcMAgsgACABQQFqNgIIIApCfVYNAiAKQgF8IQoMBAsgBEHXAGshBwsgACABQQFqIgE2AgggAyAKEGQgAykDCEIAUg0AIAMpAwAiCyAHrUL/AYN8IgogC1oNAQsLAkAgACgCECIBRQ0AQcikwABBECABEMYBRQ0AQQEhAQwDC0EAIQEgAEEAOgAEIABBADYCAAwCCyAKQgF8IQsLAkAgACgCECIBBEAgC1ANAUHzpMAAQQQgARDGAQRAQQEhAQwDCyAAIAAoAhRBAWo2AhQgAEIBEFYEQEEBIQEMAwtCASEKA0AgCiALUQRAIAAoAhAiAkUNA0EBIQFB96TAAEECIAIQxgFFDQMMBAsCQCAKUA0AIAAoAhAiAUUNAEH5pMAAQQIgARDGAUUNAEEBIQEMBAtBASEBIAAgACgCFEEBajYCFCAKQgF8IQogAEIBEFZFDQALDAILIAAQGCEBDAELIAAQGCEBIAAgACgCFCALp2s2AhQLIANBEGokACABRQ0ODA8LIAAoAhAiAQRAQZ6lwABBBCABEMYBDQ8LQQEhA0EAIQEjAEEQayIEJAACQAJAAkACQCAAKAIAIgIEQCAAKAIIIgUgACgCBCIHTw0DIAIgBWotAABBxwBHDQMgACAFQQFqIgE2AgggASAHTw0BIAEgAmotAABB3wBHDQEgACAFQQJqNgIIDAILIAAoAhAiAkUNA0HxpMAAQQEgAhDGASEBDAMLA0ACQAJAAkACQCABIAdJBEAgASACai0AAEHfAEYNAQsgASAHRg0DIAEgAmotAAAiBUEwayIIQf8BcUEKSQ0CIAVB4QBrQf8BcUEaSQ0BIAVBwQBrQf8BcUEaTw0DIAVBHWshCAwCCyAAIAFBAWo2AgggCkJ9Vg0CIApCAXwhCgwECyAFQdcAayEICyAAIAFBAWoiATYCCCAEIAoQZCAEKQMIQgBSDQAgBCkDACILIAitQv8Bg3wiCiALWg0BCwsCQCAAKAIQIgFFDQBByKTAAEEQIAEQxgFFDQBBASEBDAMLQQAhASAAQQA6AAQgAEEANgIADAILIApCAXwhCwsgACgCECIBRQRAQQAhAQNAAkAgACgCCCIFIAAoAgRPDQAgAiAFai0AAEHFAEcNACAAIAVBAWo2AghBACEBDAMLAkAgAUUNACAAKAIQIgJFDQBBoqXAAEEDIAIQxgFFDQBBASEBDAMLIAAQJwRAQQEhAQwDCyABQQFrIQEgACgCACICDQALQQAhAQwBCwJAIAtQDQBB86TAAEEEIAEQxgEEQEEBIQEMAgsgACAAKAIUQQFqNgIUIABCARBWBEBBASEBDAILQgEhCgNAIAogC1EEQCAAKAIQIgJFDQJBASEBQfekwABBAiACEMYBRQ0CDAMLAkAgClANACAAKAIQIgFFDQBB+aTAAEECIAEQxgFFDQBBASEBDAMLQQEhASAAIAAoAhRBAWo2AhQgCkIBfCEKIABCARBWRQ0ACwwBCwJ/QQAgACgCACICRQ0AGkEAIQECQANAAkAgACgCCCIFIAAoAgRPDQAgAiAFai0AAEHFAEcNACAAIAVBAWo2AghBAAwDCwJAIAFFDQAgACgCECICRQ0AQaKlwABBAyACEMYBDQILIAAQJw0BIAFBAWshASAAKAIAIgINAAtBAAwBC0EBCyEBIAAgACgCFCALp2s2AhQLIARBEGokACABDQ8gACgCACICRQ0FIAAoAggiASAAKAIETw0FIAEgAmotAABBzABHDQUgACABQQFqNgIIIAZBEGogABA5IAYtABANBiAGKQMYIgpQDQ0gACgCECIBBEBBoqXAAEEDIAEQxgENDwsgACAKEFZFDQ0MDgtBACEBIwBBIGsiAiQAAkACQAJAAkACfgJAAkACQCAAKAIAIgUEQCAAKAIIIgMgACgCBCIHSQRAIAMgBWotAABB3wBGDQMLIAMgByADIAdLGyEJIAMhAQNAIAEgB0kEQCABIAVqLQAAQd8ARg0DCyABIAlGDQYCQCABIAVqLQAAIgRBMGsiCEH/AXFBCkkNACAEQeEAa0H/AXFBGk8EQCAEQcEAa0H/AXFBGk8NCCAEQR1rIQgMAQsgBEHXAGshCAsgACABQQFqIgE2AgggAiAKEGQgAikDCEIAUg0GIAIpAwAiCyAIrUL/AYN8IgogC1oNAAsMBQsgACgCECIDRQ0HQfGkwABBASADEMYBIQEMBwsgACABQQFqNgIIIApCf1INAQwDCyAAIANBAWo2AghCAAwBCyAKQgF8CyEKIAogA0EBa61aDQBBASEBIAAoAhAhAyAAKAIMQQFqIgRB9ANLDQEgA0UEQEEAIQEMBAsgAkEYaiIFIABBCGoiAykCADcDACAAIAQ2AgwgAyAKPgIAIAIgACkCADcDECAAEBkhASADIAUpAwA3AgAgACACKQMQNwIADAMLQQAhASAAKAIQIgNFDQFByKTAAEEQIAMQxgFFDQFBASEBDAILIANFDQBB2KTAAEEZIAMQxgENAQsgACABOgAEQQAhASAAQQA2AgALIAJBIGokACABDQ0MDAsgACAKEFYNDCAAKAIQIgJFDQpBASEDQZGlwABBASACEMYBRQ0KDA0LIAAoAhAhAQJAIAYtABEiA0UEQCABRQ0BQcikwABBECABEMYBRQ0BDA0LIAFFDQBB2KTAAEEZIAEQxgENDAsgACADOgAEDAgLIANFDQBBkqXAAEEEIAMQxgENCgsgABAZRQ0IDAkLIAAoAhAiAUUNBEHIpMAAQRAgARDGAQ0JDAQLIAAoAhAhAQJAIAYtABEiA0UEQCABRQ0BQcikwABBECABEMYBRQ0BDAkLIAFFDQBB2KTAAEEZIAEQxgENCAsgACADOgAEDAQLIAAgAjYCCCAAQQAQEkUNBQwGCyAAKAIQIgEEQEHYpMAAQRkgARDGAQ0GCyAAQQE6AAQMAgsgACgCECIBRQ0AQcikwABBECABEMYBDQQLQQAhAyAAQQA6AAQgAEEANgIADAQLQQAhAyAAQQA2AgAMAwsCQCABQdIARg0AIAAoAhAiAUUNAEGSpcAAQQQgARDGAQ0CCyAAEBkNAQtBACEDIAAoAgBFDQEgACAAKAIMQQFrNgIMDAELQQEhAwsgBkEgaiQAIAML9gcCFH8BfgJAAkACQAJAAkAgASgCAEUEQCABLQAODQEgASABLQAMIgZBAXM6AAwgASgCNCEDIAEoAjAhBAJAIAEoAgQiAkUNACACIANJBEAgAiAEaiwAAEG/f0oNAQwHCyACIANHDQYLAkAgAiADRwRAAn8gAiAEaiIELAAAIgNBAE4EQCADQf8BcQwBCyAELQABQT9xIQcgA0EfcSEFIAVBBnQgB3IgA0FfTQ0AGiAELQACQT9xIAdBBnRyIQcgByAFQQx0ciADQXBJDQAaIAVBEnRBgIDwAHEgBC0AA0E/cSAHQQZ0cnILIQNBASEFIAZBAXENAQJAIANBgAFJDQBBAiEFIANBgBBJDQBBA0EEIANBgIAESRshBQsgACACNgIEIABBATYCACAAIAIgBWoiADYCCCABIAA2AgQPCyAGQQFxRQ0FCyAAIAI2AgggACACNgIEIABBADYCAA8LIAEoAhwiBiABKAI0IgRGDQIgASgCMCEKAkAgBCIDIAYgASgCPCIIQQFrIhBqIgJNDQAgASgCOCENIAYgCmohESAGIAhqIQcgBiABKAIQIgtrIRIgASgCGCIDIAZqIQ4gCCADayETIAEpAwghFiABKAIkIg9Bf0YhCSAPIQUgBiEDA0AgAyAGRw0BAkACQCAWIAIgCmoxAACIp0EBcUUEQCABIAc2AhwgByEDIAkNAkEAIQIMAQsgCyALIAUgBSALSRsgCRsiAyAIIAMgCEsbIQwgAyECAkACQAJAA0AgAiAMRgRAQQAgBSAJGyEMIAshAgNAIAIgDE0EQCABIAc2AhwgD0F/RwRAIAFBADYCJAsgACAHNgIIIAAgBjYCBCAAQQA2AgAPCyACQQFrIgIgCE8NBSACIAZqIgMgBE8NAyACIA1qLQAAIAMgCmotAABGDQALIAEgDjYCHCATIQIgDiEDIAlFDQUMBgsgAiAGaiAETw0CIAIgEWohFCACIA1qIAJBAWohAi0AACAULQAARg0ACyACIBJqIQMgCQ0EQQAhAgwDCyADIARBxJrAABBpAAsgBCADIAZqIgAgACAESRsgBEHUmsAAEGkACyACIAhBtJrAABBpAAsgASACNgIkIAIhBQsgAyAQaiICIARJDQALIAQhAwtBACEFIANFDQEgAyECA0ACQCACIARJBEAgAiAKaiwAAEG/f0wNASACIQUMBAsgAiAERw0AIAQhBQwDCyACQQFqIgINAAsMAQsgAEECNgIADwsgACAFNgIIIAAgBjYCBCAAQQE2AgAgASAFIAMgAyAFSRs2AhwPCyAAQQI2AgAPCyAAQQI2AgAgAUEBOgAODwsgBCADIAIgA0GcnMAAEJ0BAAvGBgEIfwJAAkAgASAAQQNqQXxxIgIgAGsiCEkNACABIAhrIgZBBEkNACAGQQNxIQdBACEBAkAgACACRiIJDQACQCAAIAJrIgRBfEsEQEEAIQIMAQtBACECA0AgASAAIAJqIgMsAABBv39KaiADQQFqLAAAQb9/SmogA0ECaiwAAEG/f0pqIANBA2osAABBv39KaiEBIAJBBGoiAg0ACwsgCQ0AIAAgAmohAwNAIAEgAywAAEG/f0pqIQEgA0EBaiEDIARBAWoiBA0ACwsgACAIaiECAkAgB0UNACACIAZBfHFqIgAsAABBv39KIQUgB0EBRg0AIAUgACwAAUG/f0pqIQUgB0ECRg0AIAUgACwAAkG/f0pqIQULIAZBAnYhBiABIAVqIQQDQCACIQAgBkUNAkHAASAGIAZBwAFPGyIFQQNxIQcgBUECdCEIQQAhAyAGQQRPBEAgACAIQfAHcWohCSAAIQEDQCABKAIAIgJBf3NBB3YgAkEGdnJBgYKECHEgA2ogASgCBCICQX9zQQd2IAJBBnZyQYGChAhxaiABKAIIIgJBf3NBB3YgAkEGdnJBgYKECHFqIAEoAgwiAkF/c0EHdiACQQZ2ckGBgoQIcWohAyABQRBqIgEgCUcNAAsLIAYgBWshBiAAIAhqIQIgA0EIdkH/gfwHcSADQf+B/AdxakGBgARsQRB2IARqIQQgB0UNAAsCfyAAIAVB/AFxQQJ0aiIAKAIAIgFBf3NBB3YgAUEGdnJBgYKECHEiASAHQQFGDQAaIAEgACgCBCIBQX9zQQd2IAFBBnZyQYGChAhxaiIBIAdBAkYNABogACgCCCIAQX9zQQd2IABBBnZyQYGChAhxIAFqCyIBQQh2Qf+BHHEgAUH/gfwHcWpBgYAEbEEQdiAEag8LIAFFBEBBAA8LIAFBA3EhAgJAIAFBBEkEQAwBCyABQXxxIQUDQCAEIAAgA2oiASwAAEG/f0pqIAFBAWosAABBv39KaiABQQJqLAAAQb9/SmogAUEDaiwAAEG/f0pqIQQgBSADQQRqIgNHDQALCyACRQ0AIAAgA2ohAQNAIAQgASwAAEG/f0pqIQQgAUEBaiEBIAJBAWsiAg0ACwsgBAvNBgEOfyMAQRBrIgYkAEEBIQwCQCACKAIUIglBIiACKAIYIg0oAhAiDhEAAA0AAkAgAUUEQEEAIQIMAQtBACABayEPIAAhByABIQMCQAJ/AkACQANAIAMgB2ohEEEAIQICQANAIAIgB2oiCi0AACIFQf8Aa0H/AXFBoQFJIAVBIkZyIAVB3ABGcg0BIAMgAkEBaiICRw0ACyADIAhqDAQLIApBAWohBwJAIAosAAAiC0EATgRAIAtB/wFxIQMMAQsgBy0AAEE/cSEDIAtBH3EhBSAKQQJqIQcgC0FfTQRAIAVBBnQgA3IhAwwBCyAHLQAAQT9xIANBBnRyIQMgCkEDaiEHIAtBcEkEQCADIAVBDHRyIQMMAQsgBUESdEGAgPAAcSAHLQAAQT9xIANBBnRyciEDIApBBGohBwsgBkEEaiADQYGABBAiAkACQCAGLQAEQYABRg0AIAYtAA8gBi0ADmtB/wFxQQFGDQAgBCACIAhqIgVLDQMCQCAERQ0AIAEgBEsEQCAAIARqLAAAQb9/Sg0BDAULIAEgBEcNBAsCQCAFRQ0AIAEgBUsEQCAAIAhqIAJqLAAAQb9/TA0FDAELIAUgD2oNBAsgCSAAIARqIAggBGsgAmogDSgCDCIFEQEADQECQCAGLQAEQYABRgRAIAkgBigCCCAOEQAARQ0BDAMLIAkgBi0ADiIEIAZBBGpqIAYtAA8gBGsgBREBAA0CCwJ/QQEgA0GAAUkNABpBAiADQYAQSQ0AGkEDQQQgA0GAgARJGwsgCGogAmohBAsCf0EBIANBgAFJDQAaQQIgA0GAEEkNABpBA0EEIANBgIAESRsLIAhqIgUgAmohCCAQIAdrIgNFDQMMAQsLDAULIAAgASAEIAVBhLHAABCdAQALIAIgBWoLIgIgBEkNAEEAIQMCQCAERQ0AIAEgBEsEQCAEIgMgAGosAABBv39MDQIMAQsgBCIDIAFHDQELIAJFBEBBACECDAILIAEgAksEQCADIQQgACACaiwAAEG/f0oNAgwBCyADIQQgASACRg0BCyAAIAEgBCACQZSxwAAQnQEACyAJIAAgA2ogAiADayANKAIMEQEADQAgCUEiIA4RAAAhDAsgBkEQaiQAIAwLlQYBCH8jAEEwayIBJAACQAJ/AkACQAJAIAAoAgAiBQRAIAAoAggiBCAEIAAoAgQiByAEIAdLG2shCCAFIQMDQCACIAhqRQ0DIAAgAiAEakEBajYCCCACQQFqIQIgAyAEaiADQQFqIQMtAAAiBkEwa0H/AXFBCkkgBkHhAGtB/wFxQQZJcg0ACyAGQd8ARw0CIAIgBGpBAWshBgJAIAQEQCAEIAdJBEAgBiAHSw0IIAQgBWosAABBQEgNCAwCCyAGIAdNDQEMBwsgBiAHSw0GCyACQQFrIgJBAXFFBEAgAUKAgICAIDcCGCABIAMgBGpBAWsiAzYCFCABIAI2AhAgASAEIAVqIgU2AgwDQCABQQxqEBciBEGAgMQASQ0ACyAEQYGAxABGDQILIAAoAhAiA0UNA0HIpMAAQRAgAxDGAUUNA0EBDAQLQQAgACgCECIARQ0DGkHxpMAAQQEgABDGAQwDC0EAIAAoAhAiAEUNAhpBASAAQSIQnAENAhogAUKAgICAIDcCGCABIAM2AhQgASACNgIQIAEgBTYCDCABQQxqEBciAkGBgMQARwRAIAFBKGohBANAAkACQAJAAkAgAkGAgMQARwRAIAJBJ0YNASABQSBqIAIQIyABLQAgQYABRw0CQYABIQMDQAJAIANBgAFHBEAgAS0AKiIFIAEtACtPDQcgASAFQQFqOgAqIAFBIGogBWotAAAhAgwBC0EAIQMgBEEANgIAIAEoAiQhAiABQgA3AyALIAAgAhCcAUUNAAsMAwtBhJvAAEErIAFBIGpB9JrAAEHUmcAAEGUACyAAQScQnAFFDQIMAQsgAS0AKiICIAEtACsiAyACIANLGyEDA0AgAiADRg0CIAFBIGogAmohBSACQQFqIQIgACAFLQAAEJwBRQ0ACwtBAQwFCyABQQxqEBciAkGBgMQARw0ACwsgAEEiEJwBDAILIAAoAhAiA0UNAEHIpMAAQRAgAxDGAUUNAEEBDAELIABBADoABCAAQQA2AgBBAAsgAUEwaiQADwsgBSAHIAQgBkH4o8AAEJ0BAAupBQEHfwJAIAAoAghBAXFFIgQgACgCACIJRXFFBEACQCAEDQAgASACaiEHAkAgACgCDCIGRQRAIAEhBAwBCyABIQQDQCAEIgMgB0YNAgJ/IANBAWogAywAACIIQQBODQAaIANBAmogCEFgSQ0AGiADQQNqIAhBcEkNABogA0EEagsiBCADayAFaiEFIAZBAWsiBg0ACwsgBCAHRg0AIAQsAAAaIAUgAgJ/AkAgBUUNACACIAVLBEAgASAFaiwAAEG/f0oNAUEADAILIAIgBUYNAEEADAELIAELIgMbIQIgAyABIAMbIQELIAlFDQEgACgCBCEHAkAgAkEQTwRAIAEgAhAbIQMMAQsgAkUEQEEAIQMMAQsgAkEDcSEGAkAgAkEESQRAQQAhA0EAIQUMAQsgAkEMcSEIQQAhA0EAIQUDQCADIAEgBWoiBCwAAEG/f0pqIARBAWosAABBv39KaiAEQQJqLAAAQb9/SmogBEEDaiwAAEG/f0pqIQMgCCAFQQRqIgVHDQALCyAGRQ0AIAEgBWohBANAIAMgBCwAAEG/f0pqIQMgBEEBaiEEIAZBAWsiBg0ACwsCQCADIAdJBEAgByADayEEQQAhAwJAAkACQCAALQAgQQFrDgIAAQILIAQhA0EAIQQMAQsgBEEBdiEDIARBAWpBAXYhBAsgA0EBaiEDIAAoAhAhBiAAKAIYIQUgACgCFCEAA0AgA0EBayIDRQ0CIAAgBiAFKAIQEQAARQ0AC0EBDwsMAgsgACABIAIgBSgCDBEBAARAQQEPC0EAIQMDQCADIARGBEBBAA8LIANBAWohAyAAIAYgBSgCEBEAAEUNAAsgA0EBayAESQ8LIAAoAhQgASACIAAoAhgoAgwRAQAPCyAAKAIUIAEgAiAAKAIYKAIMEQEAC7gFAgh/AX4CQCABKAIIIgIgASgCBCIETw0AIAEoAgAgAmotAABB9QBHDQBBASEHIAEgAkEBaiICNgIICwJAAkAgAiAETw0BIAEoAgAiBSACai0AAEEwayIDQf8BcSIGQQlLDQEgASACQQFqIgI2AgggBkUEQEEAIQMMAQsgAiAEIAIgBEsbIQYgA0H/AXEhAwNAIAIgBkYNASACIAVqLQAAQTBrQf8BcSIIQQlLDQEgASACQQFqIgI2AgggA61CCn4iCkIgiFAEQCAIIAqnIghqIgMgCE8NAQsLDAELAkAgAiAETw0AIAIgBWotAABB3wBHDQAgASACQQFqIgI2AggLAkACQAJAAkAgAiACIANqIgZNBEAgASAGNgIIIAQgBkkNBSACRQ0CIAIgBEkNAQwCCwwECyACIAVqLAAAQb9/TA0BCyAGRSAEIAZNckUEQCAFIAZqLAAAQb9/TA0BCyACIAVqIQQgBw0BIABCATcCCCAAIAM2AgQgACAENgIADwsgBSAEIAIgBkGIpMAAEJ0BAAtBACEHQQAgA2shASAFIAZqIgZBAWshCEEAIQICQAJAAn8DQCABIAJGBEAgBCEBQQEMAgsgAiAIaiACQQFrIgUhAi0AAEHfAEcNAAsgAyAFaiEHAkACQEEAIANrIAVGDQAgAyAHSwRAIAUgBmosAABBv39KDQEMBQsgBQ0EQQAhAiADQX9zIAVGDQELIAMgB0EBaiIBSwRAIAUgBmpBAWosAABBv39MDQMgASECDAELIAMhAiAFQX9HDQILIAIgBGohASADIAJrIQMgBAshAiADRQRADAMLIAAgAzYCDCAAIAE2AgggACAHNgIEIAAgAjYCAA8LIAQgAyABIANBqKTAABCdAQALIAQgA0EAIAdBmKTAABCdAQALIABBADYCACAAQQA6AAQL4QUCB38CfiMAQSBrIgQkAAJ/AkACQCAAKAIAIgNFDQAgACgCCCICIAAoAgQiBU8NACACIANqIgEtAABBwgBGBEAgACACQQFqIgE2AggCQAJAAkACQAJAIAKtAn4CQCABIAVJBEAgASADai0AAEHfAEYNAQsgASAFIAEgBUsbIQcDQAJAIAEgBUkEQCABIANqLQAAQd8ARg0BCyABIAdGDQQCQCABIANqLQAAIgJBMGsiBkH/AXFBCkkNACACQeEAa0H/AXFBGk8EQCACQcEAa0H/AXFBGk8NBiACQR1rIQYMAQsgAkHXAGshBgsgACABQQFqIgE2AgggBCAIEGQgBCkDCEIAUg0EIAQpAwAiCSAGrUL/AYN8IgggCVoNAQwECwsgACABQQFqNgIIIAhCf1ENAiAIQgF8DAELIAAgAkECajYCCEIACyIIWA0AQQEhASAAKAIQIQIgACgCDEEBaiIDQfQDSw0BIAJFDQQgBEEYaiICIABBCGoiASkCADcDACAAIAM2AgwgASAIPgIAIAQgACkCADcDECAAECAgASACKQMANwIAIAAgBCkDEDcCAEH/AXEMCAtBACEBIAAoAhAiAkUNAkHIpMAAQRAgAhDGAQ0BDAILIAJFDQFB2KTAAEEZIAIQxgFFDQELQQIMBQsgACABOgAEIABBADYCAAtBAAwDCyABLQAAQckARw0AIAAgAkEBajYCCCAAQQAQEkUNAUECDAILQQJBACAAQQAQEhsMAQsCQCAAKAIQIgFFDQBB/J7AAEEBIAEQxgFFDQBBAgwBC0EBIAAoAgAiAUUNABpBACECAkADQAJAIAAoAggiAyAAKAIETw0AIAEgA2otAABBxQBHDQAgACADQQFqNgIIQQEMAwsCQCACRQ0AIAAoAhAiA0UNAEECQfmkwABBAiADEMYBDQMaCyAAEDENASACQQFrIQIgACgCACIBDQALQQEMAQtBAgsgBEEgaiQAC78FAQh/QStBgIDEACAAKAIcIghBAXEiBhshDCAEIAZqIQYCQCAIQQRxRQRAQQAhAQwBCwJAIAJBEE8EQCABIAIQGyEFDAELIAJFBEAMAQsgAkEDcSEJAkAgAkEESQRADAELIAJBDHEhCgNAIAUgASAHaiILLAAAQb9/SmogC0EBaiwAAEG/f0pqIAtBAmosAABBv39KaiALQQNqLAAAQb9/SmohBSAKIAdBBGoiB0cNAAsLIAlFDQAgASAHaiEHA0AgBSAHLAAAQb9/SmohBSAHQQFqIQcgCUEBayIJDQALCyAFIAZqIQYLIAAoAgBFBEAgACgCFCIGIAAoAhgiACAMIAEgAhB9BEBBAQ8LIAYgAyAEIAAoAgwRAQAPCwJAAkACQCAGIAAoAgQiB08EQCAAKAIUIgYgACgCGCIAIAwgASACEH1FDQFBAQ8LIAhBCHFFDQEgACgCECEIIABBMDYCECAALQAgIQpBASEFIABBAToAICAAKAIUIgkgACgCGCILIAwgASACEH0NAiAHIAZrQQFqIQUCQANAIAVBAWsiBUUNASAJQTAgCygCEBEAAEUNAAtBAQ8LIAkgAyAEIAsoAgwRAQAEQEEBDwsgACAKOgAgIAAgCDYCEEEADwsgBiADIAQgACgCDBEBACEFDAELIAcgBmshBgJAAkACQCAALQAgIgVBAWsOAwABAAILIAYhBUEAIQYMAQsgBkEBdiEFIAZBAWpBAXYhBgsgBUEBaiEFIAAoAhAhCiAAKAIYIQggACgCFCEAAkADQCAFQQFrIgVFDQEgACAKIAgoAhARAABFDQALQQEPC0EBIQUgACAIIAwgASACEH0NACAAIAMgBCAIKAIMEQEADQBBACEFA0AgBSAGRgRAQQAPCyAFQQFqIQUgACAKIAgoAhARAABFDQALIAVBAWsgBkkPCyAFC84GAQN/IwBBIGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEOKAYBAQEBAQEBAQIEAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEIAQEBAQcACyABQdwARg0ECyACQQFxRSABQYAGSXINByABEDJFDQcgA0EAOgAKIANBADsBCCADIAFBFHZB9qvAAGotAAA6AAsgAyABQQR2QQ9xQfarwABqLQAAOgAPIAMgAUEIdkEPcUH2q8AAai0AADoADiADIAFBDHZBD3FB9qvAAGotAAA6AA0gAyABQRB2QQ9xQfarwABqLQAAOgAMIAFBAXJnQQJ2IgIgA0EIaiIFaiIEQfsAOgAAIARBAWtB9QA6AAAgBSACQQJrIgJqQdwAOgAAIANBEGoiBCABQQ9xQfarwABqLQAAOgAAIABBCjoACyAAIAI6AAogACADKQIINwIAIANB/QA6ABEgAEEIaiAELwEAOwEADAkLIABBgAQ7AQogAEIANwECIABB3OgBOwEADAgLIABBgAQ7AQogAEIANwECIABB3OQBOwEADAcLIABBgAQ7AQogAEIANwECIABB3NwBOwEADAYLIABBgAQ7AQogAEIANwECIABB3LgBOwEADAULIABBgAQ7AQogAEIANwECIABB3OAAOwEADAQLIAJBgAJxRQ0BIABBgAQ7AQogAEIANwECIABB3M4AOwEADAMLIAJBgIAEcQ0BCyABEFNFBEAgA0EAOgAWIANBADsBFCADIAFBFHZB9qvAAGotAAA6ABcgAyABQQR2QQ9xQfarwABqLQAAOgAbIAMgAUEIdkEPcUH2q8AAai0AADoAGiADIAFBDHZBD3FB9qvAAGotAAA6ABkgAyABQRB2QQ9xQfarwABqLQAAOgAYIAFBAXJnQQJ2IgIgA0EUaiIFaiIEQfsAOgAAIARBAWtB9QA6AAAgBSACQQJrIgJqQdwAOgAAIANBHGoiBCABQQ9xQfarwABqLQAAOgAAIABBCjoACyAAIAI6AAogACADKQIUNwIAIANB/QA6AB0gAEEIaiAELwEAOwEADAILIAAgATYCBCAAQYABOgAADAELIABBgAQ7AQogAEIANwECIABB3MQAOwEACyADQSBqJAALsgYBBH8jAEEgayICJAACQAJAAkACQAJAAkACQAJAAkACQCABDigABwcHBwcHBwcBAwcHAgcHBwcHBwcHBwcHBwcHBwcHBwcHBAcHBwcFBgsgAEGABDsBCiAAQgA3AQIgAEHc4AA7AQAMCAsgAEGABDsBCiAAQgA3AQIgAEHc6AE7AQAMBwsgAEGABDsBCiAAQgA3AQIgAEHc5AE7AQAMBgsgAEGABDsBCiAAQgA3AQIgAEHc3AE7AQAMBQsgAEGABDsBCiAAQgA3AQIgAEHcxAA7AQAMBAsgAEGABDsBCiAAQgA3AQIgAEHczgA7AQAMAwsgAUHcAEYNAQsCQCABQf8FTQ0AIAEQMkUNACACQQA6AAogAkEAOwEIIAIgAUEUdkHkmsAAai0AADoACyACIAFBBHZBD3FB5JrAAGotAAA6AA8gAiABQQh2QQ9xQeSawABqLQAAOgAOIAIgAUEMdkEPcUHkmsAAai0AADoADSACIAFBEHZBD3FB5JrAAGotAAA6AAwgAUEBcmdBAnYiAyACQQhqIgVqIgRB+wA6AAAgBEEBa0H1ADoAACAFIANBAmsiA2pB3AA6AAAgAkEQaiIEIAFBD3FB5JrAAGotAAA6AAAgAEEKOgALIAAgAzoACiAAIAIpAgg3AgAgAkH9ADoAESAAQQhqIAQvAQA7AQAMAgsgARBTRQRAIAJBADoAFiACQQA7ARQgAiABQRR2QeSawABqLQAAOgAXIAIgAUEEdkEPcUHkmsAAai0AADoAGyACIAFBCHZBD3FB5JrAAGotAAA6ABogAiABQQx2QQ9xQeSawABqLQAAOgAZIAIgAUEQdkEPcUHkmsAAai0AADoAGCABQQFyZ0ECdiIDIAJBFGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgA0ECayIDakHcADoAACACQRxqIgQgAUEPcUHkmsAAai0AADoAACAAQQo6AAsgACADOgAKIAAgAikCFDcCACACQf0AOgAdIABBCGogBC8BADsBAAwCCyAAIAE2AgQgAEGAAToAAAwBCyAAQYAEOwEKIABCADcBAiAAQdy4ATsBAAsgAkEgaiQAC84FAgZ/An4CQCACRQ0AIAJBB2siA0EAIAIgA08bIQcgAUEDakF8cSABayEIQQAhAwNAAkACQAJAIAEgA2otAAAiBcAiBkEATgRAIAggA2tBA3ENASADIAdPDQIDQCABIANqIgQoAgQgBCgCAHJBgIGChHhxDQMgA0EIaiIDIAdJDQALDAILQoCAgICAICEKQoCAgIAQIQkCQAJAAn4CQAJAAkACQAJAAkACQAJAAkAgBUHgs8AAai0AAEECaw4DAAECCgsgA0EBaiIEIAJJDQJCACEKQgAhCQwJC0IAIQogA0EBaiIEIAJJDQJCACEJDAgLQgAhCiADQQFqIgQgAkkNAkIAIQkMBwsgASAEaiwAAEG/f0oNBgwHCyABIARqLAAAIQQCQAJAIAVB4AFrIgUEQCAFQQ1GBEAMAgUMAwsACyAEQWBxQaB/Rg0EDAMLIARBn39KDQIMAwsgBkEfakH/AXFBDE8EQCAGQX5xQW5HDQIgBEFASA0DDAILIARBQEgNAgwBCyABIARqLAAAIQQCQAJAAkACQCAFQfABaw4FAQAAAAIACyAGQQ9qQf8BcUECSyAEQUBOcg0DDAILIARB8ABqQf8BcUEwTw0CDAELIARBj39KDQELIAIgA0ECaiIETQRAQgAhCQwFCyABIARqLAAAQb9/Sg0CQgAhCSADQQNqIgQgAk8NBCABIARqLAAAQb9/TA0FQoCAgICA4AAMAwtCgICAgIAgDAILQgAhCSADQQJqIgQgAk8NAiABIARqLAAAQb9/TA0DC0KAgICAgMAACyEKQoCAgIAQIQkLIAAgCiADrYQgCYQ3AgQgAEEBNgIADwsgBEEBaiEDDAILIANBAWohAwwBCyACIANNDQADQCABIANqLAAAQQBIDQEgAiADQQFqIgNHDQALDAILIAIgA0sNAAsLIAAgAjYCCCAAIAE2AgQgAEEANgIAC/4FAQV/IABBCGsiASAAQQRrKAIAIgNBeHEiAGohAgJAAkAgA0EBcQ0AIANBAnFFDQEgASgCACIDIABqIQAgASADayIBQcjSwAAoAgBGBEAgAigCBEEDcUEDRw0BQcDSwAAgADYCACACIAIoAgRBfnE2AgQgASAAQQFyNgIEIAIgADYCAA8LIAEgAxA7CwJAAkACQAJAAkAgAigCBCIDQQJxRQRAIAJBzNLAACgCAEYNAiACQcjSwAAoAgBGDQMgAiADQXhxIgIQOyABIAAgAmoiAEEBcjYCBCAAIAFqIAA2AgAgAUHI0sAAKAIARw0BQcDSwAAgADYCAA8LIAIgA0F+cTYCBCABIABBAXI2AgQgACABaiAANgIACyAAQYACSQ0CIAEgABBDQQAhAUHg0sAAQeDSwAAoAgBBAWsiADYCACAADQRBqNDAACgCACIABEADQCABQQFqIQEgACgCCCIADQALC0Hg0sAAQf8fIAEgAUH/H00bNgIADwtBzNLAACABNgIAQcTSwABBxNLAACgCACAAaiIANgIAIAEgAEEBcjYCBEHI0sAAKAIAIAFGBEBBwNLAAEEANgIAQcjSwABBADYCAAsgAEHY0sAAKAIAIgNNDQNBzNLAACgCACICRQ0DQQAhAEHE0sAAKAIAIgRBKUkNAkGg0MAAIQEDQCACIAEoAgAiBU8EQCACIAUgASgCBGpJDQQLIAEoAgghAQwACwALQcjSwAAgATYCAEHA0sAAQcDSwAAoAgAgAGoiADYCACABIABBAXI2AgQgACABaiAANgIADwsgAEH4AXFBsNDAAGohAgJ/QbjSwAAoAgAiA0EBIABBA3Z0IgBxRQRAQbjSwAAgACADcjYCACACDAELIAIoAggLIQAgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBqNDAACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0Hg0sAAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEHY0sAAQX82AgALC+kEAQV/An8CQCACQQJPBEAgASgCBCIEQf//AXFFBEAgBEEQdAwDCyAEQf8HcSEFIARBgIACcSEDIARBgPgBcSIGQYD4AUYEQCADQRB0IQMgA0GAgID8B3IgBUUNAxogAyAFQQ10ckGAgID+B3IMAwsgA0EQdCEDIAZFDQEgBkENdEGAgID8AHEgBUENdHJBgICAwANqIANyDAILQQFBAUH8gsAAEGkACyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgA0GAgIDYA3IgBUEXdGtyCyEFAn8gBEGAgHxxIARBEHYiA0H//wFxRQ0AGiADQf8HcSEEIANBgIACcSEGIANBgPgBcSIHQYD4AUYEQCAGQRB0IQYgBkGAgID8B3IgBEUNARogBiADQQ10ckGAgID+B3IMAQsgBkEQdCEDIAdBDXRBgICA/ABxIARBDXRyQYCAgMADaiADciAHDQAaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSADQYCAgNgDciAEQRd0a3ILIQQgAAJ/AkAgAkECRwRAIAEoAggiAkH//wFxRQRAIAJBEHQMAwsgAkH/B3EhASACQYCAAnEhAyACQYD4AXEiAkGA+AFGBEAgA0EQdCECIAJBgICA/AdyIAFFDQMaIAIgAUENdHJBgICA/gdyDAMLIANBEHQhAyACRQ0BIAJBDXRBgICA/ABxIAFBDXRyQYCAgMADaiADcgwCC0ECQQJBjIPAABBpAAsgASABZ0EQayIBQf//A3FBCGp0Qf///wNxIANBgICA2ANyIAFBF3Rrcgs2AgggACAENgIEIAAgBTYCAAuLBQEEfyMAQSBrIgMkAAJAIAAQIEH/AXEiAUECRgRAQQEhAQwBCwJAAkACQAJAIAAoAgAiBEUNACAAKAIIIgIgACgCBE8NACACIARqLQAAQfAARw0AIAAgAkEBajYCCCAAKAIQIQIgAUEBcUUEQCACRQ0CQQEhAUH8nsAAQQEgAhDGAQ0FDAILIAJFDQFB+aTAAEECIAIQxgFFDQFBASEBDAQLIAFBAXFFDQIMAQsCQAJAIAAoAgBFDQAgAyAAEB8gAygCAEUNASADQRhqIANBCGopAgA3AwAgAyADKQIANwMQAkAgACgCECICRQ0AQQEhASADQRBqIAIQFg0FIAAoAhAiAkUNAEHNpcAAQQMgAhDGAQ0FCyAAEBkEQEEBIQEMBQsDQCAAKAIAIgJFDQMgACgCCCIBIAAoAgRPDQMgASACai0AAEHwAEcNAyAAIAFBAWo2AgggACgCECIBBEBB+aTAAEECIAEQxgEEQEEBIQEMBwsgACgCAEUNAgsgAyAAEB8gAygCAEUNAiADQRhqIANBCGopAgA3AwAgAyADKQIANwMQAkAgACgCECICRQ0AQQEhASADQRBqIAIQFg0GIAAoAhAiAkUNAEHNpcAAQQMgAhDGAQ0GC0EBIQEgABAZRQ0ACwwECyAAKAIQIgBFDQJB8aTAAEEBIAAQxgEhAQwDCyAAKAIQIQECQCADLQAEIgJFBEAgAUUNAUHIpMAAQRAgARDGAUUNAUEBIQEMBAsgAUUNAEHYpMAAQRkgARDGAUUNAEEBIQEMAwsgACACOgAEQQAhASAAQQA2AgAMAgsgACgCECIARQ0AQQEhAUH7nsAAQQEgABDGAQ0BC0EAIQELIANBIGokACABC8oEAg9/AX4jAEHQAGsiAyQAIANBDGqtQoCAgIDwAoQhEiAALQAMIQsgACgCBCEPIAAoAgAhDiAAKAIIIgdBFGohECAHQRhqIREDQAJAIAgiDUEBcQ0AIAYhCUEBIQgCQCACIAVPBEADQCABIAVqIQYCQAJAAkAgAiAFayIKQQdNBEAgAiAFRgRAIAkhBiACIQUgAiEEDAcLQQAhBANAIAQgBmotAABBCkYNAiAKIARBAWoiBEcNAAsgCSEGIAIhBSACIQQMBgsgA0EKIAYgChBHIAMoAgAiCkEBRw0BIAMoAgQhBAsgBCAFaiIEQQFqIQUgAiAETQ0BIAEgBGotAABBCkcNASAFIQYgDSEIDAQLIAkhBiACIQUgAiEEIApBAXFFDQMgDSEIDAMLIAIgBU8NAAsLIAkhBiACIQQLAkAgC0EBcUUEQCAAQQE6AAwgDkEBcUUEQCAHQfyNwABBBBCZAUUNAgwDCyADIA82AgwgAyASNwMoIANBAToATCADQQA2AkggA0IgNwJAIANCgICAgNAANwI4IANBAjYCMCADQQE2AiQgA0ECNgIUIANBhI7AADYCECADQQE2AhwgECgCACARKAIAIAMgA0EwajYCICADIANBKGo2AhggA0EQahApDQIMAQsgDEUNACAHQQoQnAENASAOQQFxBEAgB0GUjsAAQQcQmQENAgwBCyAHQfyNwABBBBCZAQ0BCyAMQQFqIQxBASELIAcgASAJaiAEIAlrEJkBRQ0BCwsgA0HQAGokACANQX9zQQFxC+sEAQp/IwBBMGsiAyQAIANBAzoALCADQSA2AhwgA0EANgIoIAMgATYCJCADIAA2AiAgA0EANgIUIANBADYCDAJ/AkACQAJAIAIoAhAiCkUEQCACKAIMIgBFDQEgAigCCCIBIABBA3RqIQQgAEEBa0H/////AXFBAWohByACKAIAIQADQCAAQQRqKAIAIgUEQCADKAIgIAAoAgAgBSADKAIkKAIMEQEADQQLIAEoAgAgA0EMaiABKAIEEQAADQMgAEEIaiEAIAFBCGoiASAERw0ACwwBCyACKAIUIgBFDQAgAEEFdCELIABBAWtB////P3FBAWohByACKAIIIQUgAigCACEAA0AgAEEEaigCACIBBEAgAygCICAAKAIAIAEgAygCJCgCDBEBAA0DCyADIAggCmoiAUEQaigCADYCHCADIAFBHGotAAA6ACwgAyABQRhqKAIANgIoIAFBDGooAgAhBEEAIQlBACEGAkACQAJAIAFBCGooAgBBAWsOAgACAQsgBEEDdCAFaiIMKAIADQEgDCgCBCEEC0EBIQYLIAMgBDYCECADIAY2AgwgAUEEaigCACEEAkACQAJAIAEoAgBBAWsOAgACAQsgBEEDdCAFaiIGKAIADQEgBigCBCEEC0EBIQkLIAMgBDYCGCADIAk2AhQgBSABQRRqKAIAQQN0aiIBKAIAIANBDGogASgCBBEAAA0CIABBCGohACALIAhBIGoiCEcNAAsLIAcgAigCBE8NASADKAIgIAIoAgAgB0EDdGoiACgCACAAKAIEIAMoAiQoAgwRAQBFDQELQQEMAQtBAAsgA0EwaiQAC48EAQ1/IAFBAWshDyAAKAIEIQogACgCACELIAAoAgghDAJAA0AgDg0BAkACQCACIARJDQADQCABIARqIQUCQAJAAkAgAiAEayIGQQdNBEAgAiAERw0BIAIhBAwFCwJAIAVBA2pBfHEiCCAFayIDBEBBACEAA0AgACAFai0AAEEKRg0FIAMgAEEBaiIARw0ACyADIAZBCGsiAE0NAQwDCyAGQQhrIQALA0BBgIKECCAIKAIAIglBipSo0ABzayAJckGAgoQIIAhBBGooAgAiCUGKlKjQAHNrIAlycUGAgYKEeHFBgIGChHhHDQIgCEEIaiEIIANBCGoiAyAATQ0ACwwBC0EAIQADQCAAIAVqLQAAQQpGDQIgBiAAQQFqIgBHDQALIAIhBAwDCyADIAZGBEAgAiEEDAMLA0AgAyAFai0AAEEKRgRAIAMhAAwCCyAGIANBAWoiA0cNAAsgAiEEDAILIAAgBGoiA0EBaiEEAkAgAiADTQ0AIAAgBWotAABBCkcNACAEIQUgBCEADAMLIAIgBE8NAAsLQQEhDiACIgAgByIFRg0CCwJAIAwtAAAEQCALQeSuwABBBCAKKAIMEQEADQELQQAhAyAAIAdHBEAgACAPai0AAEEKRiEDCyAAIAdrIQAgASAHaiEGIAwgAzoAACAFIQcgCyAGIAAgCigCDBEBAEUNAQsLQQEhDQsgDQuZBAEJfyMAQSBrIgQkAAJAAkACQAJAAkACQAJAIAAoAgAiBgRAIAAoAggiAyAAKAIEIgUgAyAFSxshCUF/IQcgAyECA0AgAiAJRg0EIAAgAkEBaiIINgIIIAdBAWohByACIAZqIAghAi0AACIIQTBrQf8BcUEKSSAIQeEAa0H/AXFBBklyDQALIAhB3wBHDQMgAkEBayECAkAgAwRAIAMgBUkEQCACIAVLDQogAyAGaiwAAEFASA0KDAILIAIgBU0NAQwJCyACIAVLDQgLIARBCGogAyAGaiIDIAcQNCAEKQMIUEUNAiAAKAIQIgANAUEAIQIMBQsgACgCECIARQRADAULQfGkwABBASAAEMYBIQIMBAtBASECQeGlwABBAiAAEMYBDQMgAyAHIAAQxgENAwwCCyAAKAIQIQAgBCAEKQMQNwMYIABFBEBBACECDAMLIARBGGogABC0AUUNAUEBIQIMAgsCQCAAKAIQIgFFDQBByKTAAEEQIAEQxgFFDQBBASECDAILQQAhAiAAQQA6AAQgAEEANgIADAELIAAtABxBBHEEQEEAIQIMAQsgAUHhAGsiAUH/AXEiAkEaT0G/9/MdIAJ2QQFxRXINASABQQJ0QfwHcSIBQeCowABqKAIAIAFB+KfAAGooAgAgABDGASECCyAEQSBqJAAgAg8LQeSlwAAQswEACyAGIAUgAyACQfijwAAQnQEAC7IEAgJ9BH8jAEEQayEEIAC8IgVBH3YhBgJAAn0gAAJ/AkACQAJAAkAgBUH/////B3EiA0HQ2LqVBE8EQCADQYCAgPwHSwRAIAAPCyAFQQBIIgVFIANBl+TFlQRLcQ0CIAVFDQEgBEMAAICAIACVOAIIIAQqAggaIANBtOO/lgRNDQEMBwsgA0GY5MX1A00EQCADQYCAgMgDTQ0DQQAhAyAADAYLIANBkquU/ANNDQMLIABDO6q4P5QgBkECdEGYzsAAaioCAJIiAUMAAADPYCEEQf////8HAn8gAYtDAAAAT10EQCABqAwBC0GAgICAeAtBgICAgHggBBsgAUP///9OXhtBACABIAFbGwwDCyAAQwAAAH+UDwsgBCAAQwAAAH+SOAIMIAQqAgwaIABDAACAP5IPCyAGRSAGawsiA7IiAUMAcjG/lJIiACABQ46+vzWUIgKTCyEBIAAgASABIAEgAZQiACAAQxVSNbuUQ4+qKj6SlJMiAJRDAAAAQCAAk5UgApOSQwAAgD+SIQEgA0UNAAJAAkACQCADQf8ATARAIANBgn9ODQMgAUMAAIAMlCEBIANBm35NDQEgA0HmAGohAwwDCyABQwAAAH+UIQEgA0H+AUsNASADQf8AayEDDAILIAFDAACADJQhAUG2fSADIANBtn1NG0HMAWohAwwBCyABQwAAAH+UIQFB/QIgAyADQf0CTxtB/gFrIQMLIAEgA0EXdEGAgID8A2q+lCEBCyABC4gEAQh/IAEoAgQiBQRAIAEoAgAhBANAAkAgA0EBaiECAn8gAiADIARqLQAAIgjAIglBAE4NABoCQAJAAkACQAJAAkACQAJAAkACQAJAIAhB4LPAAGotAABBAmsOAwABAgwLQci2wAAgAiAEaiACIAVPGy0AAEHAAXFBgAFHDQsgA0ECagwKC0HItsAAIAIgBGogAiAFTxssAAAhByAIQeABayIGRQ0BIAZBDUYNAgwDC0HItsAAIAIgBGogAiAFTxssAAAhBiAIQfABaw4FBAMDAwUDCyAHQWBxQaB/Rw0IDAYLIAdBn39KDQcMBQsgCUEfakH/AXFBDE8EQCAJQX5xQW5HIAdBQE5yDQcMBQsgB0FATg0GDAQLIAlBD2pB/wFxQQJLIAZBQE5yDQUMAgsgBkHwAGpB/wFxQTBPDQQMAQsgBkGPf0oNAwtByLbAACAEIANBAmoiAmogAiAFTxstAABBwAFxQYABRw0CQci2wAAgBCADQQNqIgJqIAIgBU8bLQAAQcABcUGAAUcNAiADQQRqDAELQci2wAAgBCADQQJqIgJqIAIgBU8bLQAAQcABcUGAAUcNASADQQNqCyIDIgIgBUkNAQsLIAAgAzYCBCAAIAQ2AgAgASAFIAJrNgIEIAEgAiAEajYCACAAIAIgA2s2AgwgACADIARqNgIIDwsgAEEANgIAC8cDAQt/IwBBEGsiBSQAAkAgASgCECIEIAEoAgwiA0kEQAwBCyABKAIIIgsgBEkEQAwBCyABQRRqIgwgAS0AGCIGakEBay0AACEJIAEoAgQhCgJAAkAgBkEETQRAA0AgAyAKaiEHAkAgBCADayIIQQdNBEAgAyAERg0EQQAhAgNAIAIgB2otAAAgCUYNAiAIIAJBAWoiAkcNAAsMBAsgBUEIaiAJIAcgCBBHIAUoAggiAkEBRw0EIAUoAgwhAgsgASACIANqQQFqIgM2AgwCQCADIAZJIAMgC0tyDQAgCiADIAZrIgJqIAwgBhBxDQAgACADNgIIIAAgAjYCBEEBIQIMBQsgAyAETQ0AC0EAIQIMAwsCQANAIAMgCmohBwJAIAQgA2siCEEITwRAIAUgCSAHIAgQRyAFKAIAIgJBAUcNBSAFKAIEIQIMAQsgAyAERg0DQQAhAgNAIAIgB2otAAAgCUYNASACQQFqIgIgCEcNAAsMAwsgASACIANqQQFqIgM2AgwgAyALTSADIAZPcQ0BIAMgBE0NAAtBACECDAMLIAZBBEGsnMAAEGoAC0EAIQILIAEgBDYCDAsgACACNgIAIAVBEGokAAvGAwINfwF+IAMgBUEBayINIAEoAhQiCGoiB0sEQEEAIAEoAggiCmshDiAFIAEoAhAiD2shECABKAIcIQsgASkDACEUA0ACQCABAn8CQCAUIAIgB2oxAACIQgGDUARAIAEgBSAIaiIINgIUIAYNAwwBCyAKIAogCyAKIAtLGyAGGyIJIAUgBSAJSRshDCACIAhqIREgCSEHAkACQAJAA0AgByAMRgRAQQAgCyAGGyEMIAohBwNAIAcgDE0EQCABIAUgCGoiAjYCFCAGRQRAIAFBADYCHAsgACACNgIIIAAgCDYCBCAAQQE2AgAPCyAHQQFrIgcgBU8NBSAHIAhqIgkgA08NAyAEIAdqLQAAIAIgCWotAABGDQALIAEgCCAPaiIINgIUIBAgBkUNBhoMBwsgByAIaiADTw0CIAcgEWohEiAEIAdqIAdBAWohBy0AACASLQAARg0ACyAIIA5qIAdqIQggBkUNAwwFCyAJIANBxJrAABBpAAsgAyAIIAlqIgAgACADSRsgA0HUmsAAEGkACyAHIAVBtJrAABBpAAtBAAsiBzYCHCAHIQsLIAggDWoiByADSQ0ACwsgASADNgIUIABBADYCAAv5AwECfyAAIAFqIQICQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQcjSwAAoAgBGBEAgAigCBEEDcUEDRw0BQcDSwAAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQOwsCQAJAAkAgAigCBCIDQQJxRQRAIAJBzNLAACgCAEYNAiACQcjSwAAoAgBGDQMgAiADQXhxIgIQOyAAIAEgAmoiAUEBcjYCBCAAIAFqIAE2AgAgAEHI0sAAKAIARw0BQcDSwAAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAIAAgARBDDwsgAUH4AXFBsNDAAGohAgJ/QbjSwAAoAgAiA0EBIAFBA3Z0IgFxRQRAQbjSwAAgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBzNLAACAANgIAQcTSwABBxNLAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQcjSwAAoAgBHDQFBwNLAAEEANgIAQcjSwABBADYCAA8LQcjSwAAgADYCAEHA0sAAQcDSwAAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIACwucAwIHfwJ+IwBBEGsiBCQAAn8CQCAAKAIAIgNFDQAgACgCCCICIAAoAgQiBU8NACACIANqIgEtAABBzABGBEAgACACQQFqIgE2AgggAAJ+AkAgASAFSQRAIAEgA2otAABB3wBGDQELIAEgBSABIAVLGyEHAkACQANAAkAgASAFSQRAIAEgA2otAABB3wBGDQELIAEgB0YNAgJAIAEgA2otAAAiAkEwayIGQf8BcUEKSQ0AIAJB4QBrQf8BcUEaTwRAIAJBwQBrQf8BcUEaTw0EIAJBHWshBgwBCyACQdcAayEGCyAAIAFBAWoiATYCCCAEIAgQZCAEKQMIQgBSDQIgBCkDACIJIAatQv8Bg3wiCCAJWg0BDAILCyAAIAFBAWo2AgggCEJ/Ug0BCyAAKAIQIgMEQEEBQcikwABBECADEMYBDQYaCyAAQQA6AAQgAEEANgIAQQAMBQsgCEIBfAwBCyAAIAJBAmo2AghCAAsQVgwCCyABLQAAQcsARw0AIAAgAkEBajYCCCAAQQAQEwwBCyAAEBkLIARBEGokAAugAwEFfwJAQRFBACAAQa+wBE8bIgIgAkEIciIBIABBC3QiAiABQQJ0QaDFwABqKAIAQQt0SRsiASABQQRyIgEgAUECdEGgxcAAaigCAEELdCACSxsiASABQQJyIgEgAUECdEGgxcAAaigCAEELdCACSxsiASABQQFqIgEgAUECdEGgxcAAaigCAEELdCACSxsiASABQQFqIgEgAUECdEGgxcAAaigCAEELdCACSxsiAUECdEGgxcAAaigCAEELdCIDIAJGIAIgA0tqIAFqIgFBIU0EQCABQQJ0QaDFwABqIgQoAgBBFXYhAkHvBSEDAn8CQCABQSFGDQAgBCgCBEEVdiEDIAENAEEADAELIAFBAnRBnMXAAGooAgBB////AHELIQECQCADIAJBf3NqRQ0AIAAgAWshBUHvBSACIAJB7wVNGyEEIANBAWshAEEAIQEDQCACIARGDQMgASACQajGwABqLQAAaiIBIAVLDQEgACACQQFqIgJHDQALIAAhAgsgAkEBcQ8LIAFBIkHcxMAAEGkACyAEQe8FQezEwAAQaQALhQMBCX8jAEEgayIEJAAQRSIAKAIQIQUgACgCDCEIIABCADcCDCAAKAIEIQYgACgCCCEDIABCBDcCBCAAKAIAIQIgAEEANgIAAkAgAyAIRgRAAkAgAiADRgRA0G9BgAEgAiACQYABTRsiB/wPASIBQX9GDQMCQCAFRQRAIAEhBQwBCyACIAVqIAFHDQQLIAIgB2oiByACSSAHQf////8DS3INAyAHQQJ0IgFB/P///wdLDQMgBCACBH8gBCAGNgIUIAQgAkECdDYCHEEEBUEACzYCGCAEQQhqQQQgASAEQRRqEF0gBCgCCEEBRg0DIAQoAgwhBiACIQEgByECDAELIAIgAyIBTQ0CCyAGIAFBAnRqIANBAWo2AgAgAUEBaiEDCyADIAhNDQAgBiAIQQJ0aigCACEBIAAgBTYCECAAIAE2AgwgACADNgIIIAAoAgQhAyAAIAY2AgQgACgCACEBIAAgAjYCACABBEAgAyABQQJ0QQQQsAELIARBIGokACAFIAhqDwsAC+4CAgR/An4jAEHQAGsiBCQAIAQgASACQb+hwABBARAUA0AgBEHEAGogBBAaIAQoAkQiA0UNAAsCQCACAn8gA0ECRwRAIAQoAkgMAQsgAgsiA2tBEEsEQAwBC0IBIQggAiADRg0AIAEgAmohBiABIANqIQMDQAJ/IAMsAAAiAUEATgRAIAFB/wFxIQIgA0EBagwBCyADLQABQT9xIQUgAUEfcSECIAFBX00EQCACQQZ0IAVyIQIgA0ECagwBCyADLQACQT9xIAVBBnRyIQUgAUFwSQRAIAUgAkEMdHIhAiADQQNqDAELIAJBEnRBgIDwAHEgAy0AA0E/cSAFQQZ0cnIhAiADQQRqCyEDAkAgAkEwayIBQQpPBEBBfyACQSByIgFB1wBrIgIgAiABQeEAa0kbIgFBEE8NAQsgAa0gB0IEhoQhByADIAZGDQIMAQsLQcChwAAQswEACyAAIAc3AwggACAINwMAIARB0ABqJAAL5wIBBX8CQEHN/3tBECAAIABBEE0bIgBrIAFNDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQESICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhAwDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQMAsgAEEIaiEDCyADC/ECAgZ/An4jAEEQayIEJAAgAAJ/AkACQCABKAIIIgMgASgCBCIFSQRAIAEoAgAiBiADai0AAEHzAEYNAQsgAEIANwMIDAELIAEgA0EBaiICNgIIAkACQAJAIAIgBU8NACACIAZqLQAAQd8ARw0AIAEgA0ECajYCCAwBCwJAAkADQAJAIAIgBUkEQCACIAZqLQAAQd8ARg0BCyACIAVGDQICQCACIAZqLQAAIgNBMGsiB0H/AXFBCkkNACADQeEAa0H/AXFBGk8EQCADQcEAa0H/AXFBGk8NBCADQR1rIQcMAQsgA0HXAGshBwsgASACQQFqIgI2AgggBCAIEGQgBCkDCEIAUg0CIAQpAwAiCSAHrUL/AYN8IgggCVoNAQwCCwsgASACQQFqNgIIIAhCf1INAQsgAEEAOgABQQEMBAsgCEIBfCIIQn9RDQELIAAgCEIBfDcDCAwBCyAAQQA6AAFBAQwBC0EACzoAACAEQRBqJAAL/QIBB38jAEEQayIEJAACQAJAAkACQAJAIAEoAgQiAkUNACABKAIAIQcgAkEDcSEFAkAgAkEESQRAQQAhAgwBCyAHQRxqIQMgAkF8cSEIQQAhAgNAIAMoAgAgA0EIaygCACADQRBrKAIAIANBGGsoAgAgAmpqamohAiADQSBqIQMgCCAGQQRqIgZHDQALCyAFBEAgBkEDdCAHakEEaiEDA0AgAygCACACaiECIANBCGohAyAFQQFrIgUNAAsLIAEoAgwEQCACQQBIDQEgBygCBEUgAkEQSXENASACQQF0IQILQQAhBSACQQBIDQMgAg0BC0EBIQNBACECDAELQf3OwAAtAAAaQQEhBSACQQEQpgEiA0UNAQsgBEEANgIIIAQgAzYCBCAEIAI2AgAgBEHQqcAAIAEQKUUNAUG4qsAAQdYAIARBD2pBqKrAAEGgq8AAEGUACyAFIAIQlAEACyAAIAQpAgA3AgAgAEEIaiAEQQhqKAIANgIAIARBEGokAAurAgEBfyMAQfAAayIGJAAgBiABNgIMIAYgADYCCCAGIAM2AhQgBiACNgIQIAZBqK3AADYCGCAGQQI2AhwCQCAEKAIARQRAIAZBAzYCXCAGQeStwAA2AlggBkIDNwJkIAYgBkEQaq1CgICAgIAMhDcDSCAGIAZBCGqtQoCAgICADIQ3A0AMAQsgBkEwaiAEQRBqKQIANwMAIAZBKGogBEEIaikCADcDACAGIAQpAgA3AyAgBkEENgJcIAZBmK7AADYCWCAGQgQ3AmQgBiAGQRBqrUKAgICAgAyENwNQIAYgBkEIaq1CgICAgIAMhDcDSCAGIAZBIGqtQoCAgICgDIQ3A0ALIAYgBkEYaq1CgICAgJAMhDcDOCAGIAZBOGo2AmAgBkHYAGogBRCEAQALygICB38CfiMAQRBrIgQkACABKAIAIQYCQAJAAkACQCABKAIIIgIgASgCBCIHSQRAIAIgBmotAABB3wBGDQELIAIgByACIAdLGyEIAkADQCACIAdJBEAgAiAGai0AAEHfAEYNAgsgAiAIRg0EAkAgAiAGai0AACIFQTBrIgNB/wFxQQpJDQAgBUHhAGtB/wFxQRpPBEAgBUHBAGtB/wFxQRpPDQYgBUEdayEDDAELIAVB1wBrIQMLIAEgAkEBaiICNgIIIAQgCRBkIAQpAwhCAFINBCAEKQMAIgogA61C/wGDfCIJIApaDQALDAMLQQEhAyABIAJBAWo2AgggCUJ/UQ0BIAAgCUIBfDcDCEEAIQMMAwsgAEIANwMIIAEgAkEBajYCCAwCCyAAQQA6AAEMAQsgAEEAOgABQQEhAwsgACADOgAAIARBEGokAAvQAgEHf0EBIQkCQAJAIAJFDQAgASACQQF0aiEKIABBgP4DcUEIdiELIABB/wFxIQ0DQCABQQJqIQwgByABLQABIgJqIQggCyABLQAAIgFHBEAgASALSw0CIAghByAMIgEgCkYNAgwBCwJAAkAgByAITQRAIAQgCEkNASADIAdqIQEDQCACRQ0DIAJBAWshAiABLQAAIAFBAWohASANRw0AC0EAIQkMBQsgByAIQYC5wAAQawALIAggBEGAucAAEGoACyAIIQcgDCIBIApHDQALCyAGRQ0AIAUgBmohAyAAQf//A3EhAQNAIAVBAWohAAJAIAUsAAAiAkEATgRAIAAhBQwBCyAAIANHBEAgBS0AASACQf8AcUEIdHIhAiAFQQJqIQUMAQtB8LjAABCzAQALIAEgAmsiAUEASA0BIAlBAXMhCSADIAVHDQALCyAJQQFxC/ECAQR/IAAoAgwhAgJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CIAAgACgCHEECdEGgz8AAaiIBKAIARwRAIANBEEEUIAMoAhAgAEYbaiACNgIAIAJFDQMMAgsgASACNgIAIAINAUG80sAAQbzSwAAoAgBBfiAAKAIcd3E2AgAMAgsgACgCCCIAIAJHBEAgACACNgIMIAIgADYCCA8LQbjSwABBuNLAACgCAEF+IAFBA3Z3cTYCAA8LIAIgAzYCGCAAKAIQIgEEQCACIAE2AhAgASACNgIYCyAAKAIUIgBFDQAgAiAANgIUIAAgAjYCGAsLtgIBB38CQCACQRBJBEAgACEDDAELIABBACAAa0EDcSIEaiEFIAQEQCAAIQMgASEGA0AgAyAGLQAAOgAAIAZBAWohBiADQQFqIgMgBUkNAAsLIAUgAiAEayIIQXxxIgdqIQMCQCABIARqIgRBA3EEQCAHQQBMDQEgBEEDdCICQRhxIQkgBEF8cSIGQQRqIQFBACACa0EYcSECIAYoAgAhBgNAIAUgBiAJdiABKAIAIgYgAnRyNgIAIAFBBGohASAFQQRqIgUgA0kNAAsMAQsgB0EATA0AIAQhAQNAIAUgASgCADYCACABQQRqIQEgBUEEaiIFIANJDQALCyAIQQNxIQIgBCAHaiEBCyACBEAgAiADaiECA0AgAyABLQAAOgAAIAFBAWohASADQQFqIgMgAkkNAAsLIAALvwIBA38jAEEQayICJAACQCABQYABTwRAIAJBADYCDAJ/IAFBgBBPBEAgAUGAgARPBEAgAkEMakEDciEEIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAgsgAkEMakECciEEIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAELIAJBDGpBAXIhBCACIAFBBnZBwAFyOgAMQQILIQMgBCABQT9xQYABcjoAACADIAAoAgAgACgCCCIBa0sEQCAAIAEgAxBEIAAoAgghAQsgACgCBCABaiACQQxqIAMQPBogACABIANqNgIIDAELIAAoAggiAyAAKAIARgRAIAAQVAsgACADQQFqNgIIIAAoAgQgA2ogAToAAAsgAkEQaiQAQQALvwIBA38jAEEQayICJAACQCABQYABTwRAIAJBADYCDAJ/IAFBgBBPBEAgAUGAgARPBEAgAkEMakEDciEEIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAgsgAkEMakECciEEIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAELIAJBDGpBAXIhBCACIAFBBnZBwAFyOgAMQQILIQMgBCABQT9xQYABcjoAACADIAAoAgAgACgCCCIBa0sEQCAAIAEgAxBEIAAoAgghAQsgACgCBCABaiACQQxqIAMQPBogACABIANqNgIIDAELIAAoAggiAyAAKAIARgRAIAAQVAsgACgCBCADaiABOgAAIAAgA0EBajYCCAsgAkEQaiQAQQALuAIBA38jAEGAAWsiBCQAAn8CQAJAIAEoAhwiAkEQcUUEQCACQSBxDQEgACgCACABEEIMAwsgACgCACEAQQAhAgNAIAIgBGpB/wBqIABBD3EiA0EwciADQdcAaiADQQpJGzoAACACQQFrIQIgAEEQSSAAQQR2IQBFDQALDAELIAAoAgAhAEEAIQIDQCACIARqQf8AaiAAQQ9xIgNBMHIgA0E3aiADQQpJGzoAACACQQFrIQIgAEEQSSAAQQR2IQBFDQALIAJBgAFqIgBBgQFPBEAgAEGAAUGMr8AAEGgACyABQZyvwABBAiACIARqQYABakEAIAJrECEMAQsgAkGAAWoiAEGBAU8EQCAAQYABQYyvwAAQaAALIAFBnK/AAEECIAIgBGpBgAFqQQAgAmsQIQsgBEGAAWokAAu/AgEDfyMAQRBrIgIkAAJAIAFBgAFPBEAgAkEANgIMAn8gAUGAEE8EQCABQYCABE8EQCACQQxqQQNyIQQgAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwCCyACQQxqQQJyIQQgAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMMAQsgAkEMakEBciEEIAIgAUEGdkHAAXI6AAxBAgshAyAEIAFBP3FBgAFyOgAAIAMgACgCACAAKAIIIgFrSwRAIAAgASADEFUgACgCCCEBCyAAKAIEIAFqIAJBDGogAxA8GiAAIAEgA2o2AggMAQsgACgCCCIDIAAoAgBGBEAgABBUCyAAIANBAWo2AgggACgCBCADaiABOgAACyACQRBqJABBAAu9AgECfyMAQRBrIgIkAAJAIAFBgAFPBEAgAkEANgIMAn8gAUGAEE8EQCABQYCABE8EQCACIAFBP3FBgAFyOgAPIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAgsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAwwBCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgshASABIAAoAgAgACgCCCIDa0sEQCAAIAMgARBKIAAoAgghAwsgACgCBCADaiACQQxqIAEQPBogACABIANqNgIIDAELIAAoAggiAyAAKAIARgRAIAAQVAsgACADQQFqNgIIIAAoAgQgA2ogAToAAAsgAkEQaiQAQQALuwIBBn8jAEEQayIDJABBCiECAkAgAEGQzgBJBEAgACEEDAELA0AgA0EGaiACaiIFQQRrIAAgAEGQzgBuIgRBkM4AbGsiBkH//wNxQeQAbiIHQQF0QZ6vwABqLwAAOwAAIAVBAmsgBiAHQeQAbGtB//8DcUEBdEGer8AAai8AADsAACACQQRrIQIgAEH/wdcvSyAEIQANAAsLAkAgBEHjAE0EQCAEIQAMAQsgAkECayICIANBBmpqIAQgBEH//wNxQeQAbiIAQeQAbGtB//8DcUEBdEGer8AAai8AADsAAAsCQCAAQQpPBEAgAkECayICIANBBmpqIABBAXRBnq/AAGovAAA7AAAMAQsgAkEBayICIANBBmpqIABBMHI6AAALIAFBAUEAIANBBmogAmpBCiACaxAhIANBEGokAAvEAgEEfyAAQgA3AhAgAAJ/QQAgAUGAAkkNABpBHyABQf///wdLDQAaIAFBBiABQQh2ZyIDa3ZBAXEgA0EBdGtBPmoLIgI2AhwgAkECdEGgz8AAaiEEQQEgAnQiA0G80sAAKAIAcUUEQCAEIAA2AgAgACAENgIYIAAgADYCDCAAIAA2AghBvNLAAEG80sAAKAIAIANyNgIADwsCQAJAIAEgBCgCACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC88BAgR/AX4jAEEgayIDJAACQCABIAEgAmoiAksNAEEIIAAoAgAiBEEBdCIBIAIgASACSxsiAiACQQhJGyICrSIHQiCIUEUNAAJAIAenIgVB/////wdNBEAgAyAEBH8gAyAENgIcIAMgACgCBDYCFEEBBUEACzYCGCADQQhqQQEgBSADQRRqEF0gAygCCEEBRw0BIAMoAgwhBiADKAIQIQELIAYgARCUAQALIAMoAgwhASAAIAI2AgAgACABNgIEIANBIGokAA8LQQBBABCUAQAL+wIBBH8jAEEwayIAJAACQAJAQaDOwAAoAgBFBEBBuM7AACgCACEBQbjOwABBADYCACABRQ0BIABBGGogAREEACAAQRBqIgIgAEEkaikCADcDACAAIAApAhw3AwggACgCGCEBQaDOwAAoAgAiAw0CAkAgA0UNAEGkzsAAKAIAIgJFDQBBqM7AACgCACACQQJ0QQQQsAELQaTOwAAgATYCAEGgzsAAQQE2AgBBqM7AACAAKQMINwIAQbDOwAAgAEEQaikDADcCAAsgAEEwaiQAQaTOwAAPCyAAQQA2AiggAEEBNgIcIABB9I/AADYCGCAAQgQ3AiAgAEEYakHckMAAEIQBAAsgAEEoaiACKQMANwIAIAAgACkDCDcCICAAIAE2AhwgAEEBNgIYAkAgAEEYaiIBKAIARQ0AIAEoAgQiAkUNACABKAIIIAJBAnRBBBCwAQsgAEEANgIoIABBATYCHCAAQfyQwAA2AhggAEIENwIgIAFBhJHAABCEAQALlgIBAX8jAEEQayICJAACfwJAIAEoAgBFBEAgASgCCEEBRw0BCyAAKAIAIQAgAkEANgIMIAEgAkEMagJ/IABBgAFPBEAgAEGAEE8EQCAAQYCABE8EQCACIABBP3FBgAFyOgAPIAIgAEESdkHwAXI6AAwgAiAAQQZ2QT9xQYABcjoADiACIABBDHZBP3FBgAFyOgANQQQMAwsgAiAAQT9xQYABcjoADiACIABBDHZB4AFyOgAMIAIgAEEGdkE/cUGAAXI6AA1BAwwCCyACIABBP3FBgAFyOgANIAIgAEEGdkHAAXI6AAxBAgwBCyACIAA6AAxBAQsQHgwBCyABKAIUIAAoAgAgASgCGCgCEBEAAAsgAkEQaiQAC50CAQV/AkACQAJAAkAgAkEDakF8cSIEIAJGDQAgBCACayIEIAMgAyAESxsiBUUNAEEAIQQgAUH/AXEhBkEBIQcDQCACIARqLQAAIAZGDQQgBSAEQQFqIgRHDQALIAUgA0EIayIISw0CDAELIANBCGshCEEAIQULIAFB/wFxQYGChAhsIQQDQEGAgoQIIAIgBWoiBygCACAEcyIGayAGckGAgoQIIAdBBGooAgAgBHMiBmsgBnJxQYCBgoR4cUGAgYKEeEcNASAFQQhqIgUgCE0NAAsLIAMgBUcEQCABQf8BcSEEQQEhBwNAIAQgAiAFai0AAEYEQCAFIQQMAwsgAyAFQQFqIgVHDQALC0EAIQcLIAAgBDYCBCAAIAc2AgALlgIBA38jAEEQayICJAAgAkEANgIMAn8gAUGAAU8EQCABQYAQTwRAIAFBgIAETwRAIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwDCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAILIAIgAUE/cUGAAXI6AA0gAiABQQZ2QcABcjoADEECDAELIAIgAToADEEBCyEBIAAgACgCBCIDIAFrNgIEIAAgACgCACABIANLciIENgIAQQEhAyAERQRAIAAoAgggAkEMaiABEJkBIQMLIAJBEGokACADC6oCAgN/AX4jAEFAaiICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEkaiIEQQA2AgAgAkKAgICAEDcCHCACQTBqIAMoAgAiA0EIaikCADcDACACQThqIANBEGopAgA3AwAgAiADKQIANwMoIAJBHGpBrJHAACACQShqECkaIAJBGGogBCgCACIDNgIAIAIgAikCHCIFNwMQIAFBCGogAzYCACABIAU3AgALIAEpAgAhBSABQoCAgIAQNwIAIAJBCGoiAyABQQhqIgEoAgA2AgAgAUEANgIAQf3OwAAtAAAaIAIgBTcDAEEMQQQQpgEiAUUEQEEEQQwQxAEACyABIAIpAwA3AgAgAUEIaiADKAIANgIAIABBpJbAADYCBCAAIAE2AgAgAkFAayQAC9UBAgR/AX4jAEEgayIDJAAgASABIAJqIgJLBEBBAEEAEJQBAAtBCCAAKAIAIgRBAXQiASACIAEgAksbIgIgAkEISRsiAq0iB0IgiFBFBEBBAEEAEJQBAAsCQCAHpyIFQf////8HTQRAIAMgBAR/IAMgBDYCHCADIAAoAgQ2AhRBAQVBAAs2AhggA0EIakEBIAUgA0EUahBdIAMoAghBAUcNASADKAIMIQYgAygCECEBCyAGIAEQlAEACyADKAIMIQEgACACNgIAIAAgATYCBCADQSBqJAAL9gEBCH8gASgCCCICIAEoAgQiAyACIANLGyEIIAEoAgAhBUF/IQcgAiEEAkACQANAIAQgCEYNASABIARBAWoiBjYCCCAHQQFqIQcgBCAFaiAGIQQtAAAiBkEwa0H/AXFBCkkgBkHhAGtB/wFxQQZJcg0ACyAGQd8ARw0AIAIgBEEBayIBSw0BAkAgAgRAIAIgA0kEQCACIAVqLAAAQUBIIAEgA0tyDQQMAgsgAiADRw0DIAEgA00NAQwDCyABIANLDQILIAAgBzYCBCAAIAIgBWo2AgAPCyAAQQA2AgAgAEEAOgAEDwsgBSADIAIgAUH4o8AAEJ0BAAvuAQIEfwF+IwBBIGsiBSQAIAEgASACaiICSwRAQQBBABCUAQALQQAhASADIARqQQFrQQAgA2txrUEEIAAoAgAiB0EBdCIGIAIgAiAGSRsiAiACQQRNGyICrX4iCUIgiFBFBEBBAEEAEJQBAAsCQCAJpyIGQYCAgIB4IANrTQR/IAUgBwR/IAUgBCAHbDYCHCAFIAAoAgQ2AhQgAwVBAAs2AhggBUEIaiADIAYgBUEUahBdIAUoAghBAUcNASAFKAIQIQggBSgCDAUgAQsgCBCUAQALIAUoAgwhASAAIAI2AgAgACABNgIEIAVBIGokAAvfAQEBfyMAQRBrIgIkACACQQA2AgwgACACQQxqAn8gAUGAAU8EQCABQYAQTwRAIAFBgIAETwRAIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwDCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAILIAIgAUE/cUGAAXI6AA0gAiABQQZ2QcABcjoADEECDAELIAIgAToADEEBCxAoIAJBEGokAAvjAQEIfyAAKAIIIgYEQCAAKAIEIQcDQCAHIAJBDGxqIgMoAgQhBCADKAIIIgUEQCAEQSRqIQADQCAAQQRrKAIAIgFBgICAgHhyQYCAgIB4RwRAIAAoAgAgAUEBELABCwJAIABBFGsoAgAiCEECRg0AIABBEGsoAgAhASAIRQRAIAFFDQEgAEEMaygCACABQQEQsAEMAQsgAUUNACAAQQxrKAIAIAFBAXRBAhCwAQsgAEEsaiEAIAVBAWsiBQ0ACwsgAygCACIABEAgBCAAQSxsQQQQsAELIAJBAWoiAiAGRw0ACwsL1gEBBX8jAEEgayIBJAAgACgCACICQX9GBEBBAEEAEJQBAAsgAkEBdCIDIAJBAWoiBSADIAVLGyIDQf////8DSwRAQQBBABCUAQALAkBBBCADIANBBE0bIgNBAnQiBUH8////B00EfyABIAIEfyABIAJBAnQ2AhwgASAAKAIENgIUQQQFQQALNgIYIAFBCGpBBCAFIAFBFGoQXSABKAIIQQFHDQEgASgCECEEIAEoAgwFIAQLIAQQlAEACyABKAIMIQIgACADNgIAIAAgAjYCBCABQSBqJAAL9AEBA38jAEEgayICJAAgAkEIaiIDIAFBJGooAgA2AgBB/c7AAC0AABogAiABKQIcNwMAQQxBBBCmASIEBEAgBCACKQMANwIAIARBCGogAygCADYCAAJAIAEoAgQiA0EDRiADQQJJcg0AAkACQCABLQAYQQFrDgICAAELIAJBATYCBCACQayFwAA2AgAgAkIANwIMIAIgAkEcajYCCCACQZCGwAAQhAEACyABQQhqEE4gASgCCCIDRQ0AIAEoAgwgA0EMbEEEELABCyABQShBBBCwASAAQcSEwAA2AgQgACAENgIAIAJBIGokAA8LQQRBDBDEAQAL2wEBA38jAEEQayIDJAACfyACKAIAQQFxBEBBwJXAACEEQQkMAQsgA0EEaiACKAIEIAIoAggQJEHAlcAAIAMoAgggAygCBCICGyEEQQkgAygCDCACGwshAiAEIAIgARBcAkAgACgCACIBQYCAgIB4RwRAIAFFDQEgACgCBCABQQEQsAEMAQsgAC0ABEEDRw0AIAAoAggiACgCACEBIABBBGooAgAiAigCACIFBEAgASAFEQQACyACKAIEIgUEQCABIAUgAigCCBCwAQsgAEEMQQQQsAELIANBEGokAAvDBAIGfwF+IwBBEGsiBCQAAkACQCAAKAIAQQJHBEAjAEHgAGsiAiQAAn8CQCAAKAIARQRAQQEgASAAKAIQIAAoAhQQmQENAhoMAQsgAiAAQQRqNgIIIAEoAhwhAyACIAE2AhQgAkKAgICAgMjQBzcCDCACQQhqrUKAgICAgAqEIQgCQAJ/IANBBHEEQCACIAg3AzAgAkEBNgIsIAJBATYCHCACQcimwAA2AhggAkEBNgIkIAJBAzoAWCACQQQ2AlQgAkIgNwJMIAJBAjYCRCACQQI2AjwgAiACQTxqNgIoIAIgAkEwajYCICACQQxqQYScwAAgAkEYahApDAELIAJBATYCQCACQcimwAA2AjwgAkIBNwJIIAIgCDcDGCACIAJBGGo2AkQgAkEMakGEnMAAIAJBPGoQKQsiA0EAIAIoAgwiBRtFBEAgAw0BIAVFDQJB9KbAAEE3IAJB3wBqQeSmwABBrKfAABBlAAsgAUHQpsAAQRQQmQFFDQELQQEMAQsgASAAKAIYIAAoAhwQmQELIAJB4ABqJAAhBQwBCyAAKAIkIgJFDQAgACgCICEAA0AgBEEEaiAAIAIQJAJAAkAgBCgCBEUEQCAEKAIIIAQoAgwgARDGAQ0BDAQLIAQtAA0hAyAELQAMIQYgBCgCCCEHQcmVwABBAyABEMYBRQ0BC0EBIQUMAgsgBkEBcUUNASACIAMgB2oiA0kNAiAAIANqIQAgAiADayICDQALCyAEQRBqJAAgBQ8LIAMgAkGol8AAEGgAC9kBACAAQSBJBEBBAA8LIABB/wBJBEBBAQ8LIABBgIAETwRAIABBgIAITwRAIABB4P//AHFB4M0KRyAAQf7//wBxQZ7wCkdxIABBwO4Ka0F6SXEgAEGwnQtrQXJJcSAAQfDXC2tBcUlxIABBgPALa0HebElxIABBgIAMa0GedElxIABB0KYMa0F7SXEgAEGAgjhrQbDFVElxIABB8IM4SXEPCyAAQZC5wABBLEHoucAAQdABQbi7wABB5gMQOg8LIABBnr/AAEEoQe6/wABBogJBkMLAAEGpAhA6C7UBAQR/IwBBIGsiASQAIAAoAgAiAkF/RgRAQQBBABCUAQALQQggAkEBdCIDIAJBAWoiBCADIARLGyIDIANBCE0bIgNBAEgEQEEAQQAQlAEACyABIAIEfyABIAI2AhwgASAAKAIENgIUQQEFQQALNgIYIAFBCGpBASADIAFBFGoQXSABKAIIQQFGBEAgASgCDCABKAIQEJQBAAsgASgCDCECIAAgAzYCACAAIAI2AgQgAUEgaiQAC7UBAQJ/IwBBIGsiAyQAIAEgASACaiICSwRAQQBBABCUAQALQQggACgCACIBQQF0IgQgAiACIARJGyICIAJBCE0bIgRBAEgEQEEAQQAQlAEACyADIAEEfyADIAE2AhwgAyAAKAIENgIUQQEFQQALNgIYIANBCGpBASAEIANBFGoQXSADKAIIQQFGBEAgAygCDCADKAIQEJQBAAsgAygCDCEBIAAgBDYCACAAIAE2AgQgA0EgaiQAC8gBAgN/AX4jAEEQayIEJAACQCAAKAIQIgNFBEAMAQtBASECQfKkwABBASADEMYBDQAgAVAEQEHyo8AAQQEgAxDGASECDAELAkAgASAANQIUIgVYBEAgBSABfSIBQhpUDQFB8qPAAEEBIAMQxgENAiAEIAE3AwggBEEIaiADELQBIQIMAgtByKTAAEEQIAMQxgENAUEAIQIgAEEAOgAEIABBADYCAAwBCyAEIAGnQeEAajYCBCAEQQRqIAMQRiECCyAEQRBqJAAgAgudAQEDfwJAIAFBEEkEQCAAIQIMAQsgAEEAIABrQQNxIgRqIQMgBARAIAAhAgNAIAJBADoAACACQQFqIgIgA0kNAAsLIAMgASAEayIBQXxxIgRqIQIgBEEASgRAA0AgA0EANgIAIANBBGoiAyACSQ0ACwsgAUEDcSEBCyABBEAgASACaiEBA0AgAkEAOgAAIAJBAWoiAiABSQ0ACwsgAAvBAQIDfwF+IwBBMGsiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBFGoiBEEANgIAIAJCgICAgBA3AgwgAkEgaiADKAIAIgNBCGopAgA3AwAgAkEoaiADQRBqKQIANwMAIAIgAykCADcDGCACQQxqQayRwAAgAkEYahApGiACQQhqIAQoAgAiAzYCACACIAIpAgwiBTcDACABQQhqIAM2AgAgASAFNwIACyAAQaSWwAA2AgQgACABNgIAIAJBMGokAAuWAgECfyMAQSBrIgUkAEGcz8AAQZzPwAAoAgAiBkEBajYCAAJAAn9BACAGQQBIDQAaQQFB6NLAAC0AAA0AGkHo0sAAQQE6AABB5NLAAEHk0sAAKAIAQQFqNgIAQQILQf8BcSIGQQJHBEAgBkEBcUUNASAFQQhqIAAgASgCGBECAAALQZDPwAAoAgAiBkEASA0AQZDPwAAgBkEBajYCAEGQz8AAQZTPwAAoAgAEfyAFIAAgASgCFBECACAFIAQ6AB0gBSADOgAcIAUgAjYCGCAFIAUpAwA3AhBBlM/AACgCACAFQRBqQZjPwAAoAgAoAhQRAgBBkM/AACgCAEEBawUgBgs2AgBB6NLAAEEAOgAAIANFDQAACwALsgEBBn8CQAJAIABBhAFJDQAgANBvJgEQRSIBKAIMIQUgASgCECECIAFCADcCDCABKAIIIQMgASgCBCEEIAFCBDcCBCABKAIAIQYgAUEANgIAIAAgAkkNASAAIAJrIgAgA08NASAEIABBAnRqIAU2AgAgASACNgIQIAEgADYCDCABIAM2AgggASgCBCABIAQ2AgQgASgCACEAIAEgBjYCACAARQ0AIABBAnRBBBCwAQsPCwALqQEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBgACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAkEEELABDAELIAMgAkEEIAFBAnQiAhCXASIFRQ0CCyAAIAE2AgQgACAFNgIAIAZBEGokAA8LQZiPwABBMhC5AQALQQQgAhCUAQALowEBAn8jAEEgayIDJAACQCABRQRAQQFBACACEMYBIQAMAQsgAyABNgIMIAMgADYCCCADQRBqIANBCGoQLSADKAIQIgEEQANAIAMoAhQhBCADKAIcRQRAIAEgBCACEMYBIQAMAwtBASEAIAIgASAEEJkBDQIgAkH9/wMQnAENAiADQRBqIANBCGoQLSADKAIQIgENAAsLQQAhAAsgA0EgaiQAIAALiwEBAX8CQCACQQBOBEACfyADKAIEBEACQCADKAIIIgRFBEAMAQsgAygCACAEIAEgAhCXAQwCCwsgASACRQ0AGkH9zsAALQAAGiACIAEQpgELIgMEQCAAIAI2AgggACADNgIEIABBADYCAA8LIAAgAjYCCCAAIAE2AgQMAQsgAEEANgIECyAAQQE2AgALqwEBAn8jAEEgayIBJAACQCAAKAIEIgJBA0YgAkECSXINAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIABBKEEEELABIAFBIGokAAuaAQECfyMAQSBrIgEkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIAFBIGokAAuSAQEEfyMAQRBrIgIkAEEBIQQCQCABKAIUIgNBJyABKAIYIgUoAhAiAREAAA0AIAJBBGogACgCAEGBAhAiAkAgAi0ABEGAAUYEQCADIAIoAgggAREAAEUNAQwCCyADIAItAA4iACACQQRqaiACLQAPIABrIAUoAgwRAQANAQsgA0EnIAERAAAhBAsgAkEQaiQAIAQLlQEBAn8jAEEgayIDJAACQCAAKAIEIgRBA0YgBEECSXINAAJAAkAgAC0AGEEBaw4CAgABCyADQQE2AgggA0GshcAANgIEIANCADcCECADIANBHGo2AgwgA0EEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiBEUNACAAKAIMIARBDGxBBBCwAQsgAEEoQQQQsAEgA0EgaiQAC4QBAQN/An8CQCAAKAIAIgFFDQADQAJAIAAoAggiAyAAKAIETw0AIAEgA2otAABBxQBHDQAgACADQQFqNgIIDAILAkAgAkUNACAAKAIQIgFFDQBB+aTAAEECIAEQxgFFDQBBAQ8LQQEgAEEBEBMNAhogAkEBayECIAAoAgAiAQ0ACwtBAAsLegEBfyMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQmQEMAQsgAkEQaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEYaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIUIAEoAhggAkEIahApCyACQSBqJAALSQEDfiAAIAFC/////w+DIgJCPn4iA0IAIgIgAUIgiEI+fnwiAUIghnwiBDcDACAAIAMgBFatIAEgAlStQiCGIAFCIIiEfDcDCAt8AQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQQI2AhwgBUG8rsAANgIYIAVCAjcCJCAFIAVBEGqtQoCAgICADIQ3AzggBSAFQQhqrUKAgICAkAyENwMwIAUgBUEwajYCICAFQRhqIAQQhAEAC3gBA38CQCAAKAIAIgFBgICAgHhHBEAgAUUNASAAKAIEIAFBARCwAQ8LIAAtAARBA0cNACAAKAIIIgAoAgAhASAAQQRqKAIAIgMoAgAiAgRAIAEgAhEEAAsgAygCBCICBEAgASACIAMoAggQsAELIABBDEEEELABCwvzAwIIfwF+IwBBEGsiAyQAIAAoAgQhBSAAKAIAIQAgASgCFEG4rMAAQQEgASgCGCgCDBEBACEEIANBBGoiAkEAOgAFIAIgBDoABCACIAE2AgAgBQRAA0AgAyAANgIMIANBDGohCCMAQUBqIgEkAEEBIQYCQCADQQRqIgQtAAQNACAELQAFIQkCQCAEKAIAIgIoAhwiB0EEcUUEQCAJQQFxRQ0BIAIoAhRB667AAEECIAIoAhgoAgwRAQBFDQEMAgsgCUEBcUUEQCACKAIUQfWuwABBASACKAIYKAIMEQEADQIgAigCHCEHCyABQQE6ABsgASACKQIUNwIMIAFBzK7AADYCNCABIAFBG2o2AhQgASACKQIINwIkIAIpAgAhCiABIAc2AjggASACKAIQNgIsIAEgAi0AIDoAPCABIAo3AhwgASABQQxqNgIwIAggAUEcakGAmcAAKAIAEQAADQEgASgCMEHwrsAAQQIgASgCNCgCDBEBACEGDAELIAggAkGAmcAAKAIAEQAAIQYLIARBAToABSAEIAY6AAQgAUFAayQAIABBAWohACAFQQFrIgUNAAsLQQEhACADQQRqIgEtAARFBEAgASgCACIAKAIUQfauwABBASAAKAIYKAIMEQEAIQALIAEgADoABCADQRBqJAAgAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0HYscAANgIIIANCAjcCFCADQoCAgIDwAiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhAEAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZitwAA2AgggA0ICNwIUIANCgICAgPACIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhCEAQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIMIANB+LHAADYCCCADQgI3AhQgA0KAgICA8AIiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIQBAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0GsssAANgIIIANCAjcCFCADQoCAgIDwAiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhAEAC2MBAX8jAEEQayIAJAACfyACKAIABEBBwJXAACEDQQkMAQsgAEEEaiACKAIEIAIoAggQJEHAlcAAIAAoAgggACgCBCICGyEDQQkgACgCDCACGwshAiADIAIgARBcIABBEGokAAtnACMAQTBrIgAkAEH8zsAALQAABEAgAEECNgIMIABB8JXAADYCCCAAQgE3AhQgACABNgIsIAAgAEEsaq1CgICAgPAChDcDICAAIABBIGo2AhAgAEEIakGQlsAAEIQBAAsgAEEwaiQAC+caAhJ/AX4jAEEgayIPJAACfyAAKAIAIgAoAgAEQAJ/IAEhDCMAQTBrIgYkACAAKAIIIREgACgCBCEIIAAoAgAhDgJAAkACQAJAAkADQAJAIBEgECIJRgRAQQAhAgwBCyAIRQ0GIAkgEUchEiAJQQFqIRAgCEEBayEHIA4iBC0AACEBQQAhAAJAAkACQAJAA0ACQCABwEEASARAIAFBH3EhAiAAIARqIgVBAWotAABBP3EhAyABQf8BcSIOQd8BTQRAIAJBBnQgA3IhAQwCCyAFQQJqLQAAQT9xIANBBnRyIQEgDkHwAUkEQCABIAJBDHRyIQEMAgsgAkESdEGAgPAAcSAFQQNqLQAAQT9xIAFBBnRyciIBQYCAxABHDQEMDQsgAUH/AXEhAQsCQAJAIAFBMGtBCU0EQCAAIAdGDQ4gACAEaiICQQFqLAAAIgFBv39KDQEgAiAIIABrIgBBASAAQcCdwAAQnQEACyAABEAgACAEaiwAAEG/f0wNAgsgBkEUaiEHIAQhAkEAIQMCQAJAAkACQAJAAkACQCAAIgEOAgQAAQtBASEDIAItAABBK2sOAwMBAwELIAItAABBK0YEQCACQQFqIQIgAUEKSSABQQFrIgMhAQ0BDAILIAEhAyABQQhLDQELQQAhBQNAIAItAABBMGsiAUEJSwRAQQEhAwwDCyACQQFqIQIgASAFQQpsaiEFIANBAWsiAw0ACwwCC0EAIQUDQCABRQ0CIAItAABBMGsiDkEJSwRAQQEhAwwCC0ECIQMgBa1CCn4iFEIgiKcNASACQQFqIQIgAUEBayEBIA4gFKciCmoiBSAKTw0ACwsgByADOgABIAdBAToAAAwBCyAHIAU2AgQgB0EAOgAACyAGLQAUDQMgCCAGKAIYIgVrIQoCQCAFRQ0AIAggAGsiASAFSwRAIAQgBWogAGoiAiwAAEG/f0wNBiACLAAAQb9/Sg0BIAAgBGogAUEAIAVB8J3AABCdAQALIAAgCkcNBQsgACAEaiIBIQcgBCAFaiAAaiEOIAVFIBAgEUdyDQYgDCgCHEEEcUUNBiAHLQAAQegARw0GIAVBAUcEQCABQQFqLAAAQb9/TA0GCyAAIARqQQFqIQEDQEEAIQIgASAORg0IAn8gASwAACIDQQBOBEAgA0H/AXEhCCABQQFqDAELIAEtAAFBP3EhDSADQR9xIQggA0FfTQRAIAhBBnQgDXIhCCABQQJqDAELIAEtAAJBP3EgDUEGdHIhDSADQXBJBEAgDSAIQQx0ciEIIAFBA2oMAQsgCEESdEGAgPAAcSABLQADQT9xIA1BBnRyciIIQYCAxABGDQkgAUEEagshASAIQTBrQQpJIAhBIHJB4QBrQQZJcg0ACwwGCyAAQQFqIQAMAQsLIAQgCEEAIABB0J3AABCdAQALIAYgBi0AFToACEGEm8AAQSsgBkEIakG0n8AAQcSfwAAQZQALIAAgBGogASAFIAFB4J3AABCdAQALIAEgBUEBIAVBoJ3AABCdAQALAkAgCUUNACAMQYCewABBAhCZAUUNACASIQIMAQsCQCAFQQJJDQAgBy8AAEHfyABHDQAgACAEaiIBQQFqIgcsAABBv39MDQMgBUEBayEFCyAKIABrIQgDQCAHIQQCQAJAAkACQAJAAkACQAJAAkACQCAFIgNFDQACQCAELQAAQSRrDgsCAQEBAQEBAQEBAAELIANBAUYNBSAELAABQb9/Sg0EIAQgA0EBIANBgJ/AABCdAQALIAMgBGohCUEAIQAgBCEBA0AgACECIAEiACAJRg0IAn8gACwAACIFQQBOBEAgBUH/AXEhBSAAQQFqDAELIAAtAAFBP3EhByAFQR9xIQEgBUFfTQRAIAFBBnQgB3IhBSAAQQJqDAELIAAtAAJBP3EgB0EGdHIhByAFQXBJBEAgByABQQx0ciEFIABBA2oMAQsgAUESdEGAgPAAcSAALQADQT9xIAdBBnRyciEFIABBBGoLIgEgAiAAa2ohACAFQSRrDgsCAAAAAAAAAAAAAgALAAsgA0EBRg0BIAQsAAFBv39KDQEgBCADQQEgA0G0nsAAEJ0BAAsCQAJAAkAgAgRAAkAgAiADTyIARQRAIAIgBGosAABBv39MDQEgDCAEIAIQmQFFDQRBASECDA4LIAIgA0YNAgsgBCADQQAgAkGUnsAAEJ0BAAsgDCAEIAIQmQFFDQJBASECDAsLIAwgBCACEJkBRQ0AQQEhAgwKCyAARQRAIAIgBGosAABBv39KDQEMDwsgAiADRw0OCyACIARqIQcgAyACayEFDAcLIAYgA0EBayIANgIkIAZBADYCICAGIAA2AhwgBkEkNgIUIAZBJDYCKCAGQQE6ACwgBiAEQQFqIgA2AhggBkEIaiAGQRRqEC4gBigCCEEBRw0EAkAgBigCDCICQX9HBEAgAkEBaiEBIANBAUcNAQwFCyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABB2LPAADYCCCAAQgQ3AhAgAEEIakHEnsAAEIQBAAsgACwAAEG/f0oNAwwLCwJAAn8gBCwAASIAQQBOBEAgAEH/AXEMAQsgBC0AAkE/cSICIABBH3EiAUEGdHIgAEFfTQ0AGiAELQADQT9xIAJBBnRyIgIgAUEMdHIgAEFwSQ0AGiABQRJ0QYCA8ABxIAQtAARBP3EgAkEGdHJyC0EuRwRAQQEhAiAMQaCfwABBARCZAQ0IIAQsAAFBQEgNAQwDCyAMQYCewABBAhCZAQRAQQEhAgwICwJAIANBA08EQCAELAACQUBIDQELIARBAmohByADQQJrIQUMBwsgBCADQQIgA0GQn8AAEJ0BAAsgBCADQQEgA0Gkn8AAEJ0BAAtBASECIAxBoJ/AAEEBEJkBDQULIARBAWohByADQQFrIQUMAwsCQAJAAkACQCABIANJBEAgASAEaiwAAEFASA0MIAJBAmohAQwBCyABIANHDQsgAkECaiIBRQ0BCwJAIAEgA0kEQCABIARqLAAAQb9/Sg0BDAsLIAEgA0cNCgsgASAEaiEHIAMgAWshBQJAAkAgAg4DBQEAAgsgAC8AAEHToAFGBEBB/57AACEADAYLIAAvAABBwqABRgRAQf6ewAAhAAwGCyAALwAAQdKMAUYEQEH9nsAAIQAMBgsgAC8AAEHMqAFGBEBB/J7AACEADAYLIAAvAABBx6gBRgRAQfuewAAhAAwGCyAALwAAQcygAUYEQEH6nsAAIQAMBgsgAC8AAEHSoAFHDQFB+Z7AACEADAULIAAtAABBwwBGBEBB+J7AACEADAULIAAtAABB9QBGDQEMAwsgBC0AAUH1AEcNAiACQQJJDQEgBCwAAkG/f0wNAQsgACACaiETIAJBAWshCSAEQQJqIgIhAAJAA0BBASENIAAgE0YNAQJ/IAAsAAAiAUEATgRAIAFB/wFxIQEgAEEBagwBCyAALQABQT9xIQsgAUEfcSEKIAFBX00EQCAKQQZ0IAtyIQEgAEECagwBCyAALQACQT9xIAtBBnRyIQsgAUFwSQRAIAsgCkEMdHIhASAAQQNqDAELIApBEnRBgIDwAHEgAC0AA0E/cSALQQZ0cnIiAUGAgMQARg0CIABBBGoLIQAgAUEwa0EKSSABQeEAa0EGSXINAAtBACENCyAGQRRqIQoCQAJAAkACQAJAAkACQCAJIgAOAgABAgsgCkEAOgABDAQLIAItAAAiAUEraw4DAgECAQsgAi0AACEBCwJAAkACQCABQf8BcUErRgRAIABBAWshASACQQFqIQIgAEEJSwRAIAEhAAwCCyABIgANAkEAIQEMAwsgAEEISw0ADAELQQAhAQJAA0AgAEUNAyACLQAAIgtBMGsiCUEKTwRAQX8gC0EgciIJQdcAayILIAsgCUHhAGtJGyIJQRBPDQULIAGtQgSGIhRCIIinDQEgAkEBaiECIABBAWshACAJIBSnIgtqIgEgC08NAAsgCkECOgABDAQLIApBAjoAAQwDC0EAIQEDQCACLQAAIgtBMGsiCUEKTwRAQX8gC0EgciIJQdcAayILIAsgCUHhAGtJGyIJQRBPDQMLIAJBAWohAiAJIAFBBHRqIQEgAEEBayIADQALCyAKIAE2AgQgCkEAOgAADAILIApBAToAASAKQQE6AAAMAQsgCkEBOgAACyAGLQAUDQEgDUVBgIDEACAGKAIYIgAgAEGAsANzQYCAxABrQYCQvH9JGyIAQYCAxABGcg0BIAYgADYCBCAAQSBJIABB/wBrQSFJcg0BIAZBBGogDBBGRQ0DQQEhAgwECyAAIAJBASACQeiewAAQnQEACyASIQIgDCAEIAMQmQFFDQMMAgtBASECIAwgAEEBEJkBRQ0ACwsLIAZBMGokACACDAULIAEgBUEBIAVBhJ7AABCdAQALIAQgAyABIANB1J7AABCdAQALIAQgA0EBIAFBxJ7AABCdAQALIAQgAyACIANBpJ7AABCdAQALQbCdwAAQswEACwwBCyAPQQA2AhwgDyABNgIYIA9CADcCECAPIAApAgQ3AgggD0EIakEBEBILIA9BIGokAAuYAQIDfwFvIwBBIGsiAyQAIAMgACgCABDLASIENgIAIAMgAjYCBCACIARHBEAgA0EANgIIIAMgA0EEaiADQQhqEH4ACxCeASIEEJUBIgUlARAFIQYQMyICIAYmASAFQYQBTwRAIAUQWgsgAiAAKAIAIAFBAnYQrwEgAkGEAU8EQCACEFoLIARBhAFPBEAgBBBaCyADQSBqJAALUAEBfyMAQTBrIgAkACAAQQE2AgwgAEGorMAANgIIIABCATcCFCAAIABBL2qtQoCAgIDwC4Q3AyAgACAAQSBqNgIQIABBCGpB/IPAABCEAQALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIABBAWohACABQQFqIQEgAkEBayICDQEMAgsLIAQgBWshAwsgAwtBAQF/IAIgACgCACAAKAIIIgNrSwRAIAAgAyACEEQgACgCCCEDCyAAKAIEIANqIAEgAhA8GiAAIAIgA2o2AghBAAtBAQF/IAIgACgCACAAKAIIIgNrSwRAIAAgAyACEEogACgCCCEDCyAAKAIEIANqIAEgAhA8GiAAIAIgA2o2AghBAAtPAQJ/IAAoAgQhAiAAKAIAIQMCQCAAKAIIIgAtAABFDQAgA0HkrsAAQQQgAigCDBEBAEUNAEEBDwsgACABQQpGOgAAIAMgASACKAIQEQAAC0cBAX8jAEEQayICJAAgAkEIaiABEHogAiACKAIIIAIoAgwoAhgRAgAgAigCBCEBIAAgAigCADYCACAAIAE2AgQgAkEQaiQAC08BAn9B/c7AAC0AABogASgCBCECIAEoAgAhA0EIQQQQpgEiAUUEQEEEQQgQxAEACyABIAI2AgQgASADNgIAIABBtJbAADYCBCAAIAE2AgALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhBVIAAoAgghAwsgACgCBCADaiABIAIQPBogACACIANqNgIIQQALQgEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQhAEACz0BAn8gACAAKAIEIgMgAms2AgQgACAAKAIAIAIgA0tyIgQ2AgBBASEDIAQEfyADBSAAKAIIIAEgAhCZAQsLPgEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBECACACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJAALxAIBA38gACgCACECIAEoAhwiAEEQcUUEQCAAQSBxRQRAIAIgARCyAQ8LQQAhACMAQYABayIEJAAgAigCACECA0AgACAEakH/AGogAkEPcSIDQTByIANBN2ogA0EKSRs6AAAgAEEBayEAIAJBEEkgAkEEdiECRQ0ACyAAQYABaiICQYEBTwRAIAJBgAFBjK/AABBoAAsgAUGcr8AAQQIgACAEakGAAWpBACAAaxAhIARBgAFqJAAPC0EAIQAjAEGAAWsiBCQAIAIoAgAhAgNAIAAgBGpB/wBqIAJBD3EiA0EwciADQdcAaiADQQpJGzoAACAAQQFrIQAgAkEQSSACQQR2IQJFDQALIABBgAFqIgJBgQFPBEAgAkGAAUGMr8AAEGgACyABQZyvwABBAiAAIARqQYABakEAIABrECEgBEGAAWokAAvNAwEDfyAAKAIAIQAgASgCHCIDQRBxRQRAIANBIHFFBEAjAEEQayIDJAACQAJAAkAgAC0AACIAQeQATwRAIAMgACAAQeQAbiIAQeQAbGtB/wFxQQF0QZ6vwABqLwAAOwAODAELQQIhAiAAQQpPDQELIANBDWogAmogAEEwcjoAAAwBC0EBIQIgAyAAQQF0QZ6vwABqLwAAOwAOCyABQQFBACADQQ1qIAJqIAJBA3MQISADQRBqJAAPCyMAQYABayIEJAAgAC0AACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANBN2ogA0EKSRs6AAAgAkEBayECIAAiA0EEdiEAIANBEE8NAAsgAkGAAWoiAEGBAU8EQCAAQYABQYyvwAAQaAALIAFBnK/AAEECIAIgBGpBgAFqQQAgAmsQISAEQYABaiQADwsjAEGAAWsiBCQAIAAtAAAhAANAIAIgBGpB/wBqIABBD3EiA0EwciADQdcAaiADQQpJGzoAACACQQFrIQIgACIDQQR2IQAgA0EQTw0ACyACQYABaiIAQYEBTwRAIABBgAFBjK/AABBoAAsgAUGcr8AAQQIgAiAEakGAAWpBACACaxAhIARBgAFqJAALOAACQCACQYCAxABGDQAgACACIAEoAhARAABFDQBBAQ8LIANFBEBBAA8LIAAgAyAEIAEoAgwRAQALOQEBfyMAQRBrIgMkACADIAE2AgwgAyAANgIIIANBCGpBiI/AACADQQxqQYiPwAAgAkH4jsAAEDgACzwBAX8jAEEQayICJAAgAkGUkcAANgIMIAIgADYCCCACQQhqQZiRwAAgAkEMakGYkcAAIAFBjJXAABA4AAvcBAIHfwF+IwBBEGsiBiQAIAYgADYCDCAGQQxqIQgjAEEQayICJAAgASgCFEHwm8AAQQ0gASgCGCgCDBEBACEAIAJBADoADSACIAA6AAwgAiABNgIIIwBBQGoiACQAQQEhAwJAIAJBCGoiBC0ABA0AIAQtAAUhBSAEKAIAIgEoAhwiB0EEcUUEQCABKAIUQeuuwABB6K7AACAFQQFxIgUbQQJBAyAFGyABKAIYKAIMEQEADQEgASgCFEH9m8AAQQQgASgCGCgCDBEBAA0BIAEoAhRBuK7AAEECIAEoAhgoAgwRAQANASAIIAFB7JvAACgCABEAACEDDAELIAVBAXFFBEAgASgCFEHtrsAAQQMgASgCGCgCDBEBAA0BIAEoAhwhBwsgAEEBOgAbIAAgASkCFDcCDCAAQcyuwAA2AjQgACAAQRtqNgIUIAAgASkCCDcCJCABKQIAIQkgACAHNgI4IAAgASgCEDYCLCAAIAEtACA6ADwgACAJNwIcIAAgAEEMaiIBNgIwIAFB/ZvAAEEEECoNACABQbiuwABBAhAqDQAgCCAAQRxqQeybwAAoAgARAAANACAAKAIwQfCuwABBAiAAKAI0KAIMEQEAIQMLIARBAToABSAEIAM6AAQgAEFAayQAIAItAA0iASACLQAMIgNyIQACQCADQQFxIAFBAUdyDQAgBCgCACIALQAcQQRxRQRAIAAoAhRB867AAEECIAAoAhgoAgwRAQAhAAwBCyAAKAIUQfKuwABBASAAKAIYKAIMEQEAIQALIAJBEGokACAAQQFxIAZBEGokAAsvAQF/IwBBEGsiAiQAIAJBCGogABB6IAIoAgggASACKAIMKAIQEQAAIAJBEGokAAs5AQF/QQEhAgJAIAAgARA/DQAgASgCFEH0q8AAQQIgASgCGCgCDBEBAA0AIABBBGogARA/IQILIAIL1hMCF30LfxAzIiMgCSYBAn8gCCEqIwBBMGsiIiQAICIgIzYCBCAiQoCAgIDAADcCCCAiQQA2AhBB7M7AACErQejOwAAoAgBFBEACf0H9zsAALQAAGgJAQYCAwAAQESIIRQ0AIAhBBGstAABBA3FFDQAgCEGAgMAAEFcaCyAIBEBB+M7AAEGAgBA2AgBB7M7AAEEANgIAQfTOwAAoAgAhI0H0zsAAIAg2AgBB8M7AACgCACEmQfDOwABBgIAQNgIAQejOwAAoAgBB6M7AAEEBNgIARSAmRXJFBEAgIyAmQQJ0QQQQsAELQezOwAAMAQtBBEGAgMAAEJQBAAshKwsgKygCAEUEQCArQX82AgACQCArAn8gKkUEQEEAISNBAAwBCyArQQxqKAIAISwgK0EIaigCACEIAkAgCgRAQQAhIwNAICIgIkEEaiAjQQJ0ICNBgIAEICogI2siCiAKQYCABE8bIgpqIiZBAnQQsQE2AhQgCkECdCIjICxLDQQgIkEUaiAIICMQbyAiIAI4AiAgIiABOAIcICIgADgCGCAiIAU4AiwgIiAEOAIoICIgAzgCJCAIIQojAEEQayInJAAgIwRAICJBCGohKCAiQSRqIiQqAgAhFSAkKgIEIRggJCoCCCEZICJBGGoiJCoCCCEfICQqAgQhICAkKgIAISEDQCAjQQQgI0EESSIkGyEpAkAgCi0AA7NDAAB/Q5VDzczMPV0NACAnQQRqIAogKRAmAn0CQCAkRQRAICcqAgwhDiAnKgIIIQwgJyoCBCELQwAAAAAhFkMAAAAAIRcgCigCDCIlQf8BcQRAICVBAWtB/wFxs0NFIpE9lEMAABDBkhAsIRcLICVBCHYiJEH/AXEEQCAkQQFrQf8BcbNDRSKRPZRDAAAQwZIQLCEWCyAfIA6TIQ8gICAMkyESICEgC5MhESAlQRB2IiRB/wFxDQFDAAAAAAwCC0EDIClBnIPAABBpAAsgJEEBa0H/AXGzQ0UikT2UQwAAEMGSECwLIRogGSAKKAIIIiRBGHWyQwAA/kKVIhMgGCAlQRh1skMAAP5ClSIUlCAZIBOUkyIQlCAkQRB2wLJDAAD+QpUiDSAZIA2UIBUgFJSTIg6UkyAVIBOUIBggDZSTIgxDAACAPyANIA2UkyATIBOUkyAUIBSUk0MAAAAAEJIBkSIblJIiCyALkpIhHCAYIA0gDJQgFCAQlJMgDiAblJIiCyALkpIhHSAVIBQgDpQgEyAMlJMgECAblJIiCyALkpIhHiAPIBMgEiAUlCAPIBOUkyIQlCANIA8gDZQgESAUlJMiDpSTIBEgE5QgEiANlJMiDCAblJIiCyALkpIhDyASIA0gDJQgFCAQlJMgDiAblJIiCyALkpIhDSARIBQgDpQgEyAMlJMgECAblJIiCyALkpIhDAJAIBogFyAWEJIBIBoQkgFDCtcjPJQiC11FBEAgCyAWXkUEQCALIBdeRQRAQwAAgD8gGpUiCyAPlCIPIAsgHJQiEpRDAACAPyAXlSILIAyUIhEgCyAelCIMlEMAAIA/IBaVIgsgDZQiECALIB2UIguUkpIiDiAOlCASIBKUIAwgDJQgCyALlJKSIgwgDyAPlCARIBGUIBAgEJSSkkMAAIC/kpSTIgtDAAAAAF0NBCAOjCALkZMgDJUhDAwDCyAei0O9N4Y1XQ0DIA0gHSAMjCAelSIMlJIgFpUiCyALlCAPIBwgDJSSIBqVIgsgC5SSQwAAgD9eRQ0CDAMLIB2LQ703hjVdDQIgDCAeIA2MIB2VIgyUkiAXlSILIAuUIA8gHCAMlJIgGpUiCyALlJJDAACAP14NAgwBCyAci0O9N4Y1XQ0BIAwgHiAPjCAclSIMlJIgF5UiCyALlCANIB0gDJSSIBaVIgsgC5SSQwAAgD9eDQELIAYgDF9FIAcgDGBFcg0AICgoAggiJCAoKAIARgRAICgQTwsgKCgCBCAkQQJ0aiAMOAIAICggJEEBajYCCAsgCiApQQJ0aiEKICMgKWsiIw0ACwsgJ0EQaiQAICIoAhQiCkGEAU8EQCAKEFoLICYiIyAqSQ0ACwwBC0EAISMDQCAiICJBBGogI0ECdCAjQYCABCAqICNrIgogCkGAgARPGyIKaiImQQJ0ELEBNgIUIApBAnQiIyAsSw0DICJBFGogCCAjEG8gIiACOAIgICIgATgCHCAiIAA4AhggIiAFOAIsICIgBDgCKCAiIAM4AiQgCCEKIwBBEGsiJyQAICMEQCAiQQhqISggIkEkaiIkKgIAIhggGJQgJCoCBCIZIBmUkiAkKgIIIg8gD5SSIRIgIkEYaiIkKgIIIR8gJCoCBCEgICQqAgAhIQNAICNBBCAjQQRJIiQbISkCQCAKLQADs0MAAH9DlUPNzMw9XQ0AICdBBGogCiApECYCfQJAICRFBEAgJyoCDCEOICcqAgghDCAnKgIEIQtDAAAAACERQwAAAAAhECAKKAIMIiVB/wFxBEAgJUEBa0H/AXGzQ0UikT2UQwAAEMGSEMwBIRALICVBCHYiJEH/AXEEQCAkQQFrQf8BcbNDRSKRPZRDAAAQwZIQzAEhEQsgHyAOkyENICAgDJMhFSAhIAuTIQ4gJUEQdiIkQf8BcQ0BQwAAAAAMAgtBAyApQZyDwAAQaQALICRBAWtB/wFxs0NFIpE9lEMAABDBkhDMAQshCyAYIA6UIBkgFZSSIA8gDZSSIgwgDJQgEiAOIA6UIBUgFZSSIA0gDZSSIBAgEZIgC5JDAABAQJUiCyALlJOUkyILQwAAAABdDQAgDIwgC5GTIBKVIgsgBmBFIAcgC2BFcg0AICgoAggiJCAoKAIARgRAICgQTwsgKCgCBCAkQQJ0aiALOAIAICggJEEBajYCCAsgCiApQQJ0aiEKICMgKWsiIw0ACwsgJ0EQaiQAICIoAhQiCkGEAU8EQCAKEFoLICYiIyAqSQ0ACwsgIigCECEjICsoAgBBAWoLNgIAICMQDSEJEDMiCCAJJgEgIiAINgIkICIoAgwhIyAiKAIQISQjAEEgayIlJAAgIkEkaigCACIKJQEQCiEmICUgJDYCBCAlICY2AgACQCAkICZGBEAQngEiKhCVASImJQEgIyAkEAghCRAzIiMgCSYBICpBhAFPBEAgKhBaCyAmQYQBTwRAICYQWgsgCiUBICMlAUEAEAkgI0GEAU8EQCAjEFoLICVBIGokAAwBCyAlQQA2AgggJSAlQQRqICVBCGoQfgALICIoAggiCgRAICIoAgwgCkECdEEEELABCyAiKAIEIgpBhAFPBEAgChBaCyAiQTBqJAAgCAwCCyAjICxB5IbAABBqAAsQcAALIgglASAIEFoL+gECAn8BfiMAQRBrIgIkACACQQE7AQwgAiABNgIIIAIgADYCBCMAQRBrIgEkACACQQRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIMIQMCQAJAAkACQCACKAIEDgIAAQILIAMNAUEBIQJBACEDDAILIAMNACACKAIAIgIoAgQhAyACKAIAIQIMAQsgAEGAgICAeDYCACAAIAE2AgwgAEHglsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALIAAgAzYCBCAAIAI2AgAgAEHElsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALJQAgAEUEQEGYj8AAQTIQuQEACyAAIAIgAyAEIAUgASgCEBEIAAsoACABIAAoAgAtAABBAnQiAEHkp8AAaigCACAAQdCnwABqKAIAEJkBCyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQEQkACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERIACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERwACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQER4ACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQESAACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARCwAQsLJwAgAEEcakEAIAJC2KGkg7Hi0d18URtBACABQpXX3ZjDl4qMC1EbCyEAIABFBEBBmI/AAEEyELkBAAsgACACIAMgASgCEBEDAAsfACAARQRAQZiPwABBMhC5AQALIAAgAiABKAIQEQAAC+MVAQx/EDMiBCABJgECfyAAIQYQMyIAIAImASMAQdAAayIIJAAgCCAANgIYIAggBDYCFCAIQRRqKAIAEMoBIQtBvM7AACgCAEUEQEHkzsAAQQA2AgBB2M7AAEEANgIAQczOwABBADYCAEHAzsAAQQA2AgBB4M7AACgCACEFQeDOwABBBDYCAEHczsAAKAIAIQ1B3M7AAEEANgIAQdTOwAAoAgAhA0HUzsAAQQQ2AgBB0M7AACgCACEJQdDOwABBADYCAEHIzsAAKAIAIQRByM7AAEECNgIAQcTOwAAoAgAhB0HEzsAAQQA2AgBBvM7AACgCACEAQbzOwABBATYCAAJAIABFDQAgBwRAIAQgB0EBdEECELABCyAJBEAgAyAJQQJ0QQQQsAELIA1FDQAgBSAN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IABBAWshACACQRBJIAJBBHYhAkUNAAsgAEGAAWoiAkGBAUkEQCABQZyvwABBAiAAIARqQYABakEAIABrECEgASAFNgIcIAEgBzYCBCABIAY2AgAgBEGAAWokAAwBCyACQYABQYyvwAAQaAALCwwAIAAgASkCADcDAAsNACABQfCYwABBAhAeCw0AIABBhJzAACABECkLDgAgAUGvm8AAQQUQmQELDgAgAUG8p8AAQRIQmQELDQAgAEHQqcAAIAEQKQsOACABQcipwABBBRCZAQsZACAAIAFBjM/AACgCACIAQTogABsRAgAACw0AIABBzK7AACABECkLCgAgAiAAIAEQHguQBQEHfwJAAn8CQCACIgUgACABa0sEQCABIAJqIQMgACACaiECIAAgBUEQSQ0CGiACQXxxIQRBACACQQNxIgZrIQcgBgRAIANBAWshAANAIAJBAWsiAiAALQAAOgAAIABBAWshACACIARLDQALCyAEIAUgBmsiBkF8cSIFayECIAMgB2oiA0EDcQRAIAVBAEwNAiADQQN0IgBBGHEhByADQXxxIghBBGshAUEAIABrQRhxIQkgCCgCACEAA0AgBEEEayIEIAAgCXQgASgCACIAIAd2cjYCACABQQRrIQEgAiAESQ0ACwwCCyAFQQBMDQEgASAGakEEayEBA0AgBEEEayIEIAEoAgA2AgAgAUEEayEBIAIgBEkNAAsMAQsCQCAFQRBJBEAgACECDAELIABBACAAa0EDcSIDaiEEIAMEQCAAIQIgASEAA0AgAiAALQAAOgAAIABBAWohACACQQFqIgIgBEkNAAsLIAQgBSADayIFQXxxIgZqIQICQCABIANqIgNBA3EEQCAGQQBMDQEgA0EDdCIAQRhxIQcgA0F8cSIIQQRqIQFBACAAa0EYcSEJIAgoAgAhAANAIAQgACAHdiABKAIAIgAgCXRyNgIAIAFBBGohASAEQQRqIgQgAkkNAAsMAQsgBkEATA0AIAMhAQNAIAQgASgCADYCACABQQRqIQEgBEEEaiIEIAJJDQALCyAFQQNxIQUgAyAGaiEBCyAFRQ0CIAIgBWohAANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIABJDQALDAILIAZBA3EiAEUNASADIAVrIQMgAiAAawshACADQQFrIQEDQCACQQFrIgIgAS0AADoA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YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwB0AxAATwAAAGgDAAA0AAAAdAMQAE8AAABvAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAAA4EEABLAAAAxAcAAB0AAAAOBBAASwAAAMwHAAAdAAAAHAAAAAwAAAAEAAAAHQAAAB4AAAAfAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnPJBBAASwAAAMAFAAANAAAAAAAAABAAAAAEAAAAIgAAACMAAAAkAAAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAAVAUQAF4AAABnBAAADgAAAAEAAAAAAAAAOiAAAMwFEAACAAAACgpDYXVzZWQgYnk6CgAAACUAAAAMAAAABAAAACYAAAAnAAAAHwAAAAoKc3RhY2sgYmFja3RyYWNlOlN0YWNrIGJhY2t0cmFjZToKABIGEAARAAAAUwBBuIzAAAvZBAEAAAAoAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQDJBBAASwAAAHsKAAAOAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc4gGEABMAAAALQoAACQAAAAAAAAAEAAAAAQAAAAiAAAAIwAAACQAAAAgICAgOiAAAAEAAAAAAAAAAAcQAAIAAAAgICAgICAgL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnMAGwcQAFwAAAD7GAAAAQAAAAAAAAAEAAAABAAAADUAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZMoHEAAqAAAAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMA/AcQAF8AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AABsCBAADgAAAPwHEABfAAAAegIAAA0AQZyRwAALlQ8EAAAABAAAADsAAAA6AAAAPAAAAAwAAAAEAAAAPQAAAD4AAAA/AAAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAMQIEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADECBAAKQAAAK4EAAANAAAAc3RkL3NyYy9iYWNrdHJhY2UucnNvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtgAkQACgAAAAkAAAAAAAAAAIAAACoCRAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAGwJEAAUAAAAigEAAB0AAABAAAAAEAAAAAQAAABBAAAAQgAAAAEAAAAAAAAAOiBzdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzABYKEAAZAAAA0AAAABMAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleEAKEAAgAAAAc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzaAoQACQAAAAUAAAACQAAAHN0ZC9zcmMvc3luYy9v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Zm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAjhUQABAAAAB+AgAADgAAAGZyb21fc3RyX3JhZGl4X2ludDogbXVzdCBsaWUgaW4gdGhlIHJhbmdlIGBbMiwgMzZdYCAtIGZvdW5kILAVEAA8AAAALi4wMTIzNDU2Nzg5YWJjZGVmQm9ycm93TXV0RXJyb3JhbHJlYWR5IGJvcnJvd2VkOiAAABQWEAASAAAAAQAAAAAAAABbY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAABkFhAAIAAAAIQWEAASAAAAPT0hPW1hdGNoZXNhc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAAsxYQABAAAADDFhAAFwAAANoWEAAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAALMWEAAQAAAA/BYQABAAAAAMFxAACQAAANoWEAAJAAAAOiAAAAEAAAAAAAAAOBcQAAIAAAAAAAAADAAAAAQAAABlAAAAZgAAAGcAAAAgICAgIHsgLCAgewosCn0gfQpdY29yZS9zcmMvZm10L251bS5ycwAAdxcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTljb3JlL3NyYy9mbXQvbW9kLnJzZmFsc2V0cnVlAABmGBAAEwAAAKMJAAAmAAAAZhgQABMAAACsCQAAGgAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2Yg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",typeof document>"u"?require("url").pathToFileURL(__filename).href:Ne&&Ne.tagName.toUpperCase()==="SCRIPT"&&Ne.src||new URL("spark.cjs.min.js",document.baseURI).href));const A=_g();(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));const{instance:e,module:s}=await zg(await t,A);return Og(e,s)}const qA=-12,Pg=9,XA=(Pg-qA)/254,Vg=-30,xt=Math.exp(Vg),Zg=11,Xg=11,W=1<<Zg,it=1<<Xg,Ms=1;function lt(t){return t==="bool"||t==="bvec2"||t==="bvec3"||t==="bvec4"}function ut(t){return t==="int"||t==="uint"||t==="float"}function lA(t){return t==="int"||t==="ivec2"||t==="ivec3"||t==="ivec4"}function uA(t){return t==="uint"||t==="uvec2"||t==="uvec3"||t==="uvec4"}function jt(t){return t==="float"||t==="vec2"||t==="vec3"||t==="vec4"}function Fs(t){return t==="mat2"||t==="mat2x2"||t==="mat2x3"||t==="mat2x4"||t==="mat3"||t==="mat3x2"||t==="mat3x3"||t==="mat3x4"||t==="mat4"||t==="mat4x2"||t==="mat4x3"||t==="mat4x4"}function gt(t){return jt(t)||Fs(t)}function Gt(t){return t==="vec2"||t==="ivec2"||t==="uvec2"}function Rt(t){return t==="vec3"||t==="ivec3"||t==="uvec3"}function $t(t){return t==="vec4"||t==="ivec4"||t==="uvec4"}function Wg(t){return Gt(t)||Rt(t)||$t(t)}function ot(t){return t==="mat2"||t==="mat2x2"}function It(t){return t==="mat3"||t==="mat3x3"}function Qt(t){return t==="mat4"||t==="mat4x4"}function Ns(t){switch(t){case"vec2":return"float";case"vec3":return"float";case"vec4":return"float";case"ivec2":return"int";case"ivec3":return"int";case"ivec4":return"int";case"uvec2":return"uint";case"uvec3":return"uint";case"uvec4":return"uint";default:throw new Error(`Invalid vector type: ${t}`)}}function ks(t){switch(t){case"vec2":case"ivec2":case"uvec2":return 2;case"vec3":case"ivec3":case"uvec3":return 3;case"vec4":case"ivec4":case"uvec4":return 4;default:throw new Error(`Invalid vector type: ${t}`)}}function jg(t){if(ut(t))return"float";if(Gt(t))return"vec2";if(Rt(t))return"vec3";if($t(t))return"vec4";throw new Error(`Invalid vector type: ${t}`)}function Gs(t){if(ut(t))return"uint";if(Gt(t))return"uvec2";if(Rt(t))return"uvec3";if($t(t))return"uvec4";throw new Error(`Invalid vector type: ${t}`)}function $g(t){if(ut(t))return"int";if(Gt(t))return"ivec2";if(Rt(t))return"ivec3";if($t(t))return"ivec4";throw new Error(`Invalid vector type: ${t}`)}function Rs(t){if(typeof t=="string")return t;if(typeof t=="object"&&t.type)return t.type;throw new Error(`Invalid DynoType: ${String(t)}`)}function aA(t){return Math.trunc(t).toString()}function rA(t){return`${Math.max(0,Math.trunc(t)).toString()}u`}function H(t){return t===Number.POSITIVE_INFINITY?"INFINITY":t===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(t)?t.toFixed(1):t.toString()}function _(t){return t instanceof nt?t.type:t.dynoOut().type}class nt{constructor(A){this.__isDynoValue=!0,this.type=A}}class K extends nt{constructor(A,e){super(A.outTypes[e]),this.dyno=A,this.key=e}}class St extends nt{constructor(A,e){super(A),this.literal=e}getLiteral(){return this.literal}}function Be(t,A){return new St(t,A)}class Us extends St{constructor(A,e){super(A,""),this.value=e}getLiteral(){const{type:A,value:e}=this;switch(A){case"bool":return e?"true":"false";case"uint":return rA(e);case"int":return aA(e);case"float":return H(e);case"bvec2":{const s=e;return`bvec2(${s[0]}, ${s[1]})`}case"uvec2":{if(e instanceof B.Vector2)return`uvec2(${rA(e.x)}, ${rA(e.y)})`;const s=e;return`uvec2(${rA(s[0])}, ${rA(s[1])})`}case"ivec2":{if(e instanceof B.Vector2)return`ivec2(${aA(e.x)}, ${aA(e.y)})`;const s=e;return`ivec2(${aA(s[0])}, ${aA(s[1])})`}case"vec2":{if(e instanceof B.Vector2)return`vec2(${H(e.x)}, ${H(e.y)})`;const s=e;return`vec2(${H(s[0])}, ${H(s[1])})`}case"bvec3":{const s=e;return`bvec3(${s[0]}, ${s[1]}, ${s[2]})`}case"uvec3":{if(e instanceof B.Vector3)return`uvec3(${rA(e.x)}, ${rA(e.y)}, ${rA(e.z)})`;const s=e;return`uvec3(${rA(s[0])}, ${rA(s[1])}, ${rA(s[2])})`}case"ivec3":{if(e instanceof B.Vector3)return`ivec3(${aA(e.x)}, ${aA(e.y)}, ${aA(e.z)})`;const s=e;return`ivec3(${aA(s[0])}, ${aA(s[1])}, ${aA(s[2])})`}case"vec3":{if(e instanceof B.Vector3)return`vec3(${H(e.x)}, ${H(e.y)}, ${H(e.z)})`;const s=e;return`vec3(${H(s[0])}, ${H(s[1])}, ${H(s[2])})`}case"bvec4":{const s=e;return`bvec4(${s[0]}, ${s[1]}, ${s[2]}, ${s[3]})`}case"uvec4":{if(e instanceof B.Vector4)return`uvec4(${rA(e.x)}, ${rA(e.y)}, ${rA(e.z)}, ${rA(e.w)})`;const s=e;return`uvec4(${rA(s[0])}, ${rA(s[1])}, ${rA(s[2])}, ${rA(s[3])})`}case"ivec4":{if(e instanceof B.Vector4)return`ivec4(${aA(e.x)}, ${aA(e.y)}, ${aA(e.z)}, ${aA(e.w)})`;const s=e;return`ivec4(${aA(s[0])}, ${aA(s[1])}, ${aA(s[2])}, ${aA(s[3])})`}case"vec4":{if(e instanceof B.Vector4)return`vec4(${H(e.x)}, ${H(e.y)}, ${H(e.z)}, ${H(e.w)})`;if(e instanceof B.Quaternion)return`vec4(${H(e.x)}, ${H(e.y)}, ${H(e.z)}, ${H(e.w)})`;const s=e;return`vec4(${H(s[0])}, ${H(s[1])}, ${H(s[2])}, ${H(s[3])})`}case"mat2":case"mat2x2":{const s=e,i=s instanceof B.Matrix2?s.elements:e,n=new Array(4).fill(0).map((a,r)=>H(i[r]));return`${A}(${n.join(", ")})`}case"mat2x3":{const s=e,i=new Array(6).fill(0).map((n,a)=>H(s[a]));return`${A}(${i.join(", ")})`}case"mat2x4":{const s=e,i=new Array(8).fill(0).map((n,a)=>H(s[a]));return`${A}(${i.join(", ")})`}case"mat3":case"mat3x3":{const s=e,i=s instanceof B.Matrix3?s.elements:e,n=new Array(9).fill(0).map((a,r)=>H(i[r]));return`${A}(${n.join(", ")})`}case"mat3x2":{const s=e,i=new Array(6).fill(0).map((n,a)=>H(s[a]));return`${A}(${i.join(", ")})`}case"mat3x4":{const s=e,i=new Array(12).fill(0).map((n,a)=>H(s[a]));return`${A}(${i.join(", ")})`}case"mat4":case"mat4x4":{const s=e,i=s instanceof B.Matrix4?s.elements:e,n=new Array(16).fill(0).map((a,r)=>H(i[r]));return`${A}(${n.join(", ")})`}case"mat4x2":{const s=e,i=new Array(8).fill(0).map((n,a)=>H(s[a]));return`${A}(${i.join(", ")})`}case"mat4x3":{const s=e,i=new Array(12).fill(0).map((n,a)=>H(s[a]));return`${A}(${i.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function q(t,A){return new Us(t,A)}function Yt(t){const A=String(t);if(lt(t))return`${A}(false)`;if(gt(t))return`${A}(0.0)`;if(lA(t))return`${A}(0)`;if(uA(t))return`${A}(0u)`;throw new Error(`Type not implemented: ${A}`)}function Ao(t){const A=String(t);if(lt(t))return`${A}(true)`;if(gt(t))return`${A}(1.0)`;if(lA(t))return`${A}(1)`;if(uA(t))return`${A}(1u)`;throw new Error(`Type not implemented: ${A}`)}function to(t){const A=String(t);if(lt(t))return`${A}(true)`;if(gt(t))return`${A}(-1.0)`;if(lA(t))return`${A}(-1)`;if(uA(t))return`${A}(0xFFFFFFFFu)`;throw new Error(`Type not implemented: ${A}`)}const rs=" ";class Ls{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=rs,this.indent=A??rs}nextSequence(){return this.sequence++}}class O{constructor({inTypes:A,outTypes:e,inputs:s,update:i,globals:n,statements:a,generate:r}){this.inTypes=A??{},this.outTypes=e??{},this.inputs=s??{},this.update=i,this.globals=n,this.statements=a,this.generate=r??(({inputs:g,outputs:I,compile:Q})=>{var o,C;return{globals:(o=this.globals)==null?void 0:o.call(this,{inputs:g,outputs:I,compile:Q}),statements:(C=this.statements)==null?void 0:C.call(this,{inputs:g,outputs:I,compile:Q})}})}get outputs(){const A={};for(const e in this.outTypes)A[e]=new K(this,e);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:e,compile:s}){const i=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(e).join(", ")})`],n=[];for(const I in e){const Q=e[I];Q&&!s.declares.has(Q)&&(s.declares.add(Q),n.push(I))}const{globals:a,statements:r,uniforms:g}=this.generate({inputs:A,outputs:e,compile:s});for(const I of a??[])s.globals.add(I);for(const I in g)s.uniforms[I]=g[I];this.update&&s.updaters.push(this.update);for(const I of n){const Q=e[I];Q&&(s.uniforms[Q]||i.push(`${Oe(Q,this.outTypes[I])};`))}return r!=null&&r.length&&(i.push("{"),i.push(...r.map(I=>s.indent+I)),i.push("}")),i}}class _A extends O{constructor({inTypes:A,outTypes:e,inputs:s,update:i,globals:n,construct:a}){super({inTypes:A,outTypes:e,inputs:s,update:i,globals:n,generate:r=>this.generateBlock(r)}),this.construct=a}generateBlock({inputs:A,outputs:e,compile:s}){var l,c;const i={},n={};for(const h in A)A[h]!=null&&(i[h]=new St(this.inTypes[h],A[h]));for(const h in e)e[h]!=null&&(n[h]=new nt(this.outTypes[h]));const a={roots:[]},r=this.construct(i,n,a);for(const h of((l=this.globals)==null?void 0:l.call(this,{inputs:A,outputs:e,compile:s}))??[])s.globals.add(h);const g=[],I=new Map;function Q(h,u,p){let d=I.get(h);if(!d){d={sequence:s.nextSequence(),outNames:new Map,newOuts:new Set},I.set(h,d);for(const y in h.inputs){let D=h.inputs[y];for(;D;){if(D instanceof nt){D instanceof K&&Q(D.dyno,D.key);break}D=D.dynoOut()}}g.push(h)}u&&(p||d.newOuts.add(u),d.outNames.set(u,p??`${u}_${d.sequence}`))}for(const h of a.roots)Q(h);for(const h in n){let u=(r==null?void 0:r[h])??n[h];for(;u;){if(u instanceof nt){u instanceof K&&Q(u.dyno,u.key,e[h]);break}u=u.dynoOut()}n[h]=u}const o=[];for(const h of g){const u={},p={};for(const D in h.inputs){let S=h.inputs[D];for(;S;){if(S instanceof nt){if(S instanceof St)u[D]=S.getLiteral();else if(S instanceof K){const m=(c=I.get(S.dyno))==null?void 0:c.outNames.get(S.key);if(!m)throw new Error(`Source not found for ${S.dyno.constructor.name}.${S.key}`);u[D]=m}break}S=S.dynoOut()}}const d=I.get(h)??{outNames:new Map};for(const[D,S]of d.outNames.entries())p[D]=S;const y=h.compile({inputs:u,outputs:p,compile:s});o.push(y)}const C=[];for(const h in e)n[h]instanceof St&&C.push(`${e[h]} = ${n[h].getLiteral()};`);return C.length>0&&o.push(C),{statements:o.flatMap((h,u)=>u===0?h:["",...h])}}}function GA(t,A,e,{update:s,globals:i}={}){return new _A({inTypes:t,outTypes:A,construct:e,update:s,globals:i})}function Ae({inTypes:t,outTypes:A,inputs:e,update:s,globals:i,statements:n,generate:a}){return new O({inTypes:t,outTypes:A,inputs:e,update:s,globals:i,statements:n,generate:a})}function Oe(t,A,e){const s=typeof A=="string"?A:A.type;if(!s)throw new Error(`Invalid DynoType: ${String(A)}`);return`${s} ${t}${e!=null?`[${e}]`:""}`}function LA(t){var n;let A=!1;const e=t.split(`
2
+ `).map(a=>{const r=a.trimEnd();return A?r:r.length>0?(A=!0,r):null}).filter(a=>a!=null);for(;e.length>0&&e[e.length-1].length===0;)e.pop();if(e.length===0)return[];const s=(n=e[0].match(/^\s*/))==null?void 0:n[0];if(!s)return e;const i=new RegExp(`^${s}`);return e.map(a=>a.replace(i,""))}function cA(t){return LA(t).join(`
3
+ `)}class F extends O{constructor({a:A,outKey:e,outTypeFunc:s}){const i={a:_(A)},n=s(_(A)),a={[e]:n};super({inTypes:i,outTypes:a,inputs:{a:A}}),this.outKey=e}dynoOut(){return new K(this,this.outKey)}}class $ extends O{constructor({a:A,b:e,outKey:s,outTypeFunc:i}){const n={a:_(A),b:_(e)},a=i(_(A),_(e)),r={[s]:a};super({inTypes:n,outTypes:r,inputs:{a:A,b:e}}),this.outKey=s}dynoOut(){return new K(this,this.outKey)}}class dt extends O{constructor({a:A,b:e,c:s,outKey:i,outTypeFunc:n}){const a={a:_(A),b:_(e),c:_(s)},r=n(_(A),_(e),_(s)),g={[i]:r};super({inTypes:a,outTypes:g,inputs:{a:A,b:e,c:s}}),this.outKey=i}dynoOut(){return new K(this,this.outKey)}}const j={type:"Gsplat"},te={type:"PackedSplats"},eo=t=>new vs({packedSplats:t}),zt=(t,A)=>new Js({packedSplats:t,index:A}),bs=(t,A,e,s)=>new Ts({packedSplats:t,index:A,base:e,count:s}),Et=t=>new Hs({gsplat:t}),at=({gsplat:t,flags:A,index:e,center:s,scales:i,quaternion:n,rgba:a,rgb:r,opacity:g,x:I,y:Q,z:o,r:C,g:E,b:l})=>new qs({gsplat:t,flags:A,index:e,center:s,scales:i,quaternion:n,rgba:a,rgb:r,opacity:g,x:I,y:Q,z:o,r:C,g:E,b:l}),Ye=t=>new zs({gsplat:t}),Pe=(t,{scale:A,rotate:e,translate:s,recolor:i})=>new _s({gsplat:t,scale:A,rotate:e,translate:s,recolor:i}),kA=cA(`
4
4
  struct Gsplat {
5
5
  vec3 center;
6
6
  uint flags;
@@ -14,12 +14,12 @@
14
14
  bool isGsplatActive(uint flags) {
15
15
  return (flags & GSPLAT_FLAG_ACTIVE) != 0u;
16
16
  }
17
- `),uI=rA(`
17
+ `),ye=cA(`
18
18
  struct PackedSplats {
19
19
  usampler2DArray texture;
20
20
  int numSplats;
21
21
  };
22
- `);class wg extends N{constructor({packedSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const dg=rA(`
22
+ `);class vs extends F{constructor({packedSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:e,outputs:s})=>[`${s.numSplats} = ${e.a}.numSplats;`]}}const Ys=cA(`
23
23
  bool readPackedSplat(usampler2DArray texture, int numSplats, int index, out Gsplat gsplat) {
24
24
  if ((index >= 0) && (index < numSplats)) {
25
25
  uvec4 packed = texelFetch(texture, splatTexCoord(index), 0);
@@ -29,22 +29,22 @@
29
29
  return false;
30
30
  }
31
31
  }
32
- `);class pg extends W{constructor({packedSplats:A,index:I}){super({inTypes:{packedSplats:Pt,index:"int"},outTypes:{gsplat:_},inputs:{packedSplats:A,index:I},globals:()=>[MA,uI,dg],statements:({inputs:g,outputs:B})=>{const{gsplat:i}=B;if(!i)return[];const{packedSplats:e,index:Q}=g;let s;return e&&Q?s=YA(`
33
- if (readPackedSplat(${e}.texture, ${e}.numSplats, ${Q}, ${i})) {
34
- bool zeroSize = all(equal(${i}.scales, vec3(0.0, 0.0, 0.0)));
35
- ${i}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
32
+ `);class Js extends O{constructor({packedSplats:A,index:e}){super({inTypes:{packedSplats:te,index:"int"},outTypes:{gsplat:j},inputs:{packedSplats:A,index:e},globals:()=>[kA,ye,Ys],statements:({inputs:s,outputs:i})=>{const{gsplat:n}=i;if(!n)return[];const{packedSplats:a,index:r}=s;let g;return a&&r?g=LA(`
33
+ if (readPackedSplat(${a}.texture, ${a}.numSplats, ${r}, ${n})) {
34
+ bool zeroSize = all(equal(${n}.scales, vec3(0.0, 0.0, 0.0)));
35
+ ${n}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
36
36
  } else {
37
- ${i}.flags = 0u;
37
+ ${n}.flags = 0u;
38
38
  }
39
- `):s=[`${i}.flags = 0u;`],s.push(`${i}.index = ${Q??"0"};`),s}})}dynoOut(){return new v(this,"gsplat")}}class fg extends W{constructor({packedSplats:A,index:I,base:g,count:B}){super({inTypes:{packedSplats:Pt,index:"int",base:"int",count:"int"},outTypes:{gsplat:_},inputs:{packedSplats:A,index:I,base:g,count:B},globals:()=>[MA,uI,dg],statements:({inputs:i,outputs:e})=>{const{gsplat:Q}=e;if(!Q)return[];const{packedSplats:s,index:E,base:a,count:C}=i;let o;return s&&E&&a&&C?o=YA(`
40
- ${Q}.flags = 0u;
41
- if ((${E} >= ${a}) && (${E} < (${a} + ${C}))) {
42
- if (readPackedSplat(${s}.texture, ${s}.numSplats, ${E}, ${Q})) {
43
- bool zeroSize = all(equal(${Q}.scales, vec3(0.0, 0.0, 0.0)));
44
- ${Q}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
39
+ `):g=[`${n}.flags = 0u;`],g.push(`${n}.index = ${r??"0"};`),g}})}dynoOut(){return new K(this,"gsplat")}}class Ts extends O{constructor({packedSplats:A,index:e,base:s,count:i}){super({inTypes:{packedSplats:te,index:"int",base:"int",count:"int"},outTypes:{gsplat:j},inputs:{packedSplats:A,index:e,base:s,count:i},globals:()=>[kA,ye,Ys],statements:({inputs:n,outputs:a})=>{const{gsplat:r}=a;if(!r)return[];const{packedSplats:g,index:I,base:Q,count:o}=n;let C;return g&&I&&Q&&o?C=LA(`
40
+ ${r}.flags = 0u;
41
+ if ((${I} >= ${Q}) && (${I} < (${Q} + ${o}))) {
42
+ if (readPackedSplat(${g}.texture, ${g}.numSplats, ${I}, ${r})) {
43
+ bool zeroSize = all(equal(${r}.scales, vec3(0.0, 0.0, 0.0)));
44
+ ${r}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
45
45
  }
46
46
  }
47
- `):o=[`${Q}.flags = 0u;`],o.push(`${Q}.index = ${E??"0"};`),o}})}dynoOut(){return new v(this,"gsplat")}}class Fg extends W{constructor({gsplat:A}){super({inTypes:{gsplat:_},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[MA],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{flags:i,active:e,index:Q,center:s,scales:E,quaternion:a,rgba:C,rgb:o,opacity:r,x:h,y:c,z:l,r:u,g:D,b:y}=g;return[i?`${i} = ${B?`${B}.flags`:"0u"};`:null,e?`${e} = isGsplatActive(${B?`${B}.flags`:"0u"});`:null,Q?`${Q} = ${B?`${B}.index`:"0"};`:null,s?`${s} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,E?`${E} = ${B?`${B}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,a?`${a} = ${B?`${B}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,C?`${C} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,o?`${o} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,r?`${r} = ${B?`${B}.rgba.a`:"0.0"};`:null,h?`${h} = ${B?`${B}.center.x`:"0.0"};`:null,c?`${c} = ${B?`${B}.center.y`:"0.0"};`:null,l?`${l} = ${B?`${B}.center.z`:"0.0"};`:null,u?`${u} = ${B?`${B}.rgba.r`:"0.0"};`:null,D?`${D} = ${B?`${B}.rgba.g`:"0.0"};`:null,y?`${y} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class Gg extends W{constructor({gsplat:A,flags:I,index:g,center:B,scales:i,quaternion:e,rgba:Q,rgb:s,opacity:E,x:a,y:C,z:o,r,g:h,b:c}){super({inTypes:{gsplat:_,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:_},inputs:{gsplat:A,flags:I,index:g,center:B,scales:i,quaternion:e,rgba:Q,rgb:s,opacity:E,x:a,y:C,z:o,r,g:h,b:c},globals:()=>[MA],statements:({inputs:l,outputs:u})=>{const{gsplat:D}=u;if(!D)return[];const{gsplat:y,flags:d,index:w,center:F,scales:m,quaternion:f,rgba:p,rgb:x,opacity:S,x:G,y:Y,z:M,r:k,g:U,b:J}=l;return[`${D}.flags = ${d??(y?`${y}.flags`:"0u")};`,`${D}.index = ${w??(y?`${y}.index`:"0")};`,`${D}.center = ${F??(y?`${y}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${D}.scales = ${m??(y?`${y}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${D}.quaternion = ${f??(y?`${y}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${D}.rgba = ${p??(y?`${y}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,x?`${D}.rgba.rgb = ${x};`:null,S?`${D}.rgba.a = ${S};`:null,G?`${D}.center.x = ${G};`:null,Y?`${D}.center.y = ${Y};`:null,M?`${D}.center.z = ${M};`:null,k?`${D}.rgba.r = ${k};`:null,U?`${D}.rgba.g = ${U};`:null,J?`${D}.rgba.b = ${J};`:null].filter(Boolean)}})}dynoOut(){return new v(this,"gsplat")}}const Sg=rA(`
47
+ `):C=[`${r}.flags = 0u;`],C.push(`${r}.index = ${I??"0"};`),C}})}dynoOut(){return new K(this,"gsplat")}}class Hs extends O{constructor({gsplat:A}){super({inTypes:{gsplat:j},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[kA],statements:({inputs:e,outputs:s})=>{const{gsplat:i}=e,{flags:n,active:a,index:r,center:g,scales:I,quaternion:Q,rgba:o,rgb:C,opacity:E,x:l,y:c,z:h,r:u,g:p,b:d}=s;return[n?`${n} = ${i?`${i}.flags`:"0u"};`:null,a?`${a} = isGsplatActive(${i?`${i}.flags`:"0u"});`:null,r?`${r} = ${i?`${i}.index`:"0"};`:null,g?`${g} = ${i?`${i}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,I?`${I} = ${i?`${i}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,Q?`${Q} = ${i?`${i}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,o?`${o} = ${i?`${i}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,C?`${C} = ${i?`${i}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,E?`${E} = ${i?`${i}.rgba.a`:"0.0"};`:null,l?`${l} = ${i?`${i}.center.x`:"0.0"};`:null,c?`${c} = ${i?`${i}.center.y`:"0.0"};`:null,h?`${h} = ${i?`${i}.center.z`:"0.0"};`:null,u?`${u} = ${i?`${i}.rgba.r`:"0.0"};`:null,p?`${p} = ${i?`${i}.rgba.g`:"0.0"};`:null,d?`${d} = ${i?`${i}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class qs extends O{constructor({gsplat:A,flags:e,index:s,center:i,scales:n,quaternion:a,rgba:r,rgb:g,opacity:I,x:Q,y:o,z:C,r:E,g:l,b:c}){super({inTypes:{gsplat:j,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:j},inputs:{gsplat:A,flags:e,index:s,center:i,scales:n,quaternion:a,rgba:r,rgb:g,opacity:I,x:Q,y:o,z:C,r:E,g:l,b:c},globals:()=>[kA],statements:({inputs:h,outputs:u})=>{const{gsplat:p}=u;if(!p)return[];const{gsplat:d,flags:y,index:D,center:S,scales:m,quaternion:f,rgba:w,rgb:R,opacity:M,x,y:L,z:N,r:k,g:U,b:v}=h;return[`${p}.flags = ${y??(d?`${d}.flags`:"0u")};`,`${p}.index = ${D??(d?`${d}.index`:"0")};`,`${p}.center = ${S??(d?`${d}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${p}.scales = ${m??(d?`${d}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${p}.quaternion = ${f??(d?`${d}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${p}.rgba = ${w??(d?`${d}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,R?`${p}.rgba.rgb = ${R};`:null,M?`${p}.rgba.a = ${M};`:null,x?`${p}.center.x = ${x};`:null,L?`${p}.center.y = ${L};`:null,N?`${p}.center.z = ${N};`:null,k?`${p}.rgba.r = ${k};`:null,U?`${p}.rgba.g = ${U};`:null,v?`${p}.rgba.b = ${v};`:null].filter(Boolean)}})}dynoOut(){return new K(this,"gsplat")}}const Ks=cA(`
48
48
  vec3 gsplatNormal(vec3 scales, vec4 quaternion) {
49
49
  float minScale = min(scales.x, min(scales.y, scales.z));
50
50
  vec3 normal;
@@ -57,13 +57,13 @@
57
57
  }
58
58
  return quatVec(quaternion, normal);
59
59
  }
60
- `);class Ng extends N{constructor({gsplat:A}){super({a:A,outKey:"normal",outTypeFunc:()=>"vec3"}),this.globals=()=>[MA,Sg],this.statements=({inputs:I,outputs:g})=>[`${g.normal} = gsplatNormal(${I.a}.scales, ${I.a}.quaternion);`]}}class mg extends W{constructor({gsplat:A,scale:I,rotate:g,translate:B,recolor:i}){super({inTypes:{gsplat:_,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:_},inputs:{gsplat:A,scale:I,rotate:g,translate:B,recolor:i},globals:()=>[MA],statements:({inputs:e,outputs:Q,compile:s})=>{const{gsplat:E}=Q;if(!E||!e.gsplat)return[];const{scale:a,rotate:C,translate:o,recolor:r}=e,h=s.indent;return[`${E} = ${e.gsplat};`,`if (isGsplatActive(${E}.flags)) {`,a?`${h}${E}.center *= ${a};`:null,C?`${h}${E}.center = quatVec(${C}, ${E}.center);`:null,o?`${h}${E}.center += ${o};`:null,a?`${h}${E}.scales *= ${a};`:null,C?`${h}${E}.quaternion = quatQuat(${C}, ${E}.quaternion);`:null,r?`${h}${E}.rgba *= ${r};`:null,"}"].filter(Boolean)}})}dynoOut(){return new v(this,"gsplat")}}const Mg=t=>new kg({gsplat:t}),Ms=t=>new vI({rgba8:t});class kg extends W{constructor({gsplat:A}){super({inTypes:{gsplat:_},inputs:{gsplat:A},globals:()=>[MA],statements:({inputs:I,outputs:g})=>{const{output:B}=g;if(!B)return[];const{gsplat:i}=I;return i?YA(`
61
- if (isGsplatActive(${i}.flags)) {
62
- ${B} = packSplat(${i}.center, ${i}.scales, ${i}.quaternion, ${i}.rgba);
60
+ `);class zs extends F{constructor({gsplat:A}){super({a:A,outKey:"normal",outTypeFunc:()=>"vec3"}),this.globals=()=>[kA,Ks],this.statements=({inputs:e,outputs:s})=>[`${s.normal} = gsplatNormal(${e.a}.scales, ${e.a}.quaternion);`]}}class _s extends O{constructor({gsplat:A,scale:e,rotate:s,translate:i,recolor:n}){super({inTypes:{gsplat:j,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:j},inputs:{gsplat:A,scale:e,rotate:s,translate:i,recolor:n},globals:()=>[kA],statements:({inputs:a,outputs:r,compile:g})=>{const{gsplat:I}=r;if(!I||!a.gsplat)return[];const{scale:Q,rotate:o,translate:C,recolor:E}=a,l=g.indent;return[`${I} = ${a.gsplat};`,`if (isGsplatActive(${I}.flags)) {`,Q?`${l}${I}.center *= ${Q};`:null,o?`${l}${I}.center = quatVec(${o}, ${I}.center);`:null,C?`${l}${I}.center += ${C};`:null,Q?`${l}${I}.scales *= ${Q};`:null,o?`${l}${I}.quaternion = quatQuat(${o}, ${I}.quaternion);`:null,E?`${l}${I}.rgba *= ${E};`:null,"}"].filter(Boolean)}})}dynoOut(){return new K(this,"gsplat")}}const Os=t=>new Ps({gsplat:t}),so=t=>new Ve({rgba8:t});class Ps extends O{constructor({gsplat:A}){super({inTypes:{gsplat:j},inputs:{gsplat:A},globals:()=>[kA],statements:({inputs:e,outputs:s})=>{const{output:i}=s;if(!i)return[];const{gsplat:n}=e;return n?LA(`
61
+ if (isGsplatActive(${n}.flags)) {
62
+ ${i} = packSplat(${n}.center, ${n}.scales, ${n}.quaternion, ${n}.rgba);
63
63
  } else {
64
- ${B} = uvec4(0u, 0u, 0u, 0u);
64
+ ${i} = uvec4(0u, 0u, 0u, 0u);
65
65
  }
66
- `):[`${B} = uvec4(0u, 0u, 0u, 0u);`]}})}dynoOut(){return new v(this,"output")}}class vI extends W{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:I,outputs:g})=>[`target = ${I.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new v(this,"rgba8")}}const ks=(t,A,I)=>new R({key:t,type:A,value:I}),Rs=(t=!1,A)=>new EI({key:A,value:t}),xs=(t=0,A)=>new Rg({key:A,value:t}),Us=(t=0,A)=>new Tt({key:A,value:t}),bA=(t=0,A)=>new nt({key:A,value:t}),Ys=(t,A)=>new xg({key:A,value:t}),Ls=(t,A)=>new Ug({key:A,value:t}),Js=(t,A)=>new Yg({key:A,value:t}),Hs=(t,A)=>new Lg({key:A,value:t}),bs=(t,A)=>new Jg({key:A,value:t}),Ts=(t,A)=>new Hg({key:A,value:t}),Ks=(t,A)=>new bg({key:A,value:t}),$A=(t,A)=>new Ft({key:A,value:t}),qs=(t,A)=>new Tg({key:A,value:t}),vs=(t,A)=>new Kg({key:A,value:t}),Zs=(t,A)=>new qg({key:A,value:t}),zs=(t,A)=>new Xt({key:A,value:t}),Ws=(t,A)=>new vg({key:A,value:t}),Os=(t,A)=>new Zg({key:A,value:t}),Vs=(t,A)=>new zg({key:A,value:t}),Ps=(t,A)=>new Wg({key:A,value:t}),Xs=(t,A)=>new Og({key:A,value:t}),js=(t,A)=>new Vg({key:A,value:t}),_s=(t,A)=>new Pg({key:A,value:t}),$s=(t,A)=>new Xg({key:A,value:t}),AC=(t,A)=>new jg({key:A,value:t}),tC=(t,A)=>new _g({key:A,value:t}),IC=(t,A)=>new $g({key:A,value:t}),gC=(t,A)=>new AB({key:A,value:t}),BC=(t,A)=>new tB({key:A,value:t}),iC=(t,A)=>new IB({key:A,value:t}),eC=(t,A)=>new gB({key:A,value:t}),QC=(t,A)=>new Yt({key:A,value:t}),sC=(t,A)=>new BB({key:t,value:A}),CC=(t,A)=>new iB({key:A,value:t}),EC=(t,A)=>new eB({key:A,value:t}),aC=(t,A)=>new QB({key:A,value:t}),nC=(t,A)=>new sB({key:A,value:t}),oC=(t,A)=>new CB({key:A,value:t}),rC=(t,A)=>new EB({key:A,value:t}),cC=(t,A)=>new aB({key:A,value:t}),hC=(t,A)=>new nB({key:A,value:t}),lC=(t,A)=>new oB({key:A,value:t}),uC=(t,A)=>new rB({key:A,value:t});class R extends W{constructor({key:A,type:I,count:g,value:B,update:i,globals:e}){A=A??"value",super({outTypes:{[A]:I},update:()=>{if(i){const Q=i(this.value);Q!==void 0&&(this.value=Q)}this.uniform.value=this.value},generate:({inputs:Q,outputs:s})=>{const E=(e==null?void 0:e({inputs:Q,outputs:s}))??[],a={},C=s[A];return C&&(E.push(`uniform ${KI(C,I,g)};`),a[C]=this.uniform),{globals:E,uniforms:a}}}),this.type=I,this.count=g,this.value=B,this.uniform={value:B},this.outKey=A}dynoOut(){return new v(this,this.outKey)}}class EI extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"bool",value:I,update:g})}}class Rg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"uint",value:I,update:g})}}class Tt extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"int",value:I,update:g})}}class nt extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"float",value:I,update:g})}}class xg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec2",value:I,update:g})}}class Ug extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec2",value:I,update:g})}}class Yg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec2",value:I,update:g})}}class Lg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"vec2",value:I,update:g})}}class Jg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec3",value:I,update:g})}}class Hg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec3",value:I,update:g})}}class bg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec3",value:I,update:g})}}class Ft extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"vec3",value:I,update:g})}}class Tg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec4",value:I,update:g})}}class Kg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec4",value:I,update:g})}}class qg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec4",value:I,update:g})}}class Xt extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"vec4",value:I,update:g})}}class vg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2",value:I,update:g})}}class Zg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x2",value:I,update:g})}}class zg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x3",value:I,update:g})}}class Wg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x4",value:I,update:g})}}class Og extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3",value:I,update:g})}}class Vg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x2",value:I,update:g})}}class Pg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x3",value:I,update:g})}}class Xg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x4",value:I,update:g})}}class jg extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4",value:I,update:g})}}class _g extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x2",value:I,update:g})}}class $g extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x3",value:I,update:g})}}class AB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x4",value:I,update:g})}}class tB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2D",value:I,update:g})}}class IB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2D",value:I,update:g})}}class gB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2D",value:I,update:g})}}class Yt extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2DArray",value:I,update:g})}}class BB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2DArray",value:I,update:g})}}class iB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArray",value:I,update:g})}}class eB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler3D",value:I,update:g})}}class QB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler3D",value:I,update:g})}}class sB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler3D",value:I,update:g})}}class CB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"usamplerCube",value:I,update:g})}}class EB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"isamplerCube",value:I,update:g})}}class aB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCube",value:I,update:g})}}class nB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DShadow",value:I,update:g})}}class oB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArrayShadow",value:I,update:g})}}class rB extends R{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCubeShadow",value:I,update:g})}}var hA=Uint8Array,yt=Uint16Array,DC=Int32Array,cB=new hA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),hB=new hA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),yC=new hA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),lB=function(t,A){for(var I=new yt(31),g=0;g<31;++g)I[g]=A+=1<<t[g-1];for(var B=new DC(I[30]),g=1;g<30;++g)for(var i=I[g];i<I[g+1];++i)B[i]=i-I[g]<<5|g;return{b:I,r:B}},uB=lB(cB,2),DB=uB.b,wC=uB.r;DB[28]=258,wC[258]=28;var dC=lB(hB,0),pC=dC.b,xI=new yt(32768);for(var BA=0;BA<32768;++BA){var _A=(BA&43690)>>1|(BA&21845)<<1;_A=(_A&52428)>>2|(_A&13107)<<2,_A=(_A&61680)>>4|(_A&3855)<<4,xI[BA]=((_A&65280)>>8|(_A&255)<<8)>>1}var Lt=function(t,A,I){for(var g=t.length,B=0,i=new yt(A);B<g;++B)t[B]&&++i[t[B]-1];var e=new yt(A);for(B=1;B<A;++B)e[B]=e[B-1]+i[B-1]<<1;var Q;if(I){Q=new yt(1<<A);var s=15-A;for(B=0;B<g;++B)if(t[B])for(var E=B<<4|t[B],a=A-t[B],C=e[t[B]-1]++<<a,o=C|(1<<a)-1;C<=o;++C)Q[xI[C]>>s]=E}else for(Q=new yt(g),B=0;B<g;++B)t[B]&&(Q[B]=xI[e[t[B]-1]++]>>15-t[B]);return Q},jt=new hA(288);for(var BA=0;BA<144;++BA)jt[BA]=8;for(var BA=144;BA<256;++BA)jt[BA]=9;for(var BA=256;BA<280;++BA)jt[BA]=7;for(var BA=280;BA<288;++BA)jt[BA]=8;var yB=new hA(32);for(var BA=0;BA<32;++BA)yB[BA]=5;var fC=Lt(jt,9,1),FC=Lt(yB,5,1),NI=function(t){for(var A=t[0],I=1;I<t.length;++I)t[I]>A&&(A=t[I]);return A},JA=function(t,A,I){var g=A/8|0;return(t[g]|t[g+1]<<8)>>(A&7)&I},mI=function(t,A){var I=A/8|0;return(t[I]|t[I+1]<<8|t[I+2]<<16)>>(A&7)},wB=function(t){return(t+7)/8|0},iI=function(t,A,I){return(A==null||A<0)&&(A=0),(I==null||I>t.length)&&(I=t.length),new hA(t.subarray(A,I))},GC=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],RA=function(t,A,I){var g=new Error(A||GC[t]);if(g.code=t,Error.captureStackTrace&&Error.captureStackTrace(g,RA),!I)throw g;return g},SC=function(t,A,I,g){var B=t.length,i=0;if(!B||A.f&&!A.l)return I||new hA(0);var e=!I,Q=e||A.i!=2,s=A.i;e&&(I=new hA(B*3));var E=function(pA){var GA=I.length;if(pA>GA){var cA=new hA(Math.max(GA*2,pA));cA.set(I),I=cA}},a=A.f||0,C=A.p||0,o=A.b||0,r=A.l,h=A.d,c=A.m,l=A.n,u=B*8;do{if(!r){a=JA(t,C,1);var D=JA(t,C+1,3);if(C+=3,D)if(D==1)r=fC,h=FC,c=9,l=5;else if(D==2){var F=JA(t,C,31)+257,m=JA(t,C+10,15)+4,f=F+JA(t,C+5,31)+1;C+=14;for(var p=new hA(f),x=new hA(19),S=0;S<m;++S)x[yC[S]]=JA(t,C+S*3,7);C+=m*3;for(var G=NI(x),Y=(1<<G)-1,M=Lt(x,G,1),S=0;S<f;){var k=M[JA(t,C,Y)];C+=k&15;var y=k>>4;if(y<16)p[S++]=y;else{var U=0,J=0;for(y==16?(J=3+JA(t,C,3),C+=2,U=p[S-1]):y==17?(J=3+JA(t,C,7),C+=3):y==18&&(J=11+JA(t,C,127),C+=7);J--;)p[S++]=U}}var AA=p.subarray(0,F),Z=p.subarray(F);c=NI(AA),l=NI(Z),r=Lt(AA,c,1),h=Lt(Z,l,1)}else RA(1);else{var y=wB(C)+4,d=t[y-4]|t[y-3]<<8,w=y+d;if(w>B){s&&RA(0);break}Q&&E(o+d),I.set(t.subarray(y,w),o),A.b=o+=d,A.p=C=w*8,A.f=a;continue}if(C>u){s&&RA(0);break}}Q&&E(o+131072);for(var gA=(1<<c)-1,tA=(1<<l)-1,V=C;;V=C){var U=r[mI(t,C)&gA],b=U>>4;if(C+=U&15,C>u){s&&RA(0);break}if(U||RA(2),b<256)I[o++]=b;else if(b==256){V=C,r=null;break}else{var P=b-254;if(b>264){var S=b-257,O=cB[S];P=JA(t,C,(1<<O)-1)+DB[S],C+=O}var X=h[mI(t,C)&tA],L=X>>4;X||RA(3),C+=X&15;var Z=pC[L];if(L>3){var O=hB[L];Z+=mI(t,C)&(1<<O)-1,C+=O}if(C>u){s&&RA(0);break}Q&&E(o+131072);var wA=o+P;if(o<Z){var EA=i-Z,dA=Math.min(Z,wA);for(EA+o<0&&RA(3);o<dA;++o)I[o]=g[EA+o]}for(;o<wA;++o)I[o]=I[o-Z]}}A.l=r,A.p=V,A.b=o,A.f=a,r&&(a=1,A.m=c,A.d=h,A.n=l)}while(!a);return o!=I.length&&e?iI(I,0,o):I.subarray(0,o)},NC=new hA(0),mC=function(t){(t[0]!=31||t[1]!=139||t[2]!=8)&&RA(6,"invalid gzip data");var A=t[3],I=10;A&4&&(I+=(t[10]|t[11]<<8)+2);for(var g=(A>>3&1)+(A>>4&1);g>0;g-=!t[I++]);return I+(A&2)},MI=function(){function t(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new hA(32768),this.p=new hA(0),g&&this.o.set(g)}return t.prototype.e=function(A){if(this.ondata||RA(5),this.d&&RA(4),!this.p.length)this.p=A;else if(A.length){var I=new hA(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},t.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=SC(this.p,this.s,this.o);this.ondata(iI(g,I,this.s.b),this.d),this.o=iI(g,this.s.b-32768),this.s.b=this.o.length,this.p=iI(this.p,this.s.p/8|0),this.s.p&=7},t.prototype.push=function(A,I){this.e(A),this.c(I)},t}(),dB=function(){function t(A,I){this.v=1,this.r=0,MI.call(this,A,I)}return t.prototype.push=function(A,I){if(MI.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?mC(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}MI.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=wB(this.s.p)+9,this.s={i:0},this.o=new hA(0),this.push(new hA(0),I))},t}(),MC=typeof TextDecoder<"u"&&new TextDecoder,kC=0;try{MC.decode(NC,{stream:!0}),kC=1}catch{}const _t=new Float32Array(1),DI=new Uint32Array(_t.buffer);function RC(t){return _t[0]=t,DI[0]}function xC(t){return DI[0]=t,_t[0]}function it(t){_t[0]=t;const A=DI[0],I=A>>31&1,g=A>>23&255,B=A&8388607,i=I<<15;if(g===255)return B!==0?i|32767:i|31744;const e=g-127+15;if(e>=31)return i|31744;if(e<=0){if(e<-10)return i;const s=(B|8388608)>>1-e+13;return i|s}const Q=B>>13;return i|e<<10|Q}function yA(t){const A=t>>15&1,I=t>>10&31,g=t&1023;let B;if(I===0)if(g===0)B=A<<31;else{let i=g,e=-14;for(;(i&1024)===0;)i<<=1,e--;i&=1023;const Q=e+127,s=i<<13;B=A<<31|Q<<23|s}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const i=I-15+127,e=g<<13;B=A<<31|i<<23|e}return DI[0]=B,_t[0]}function mA(t){return Math.max(0,Math.min(255,Math.round(t*255)))}function Jt(t){return Math.max(-127,Math.min(127,Math.round(t*127)))}function pB(t){return t/255}function fB(t){return t/127}class UC{constructor({asyncFetch:A,maxItems:I=5}){this.asyncFetch=A,this.maxItems=I,this.items=[]}async getFetch(A){const I=this.items.findIndex(B=>B.key===A);if(I>=0){const B=this.items.splice(I,1)[0];return this.items.push(B),B.data}const g=await this.asyncFetch(A);for(this.items.push({key:A,data:g});this.items.length>this.maxItems;)this.items.shift();return g}}function YC(t,A){const I=Object.entries(t).map(([g,B])=>[g,A(B,g)]);return Object.fromEntries(I)}function LC(t,A){const I=Object.entries(t).map(([g,B])=>[g,A(B,g)]).filter(([g,B])=>B!==void 0);return Object.fromEntries(I)}function FB(t){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(t),A}function JC(t,A){return new Array(t).fill(null).map((I,g)=>A(g))}class GB{constructor({allocate:A,dispose:I,valid:g}){this.items=[],this.allocate=A,this.dispose=I,this.valid=g}alloc(A){for(;;){const I=this.items.pop();if(!I)break;if(this.valid(I,A))return I;this.dispose&&this.dispose(I)}return this.allocate(A)}free(A){this.items.push(A)}disposeAll(){let A;for(A=this.items.pop();A;)this.dispose&&this.dispose(A),A=this.items.pop()}}function aI(t,A,I,g,B,i,e,Q,s,E,a,C,o,r,h,c){const l=mA(r),u=mA(h),D=mA(c),y=mA(o),d=ZI(new n.Quaternion(s,E,a,C)),w=d&255,F=d>>>8&255,m=d>>>16&255,f=i===0?0:Math.min(255,Math.max(0,Math.round((Math.log(i)-TA)/VA)+1)),p=e===0?0:Math.min(255,Math.max(0,Math.round((Math.log(e)-TA)/VA)+1)),x=Q===0?0:Math.min(255,Math.max(0,Math.round((Math.log(Q)-TA)/VA)+1)),S=it(I),G=it(g),Y=it(B),M=A*4;t[M]=l|u<<8|D<<16|y<<24,t[M+1]=S|G<<16,t[M+2]=Y|w<<16|F<<24,t[M+3]=f|p<<8|x<<16|m<<24}function HC(t,A,I,g,B){const i=it(I),e=it(g),Q=it(B),s=A*4;t[s+1]=i|e<<16,t[s+2]=Q|t[s+2]&4294901760}function bC(t,A,I,g,B){const i=I===0?0:Math.min(255,Math.max(0,Math.round((Math.log(I)-TA)/VA)+1)),e=g===0?0:Math.min(255,Math.max(0,Math.round((Math.log(g)-TA)/VA)+1)),Q=B===0?0:Math.min(255,Math.max(0,Math.round((Math.log(B)-TA)/VA)+1)),s=A*4;t[s+3]=i|e<<8|Q<<16|t[s+3]&4278190080}function TC(t,A,I,g,B,i){const e=ZI(new n.Quaternion(I,g,B,i)),Q=e&255,s=e>>>8&255,E=e>>>16&255,a=A*4;t[a+2]=t[a+2]&65535|Q<<16|s<<24,t[a+3]=t[a+3]&16777215|E<<24}function KC(t,A,I,g,B,i){const e=mA(I),Q=mA(g),s=mA(B),E=mA(i),a=A*4;t[a]=e|Q<<8|s<<16|E<<24}function qC(t,A,I,g,B){const i=mA(I),e=mA(g),Q=mA(B),s=A*4;t[s]=i|e<<8|Q<<16|t[s]&4278190080}function vC(t,A,I){const g=mA(I),B=A*4;t[B]=t[B]&16777215|g<<24}const ZC=new n.Vector3,zC=new n.Vector3,WC=new n.Quaternion,OC=new n.Color,VC={center:ZC,scales:zC,quaternion:WC,color:OC,opacity:0};function nI(t,A){const I=VC,g=A*4,B=t[g],i=t[g+1],e=t[g+2],Q=t[g+3];I.color.set((B&255)/255,(B>>>8&255)/255,(B>>>16&255)/255),I.opacity=(B>>>24&255)/255,I.center.set(yA(i&65535),yA(i>>>16&65535),yA(e&65535));const s=Q&255;I.scales.x=s===0?0:Math.exp(TA+(s-1)*VA);const E=Q>>>8&255;I.scales.y=E===0?0:Math.exp(TA+(E-1)*VA);const a=Q>>>16&255;I.scales.z=a===0?0:Math.exp(TA+(a-1)*VA);const C=e>>>16&65535|Q>>>8&16711680;return HB(C,I.quaternion),I}function FA(t){const A=j,I=Math.max(ng,Math.min(It,Math.ceil(t/A))),g=Math.ceil(t/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function PC(t){const A=j,I=Math.max(ng,Math.min(It,Math.ceil(t/A))),g=Math.ceil(t/(A*I));return A*I*g}function SB(){return navigator.maxTouchPoints>0?!0:/Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(navigator.userAgent)}function NB(){return/Android/.test(navigator.userAgent)}function mB(){return/Oculus/.test(navigator.userAgent)}function MB(t,A,I){const g=new Uint8Array(A*4);for(let B=0;B<I/2;B++){const i=B*A*4,e=(I-1-B)*A*4;g.set(t.subarray(i,i+A*4)),t.set(t.subarray(e,e+A*4),i),t.set(g,e)}return t}function kB(t,A,I){const g=document.createElement("canvas");g.width=A,g.height=I;const B=g.getContext("2d");if(!B)throw new Error("Can't get 2d context");const i=B.createImageData(A,I);return i.data.set(t),B.putImageData(i,0,0),g.toDataURL("image/png")}function RB(t){const A=new n.Clock(t.autoStart);return A.startTime=t.startTime,A.oldTime=t.oldTime,A.elapsedTime=t.elapsedTime,A.running=t.running,A}function XC(t){return Object.fromEntries(Object.entries(t).filter(([A,I])=>I!==void 0))}const xB=rA(`
66
+ `):[`${i} = uvec4(0u, 0u, 0u, 0u);`]}})}dynoOut(){return new K(this,"output")}}class Ve extends O{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:e,outputs:s})=>[`target = ${e.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new K(this,"rgba8")}}const io=(t,A,e)=>new G({key:t,type:A,value:e}),no=(t=!1,A)=>new Ce({key:A,value:t}),ao=(t=0,A)=>new Vs({key:A,value:t}),ro=(t=0,A)=>new _t({key:A,value:t}),TA=(t=0,A)=>new ct({key:A,value:t}),go=(t,A)=>new Zs({key:A,value:t}),oo=(t,A)=>new Xs({key:A,value:t}),Io=(t,A)=>new Ws({key:A,value:t}),Qo=(t,A)=>new js({key:A,value:t}),Bo=(t,A)=>new $s({key:A,value:t}),Co=(t,A)=>new Ai({key:A,value:t}),Eo=(t,A)=>new ti({key:A,value:t}),tt=(t,A)=>new Ft({key:A,value:t}),co=(t,A)=>new ei({key:A,value:t}),ho=(t,A)=>new si({key:A,value:t}),lo=(t,A)=>new ii({key:A,value:t}),uo=(t,A)=>new ee({key:A,value:t}),po=(t,A)=>new ni({key:A,value:t}),yo=(t,A)=>new ai({key:A,value:t}),wo=(t,A)=>new ri({key:A,value:t}),Do=(t,A)=>new gi({key:A,value:t}),fo=(t,A)=>new oi({key:A,value:t}),mo=(t,A)=>new Ii({key:A,value:t}),xo=(t,A)=>new Qi({key:A,value:t}),So=(t,A)=>new Bi({key:A,value:t}),Mo=(t,A)=>new Ci({key:A,value:t}),Fo=(t,A)=>new Ei({key:A,value:t}),No=(t,A)=>new ci({key:A,value:t}),ko=(t,A)=>new hi({key:A,value:t}),Go=(t,A)=>new li({key:A,value:t}),Ro=(t,A)=>new ui({key:A,value:t}),Uo=(t,A)=>new di({key:A,value:t}),Lo=(t,A)=>new Ht({key:A,value:t}),bo=(t,A)=>new pi({key:t,value:A}),vo=(t,A)=>new yi({key:A,value:t}),Yo=(t,A)=>new wi({key:A,value:t}),Jo=(t,A)=>new Di({key:A,value:t}),To=(t,A)=>new fi({key:A,value:t}),Ho=(t,A)=>new mi({key:A,value:t}),qo=(t,A)=>new xi({key:A,value:t}),Ko=(t,A)=>new Si({key:A,value:t}),zo=(t,A)=>new Mi({key:A,value:t}),_o=(t,A)=>new Fi({key:A,value:t}),Oo=(t,A)=>new Ni({key:A,value:t});class G extends O{constructor({key:A,type:e,count:s,value:i,update:n,globals:a}){A=A??"value",super({outTypes:{[A]:e},update:()=>{if(n){const r=n(this.value);r!==void 0&&(this.value=r)}this.uniform.value=this.value},generate:({inputs:r,outputs:g})=>{const I=(a==null?void 0:a({inputs:r,outputs:g}))??[],Q={},o=g[A];return o&&(I.push(`uniform ${Oe(o,e,s)};`),Q[o]=this.uniform),{globals:I,uniforms:Q}}}),this.type=e,this.count=s,this.value=i,this.uniform={value:i},this.outKey=A}dynoOut(){return new K(this,this.outKey)}}class Ce extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"bool",value:e,update:s})}}class Vs extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"uint",value:e,update:s})}}class _t extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"int",value:e,update:s})}}class ct extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"float",value:e,update:s})}}class Zs extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"bvec2",value:e,update:s})}}class Xs extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"uvec2",value:e,update:s})}}class Ws extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"ivec2",value:e,update:s})}}class js extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"vec2",value:e,update:s})}}class $s extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"bvec3",value:e,update:s})}}class Ai extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"uvec3",value:e,update:s})}}class ti extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"ivec3",value:e,update:s})}}class Ft extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"vec3",value:e,update:s})}}class ei extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"bvec4",value:e,update:s})}}class si extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"uvec4",value:e,update:s})}}class ii extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"ivec4",value:e,update:s})}}class ee extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"vec4",value:e,update:s})}}class ni extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat2",value:e,update:s})}}class ai extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat2x2",value:e,update:s})}}class ri extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat2x3",value:e,update:s})}}class gi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat2x4",value:e,update:s})}}class oi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat3",value:e,update:s})}}class Ii extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat3x2",value:e,update:s})}}class Qi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat3x3",value:e,update:s})}}class Bi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat3x4",value:e,update:s})}}class Ci extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat4",value:e,update:s})}}class Ei extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat4x2",value:e,update:s})}}class ci extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat4x3",value:e,update:s})}}class hi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"mat4x4",value:e,update:s})}}class li extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"usampler2D",value:e,update:s})}}class ui extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"isampler2D",value:e,update:s})}}class di extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"sampler2D",value:e,update:s})}}class Ht extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"usampler2DArray",value:e,update:s})}}class pi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"isampler2DArray",value:e,update:s})}}class yi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"sampler2DArray",value:e,update:s})}}class wi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"usampler3D",value:e,update:s})}}class Di extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"isampler3D",value:e,update:s})}}class fi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"sampler3D",value:e,update:s})}}class mi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"usamplerCube",value:e,update:s})}}class xi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"isamplerCube",value:e,update:s})}}class Si extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"samplerCube",value:e,update:s})}}class Mi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"sampler2DShadow",value:e,update:s})}}class Fi extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"sampler2DArrayShadow",value:e,update:s})}}class Ni extends G{constructor({key:A,value:e,update:s}){super({key:A,type:"samplerCubeShadow",value:e,update:s})}}const se=new Float32Array(1),we=new Uint32Array(se.buffer);function Po(t){return se[0]=t,we[0]}function Vo(t){return we[0]=t,se[0]}function rt(t){se[0]=t;const A=we[0],e=A>>31&1,s=A>>23&255,i=A&8388607,n=e<<15;if(s===255)return i!==0?n|32767:n|31744;const a=s-127+15;if(a>=31)return n|31744;if(a<=0){if(a<-10)return n;const g=(i|8388608)>>1-a+13;return n|g}const r=i>>13;return n|a<<10|r}function pA(t){const A=t>>15&1,e=t>>10&31,s=t&1023;let i;if(e===0)if(s===0)i=A<<31;else{let n=s,a=-14;for(;(n&1024)===0;)n<<=1,a--;n&=1023;const r=a+127,g=n<<13;i=A<<31|r<<23|g}else if(e===31)s===0?i=A<<31|2139095040:i=A<<31|2143289344;else{const n=e-15+127,a=s<<13;i=A<<31|n<<23|a}return we[0]=i,se[0]}function NA(t){return Math.max(0,Math.min(255,Math.round(t*255)))}function qt(t){return Math.max(-127,Math.min(127,Math.round(t*127)))}function ki(t){return t/255}function Gi(t){return t/127}class Zo{constructor({asyncFetch:A,maxItems:e=5}){this.asyncFetch=A,this.maxItems=e,this.items=[]}async getFetch(A){const e=this.items.findIndex(i=>i.key===A);if(e>=0){const i=this.items.splice(e,1)[0];return this.items.push(i),i.data}const s=await this.asyncFetch(A);for(this.items.push({key:A,data:s});this.items.length>this.maxItems;)this.items.shift();return s}}function Xo(t,A){const e=Object.entries(t).map(([s,i])=>[s,A(i,s)]);return Object.fromEntries(e)}function Wo(t,A){const e=Object.entries(t).map(([s,i])=>[s,A(i,s)]).filter(([s,i])=>i!==void 0);return Object.fromEntries(e)}function Ri(t){const A=[],e=new Set;function s(i){i&&typeof i=="object"&&!e.has(i)&&(e.add(i),i instanceof ArrayBuffer?A.push(i):ArrayBuffer.isView(i)?A.push(i.buffer):Array.isArray(i)?i.forEach(s):Object.values(i).forEach(s))}return s(t),A}function jo(t,A){return new Array(t).fill(null).map((e,s)=>A(s))}class Ui{constructor({allocate:A,dispose:e,valid:s}){this.items=[],this.allocate=A,this.dispose=e,this.valid=s}alloc(A){for(;;){const e=this.items.pop();if(!e)break;if(this.valid(e,A))return e;this.dispose&&this.dispose(e)}return this.allocate(A)}free(A){this.items.push(A)}disposeAll(){let A;for(A=this.items.pop();A;)this.dispose&&this.dispose(A),A=this.items.pop()}}function Ee(t,A,e,s,i,n,a,r,g,I,Q,o,C,E,l,c){const h=NA(E),u=NA(l),p=NA(c),d=NA(C),y=Ze(new B.Quaternion(g,I,Q,o)),D=y&255,S=y>>>8&255,m=y>>>16&255,f=n<xt?0:Math.min(255,Math.max(1,Math.round((Math.log(n)-qA)/XA)+1)),w=a<xt?0:Math.min(255,Math.max(1,Math.round((Math.log(a)-qA)/XA)+1)),R=r<xt?0:Math.min(255,Math.max(1,Math.round((Math.log(r)-qA)/XA)+1)),M=rt(e),x=rt(s),L=rt(i),N=A*4;t[N]=h|u<<8|p<<16|d<<24,t[N+1]=M|x<<16,t[N+2]=L|D<<16|S<<24,t[N+3]=f|w<<8|R<<16|m<<24}function $o(t,A,e,s,i){const n=rt(e),a=rt(s),r=rt(i),g=A*4;t[g+1]=n|a<<16,t[g+2]=r|t[g+2]&4294901760}function AI(t,A,e,s,i){const n=e<xt?0:Math.min(255,Math.max(1,Math.round((Math.log(e)-qA)/XA)+1)),a=s<xt?0:Math.min(255,Math.max(1,Math.round((Math.log(s)-qA)/XA)+1)),r=i<xt?0:Math.min(255,Math.max(1,Math.round((Math.log(i)-qA)/XA)+1)),g=A*4;t[g+3]=n|a<<8|r<<16|t[g+3]&4278190080}function tI(t,A,e,s,i,n){const a=Ze(new B.Quaternion(e,s,i,n)),r=a&255,g=a>>>8&255,I=a>>>16&255,Q=A*4;t[Q+2]=t[Q+2]&65535|r<<16|g<<24,t[Q+3]=t[Q+3]&16777215|I<<24}function eI(t,A,e,s,i,n){const a=NA(e),r=NA(s),g=NA(i),I=NA(n),Q=A*4;t[Q]=a|r<<8|g<<16|I<<24}function sI(t,A,e,s,i){const n=NA(e),a=NA(s),r=NA(i),g=A*4;t[g]=n|a<<8|r<<16|t[g]&4278190080}function iI(t,A,e){const s=NA(e),i=A*4;t[i]=t[i]&16777215|s<<24}const nI=new B.Vector3,aI=new B.Vector3,rI=new B.Quaternion,gI=new B.Color,oI={center:nI,scales:aI,quaternion:rI,color:gI,opacity:0};function ce(t,A){const e=oI,s=A*4,i=t[s],n=t[s+1],a=t[s+2],r=t[s+3];e.color.set((i&255)/255,(i>>>8&255)/255,(i>>>16&255)/255),e.opacity=(i>>>24&255)/255,e.center.set(pA(n&65535),pA(n>>>16&65535),pA(a&65535));const g=r&255;e.scales.x=g===0?0:Math.exp(qA+(g-1)*XA);const I=r>>>8&255;e.scales.y=I===0?0:Math.exp(qA+(I-1)*XA);const Q=r>>>16&255;e.scales.z=Q===0?0:Math.exp(qA+(Q-1)*XA);const o=a>>>16&65535|r>>>8&16711680;return Oi(o,e.quaternion),e}function xA(t){const A=W,e=Math.max(Ms,Math.min(it,Math.ceil(t/A))),s=Math.ceil(t/(A*e)),i=A*e*s;return{width:A,height:e,depth:s,maxSplats:i}}function II(t){const A=W,e=Math.max(Ms,Math.min(it,Math.ceil(t/A))),s=Math.ceil(t/(A*e));return A*e*s}function Li(){return navigator.maxTouchPoints>0?!0:/Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(navigator.userAgent)}function bi(){return/Android/.test(navigator.userAgent)}function vi(){return/Oculus/.test(navigator.userAgent)}function Yi(t,A,e){const s=new Uint8Array(A*4);for(let i=0;i<e/2;i++){const n=i*A*4,a=(e-1-i)*A*4;s.set(t.subarray(n,n+A*4)),t.set(t.subarray(a,a+A*4),n),t.set(s,a)}return t}function Ji(t,A,e){const s=document.createElement("canvas");s.width=A,s.height=e;const i=s.getContext("2d");if(!i)throw new Error("Can't get 2d context");const n=i.createImageData(A,e);return n.data.set(t),i.putImageData(n,0,0),s.toDataURL("image/png")}function Ti(t){const A=new B.Clock(t.autoStart);return A.startTime=t.startTime,A.oldTime=t.oldTime,A.elapsedTime=t.elapsedTime,A.running=t.running,A}function QI(t){return Object.fromEntries(Object.entries(t).filter(([A,e])=>e!==void 0))}const Hi=cA(`
67
67
  precision highp float;
68
68
 
69
69
  in vec3 position;
@@ -71,19 +71,19 @@
71
71
  void main() {
72
72
  gl_Position = vec4(position.xy, 0.0, 1.0);
73
73
  }
74
- `);function UB(t){const A=new n.Vector3;for(const I of t)A.add(I);return A.divideScalar(t.length)}function YB(t){if(t.length===0)return new n.Quaternion;const A=t[0].clone();for(let I=1;I<t.length;I++)t[I].dot(t[0])<0?(A.x-=t[I].x,A.y-=t[I].y,A.z-=t[I].z,A.w-=t[I].w):(A.x+=t[I].x,A.y+=t[I].y,A.z+=t[I].z,A.w+=t[I].w);return A.normalize()}function LB(t,A){const I=new n.Vector3(0,0,0).applyMatrix4(t),g=new n.Vector3(0,0,0).applyMatrix4(A),B=new n.Vector3(0,0,-1).applyMatrix4(t).sub(I).normalize(),i=new n.Vector3(0,0,-1).applyMatrix4(A).sub(g).normalize(),e=I.distanceTo(g),Q=B.dot(i);return{distance:e,coincidence:Q}}function jC({matrix1:t,matrix2:A,maxDistance:I}){const g=new n.Vector3(0,0,0).applyMatrix4(t),B=new n.Vector3(0,0,0).applyMatrix4(A);return g.distanceTo(B)<=I}function _C({matrix1:t,matrix2:A,maxDistance:I,minCoincidence:g}){const{distance:B,coincidence:i}=LB(t,A);return B<=I&&(g==null||i>=g)}function JB(t,A){const[I,g]=[new n.Vector3,new n.Quaternion],[B,i]=[new n.Vector3,new n.Quaternion];t.decompose(I,g,new n.Vector3),A.decompose(B,i,new n.Vector3);const e=I.distanceTo(B),Q=Math.abs(g.dot(i));return{distance:e,coorient:Q}}function oI({matrix1:t,matrix2:A,maxDistance:I,minCoorient:g}){const{distance:B,coorient:i}=JB(t,A);return B<=I&&(g==null||i>=g)}function $C(t,A=.001){return Math.abs(t)<A?0:Math.sign(t)}function AE(t){const A=t.w<0,I=Jt(A?-t.x:t.x),g=Jt(A?-t.y:t.y),B=Jt(A?-t.z:t.z),i=I&255,e=g&255,Q=B&255;return i|e<<8|Q<<16}function tE(t,A){const I=t<<24>>24,g=t<<16>>24,B=t<<8>>24;A.set(I/127,g/127,B/127,0);const i=A.x*A.x+A.y*A.y+A.z*A.z;return A.w=Math.sqrt(Math.max(0,1-i)),A}function ZI(t){const A=t.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?new n.Vector3(1,0,0):new n.Vector3(A.x,A.y,A.z).divideScalar(g),i=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let e=B.x/i,Q=B.y/i;if(B.z<0){const r=e;e=(1-Math.abs(Q))*(e>=0?1:-1),Q=(1-Math.abs(r))*(Q>=0?1:-1)}const s=e*.5+.5,E=Q*.5+.5,a=Math.round(s*255),C=Math.round(E*255);return Math.round(I*(255/Math.PI))<<16|C<<8|a}function HB(t,A){const I=t&255,g=t>>>8&255,B=t>>>16&255,i=I/255,e=g/255;let Q=(i-.5)*2,s=(e-.5)*2;const E=1-(Math.abs(Q)+Math.abs(s)),a=Math.max(-E,0);Q+=Q>=0?-a:a,s+=s>=0?-a:a;const C=new n.Vector3(Q,s,E).normalize(),r=B/255*Math.PI*.5,h=Math.sin(r),c=Math.cos(r);return A.set(C.x*h,C.y*h,C.z*h,c),A}function IE(t){const A=t.clone().normalize(),I=2*(A.w*A.x+A.y*A.z),g=1-2*(A.x*A.x+A.y*A.y),B=Math.atan2(I,g),i=2*(A.w*A.y-A.z*A.x),e=Math.abs(i)>=1?Math.sign(i)*(Math.PI/2):Math.asin(i),Q=2*(A.w*A.z+A.x*A.y),s=1-2*(A.y*A.y+A.z*A.z),E=Math.atan2(Q,s),a=(B+Math.PI)/(2*Math.PI),C=(e+Math.PI)/(2*Math.PI),o=(E+Math.PI)/(2*Math.PI),r=Math.round(a*255),h=Math.round(C*255);return Math.round(o*255)<<16|h<<8|r}function gE(t,A){const I=t&255,g=t>>>8&255,B=t>>>16&255,i=I/255,e=g/255,Q=B/255,s=i*(2*Math.PI)-Math.PI,E=e*(2*Math.PI)-Math.PI,a=Q*(2*Math.PI)-Math.PI,C=Math.cos(s*.5),o=Math.sin(s*.5),r=Math.cos(E*.5),h=Math.sin(E*.5),c=Math.cos(a*.5),l=Math.sin(a*.5);return A.w=C*r*c+o*h*l,A.x=o*r*c-C*h*l,A.y=C*h*c+o*r*l,A.z=C*r*l-o*h*c,A.normalize(),A}function tI(t,A,I,g){const B=Math.max(-127,Math.min(127,t*127)),i=Math.max(-127,Math.min(127,A*127)),e=Math.max(-127,Math.min(127,I*127)),Q=Math.max(-127,Math.min(127,g*127));return B&255|(i&255)<<8|(e&255)<<16|(Q&255)<<24}function BE(t,A,I){const g=A*2;for(let B=0;B<9;++B){const i=Math.max(-63,Math.min(63,I[B]*63))&127,e=B*7,Q=e+7,s=Math.floor(e/32),E=e-s*32,a=i<<E&4294967295;if(t[g+s]|=a,Q>s*32+32){const C=i>>>32-E&4294967295;t[g+s+1]|=C}}}function iE(t,A,I){t[A*4+0]=tI(I[0],I[1],I[2],I[3]),t[A*4+1]=tI(I[4],I[5],I[6],I[7]),t[A*4+2]=tI(I[8],I[9],I[10],I[11]),t[A*4+3]=tI(I[12],I[13],I[14],0)}function eE(t,A,I){const g=A*4;for(let B=0;B<21;++B){const i=Math.max(-31,Math.min(31,I[B]*31))&63,e=B*6,Q=e+6,s=Math.floor(e/32),E=e-s*32,a=i<<E&4294967295;if(t[g+s]|=a,Q>s*32+32){const C=i>>>32-E&4294967295;t[g+s+1]|=C}}}function bB(t,A){const I=[];let g=0,B=null;const i=new dB((s,E)=>{if(I.push(s),g+=s.length,E||g>=A){const a=new Uint8Array(g);let C=0;for(const o of I)a.set(o,C),C+=o.length;B=a.slice(0,A)}}),e=1024;let Q=0;for(;B==null&&Q<t.length;){const s=t.slice(Q,Q+e);i.push(s,!1),Q+=e}if(B==null&&(i.push(new Uint8Array,!0),B==null))throw new Error("Failed to decompress partial gzip");return B}class TB{constructor({fileBytes:A,chunkBytes:I=64*1024}){this.fileBytes=A,this.chunkBytes=I,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new dB((g,B)=>{this.chunks.push(g),this.totalBytes+=g.length})}read(A){for(;this.totalBytes<A&&this.offset<this.fileBytes.length;){const i=Math.min(this.offset+this.chunkBytes,this.fileBytes.length);this.gunzip.push(this.fileBytes.subarray(this.offset,i),!1),this.offset=i}if(this.totalBytes<A&&this.offset>=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes<A)throw new Error(`Unexpected EOF: needed ${A}, got ${this.totalBytes}`);const I=new Uint8Array(this.totalBytes);let g=0;for(const i of this.chunks)I.set(i,g),g+=i.length;const B=I.subarray(0,A);return this.chunks=[I.subarray(A)],this.totalBytes-=A,B}}const QE=Object.freeze(Object.defineProperty({__proto__:null,DataCache:UC,FreeList:GB,GunzipReader:TB,IDENT_VERTEX_SHADER:xB,Sint8ToFloat:fB,Uint8ToFloat:pB,averagePositions:UB,averageQuaternions:YB,cloneClock:RB,coinciDist:LB,computeMaxSplats:PC,coorientDist:JB,decodeQuatEulerXyz888:gE,decodeQuatOctXy88R8:HB,decodeQuatXyz888:tE,decompressPartialGzip:bB,encodeQuatEulerXyz888:IE,encodeQuatOctXy88R8:ZI,encodeQuatXyz888:AE,encodeSh1Rgb:BE,encodeSh2Rgb:iE,encodeSh3Rgb:eE,epsilonSign:$C,flipPixels:MB,floatBitsToUint:RC,floatToSint8:Jt,floatToUint8:mA,fromHalf:yA,getArrayBuffers:FB,getTextureSize:FA,isAndroid:NB,isMobile:SB,isOculus:mB,mapFilterObject:LC,mapObject:YC,newArray:JC,omitUndefined:XC,pixelsToPngUrl:kB,setPackedSplat:aI,setPackedSplatCenter:HC,setPackedSplatOpacity:vC,setPackedSplatQuat:TC,setPackedSplatRgb:qC,setPackedSplatRgba:KC,setPackedSplatScales:bC,toHalf:it,uintBitsToFloat:xC,unpackSplat:nI,withinCoinciDist:_C,withinCoorientDist:oI,withinDist:jC},Symbol.toStringTag,{value:"Module"}));class zI{constructor({graph:A,inputs:I,outputs:g,template:B}){this.graph=A,this.template=B,this.inputs=I??{},this.outputs=g??{};const i=new Dg({indent:this.template.indent});for(const Q in this.outputs)this.outputs[Q]&&i.declares.add(this.outputs[Q]);const e=A.compile({inputs:this.inputs,outputs:this.outputs,compile:i});this.shader=B.generate({globals:i.globals,statements:e}),this.uniforms=i.uniforms,this.updaters=i.updaters}prepareMaterial(){return sE(this)}update(){for(const A of this.updaters)A()}}class WI{constructor(A){const I=A.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m),g=A.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m);if(!I||!g)throw new Error("Template must contain {{ GLOBALS }} and {{ STATEMENTS }}");this.before=A.substring(0,I.index),this.between=A.substring(I.index+I[0].length,g.index),this.after=A.substring(g.index+g[0].length),this.indent=g[1]}generate({globals:A,statements:I}){return this.before+Array.from(A).join(`
74
+ `);function qi(t){const A=new B.Vector3;for(const e of t)A.add(e);return A.divideScalar(t.length)}function Ki(t){if(t.length===0)return new B.Quaternion;const A=t[0].clone();for(let e=1;e<t.length;e++)t[e].dot(t[0])<0?(A.x-=t[e].x,A.y-=t[e].y,A.z-=t[e].z,A.w-=t[e].w):(A.x+=t[e].x,A.y+=t[e].y,A.z+=t[e].z,A.w+=t[e].w);return A.normalize()}function zi(t,A){const e=new B.Vector3(0,0,0).applyMatrix4(t),s=new B.Vector3(0,0,0).applyMatrix4(A),i=new B.Vector3(0,0,-1).applyMatrix4(t).sub(e).normalize(),n=new B.Vector3(0,0,-1).applyMatrix4(A).sub(s).normalize(),a=e.distanceTo(s),r=i.dot(n);return{distance:a,coincidence:r}}function BI({matrix1:t,matrix2:A,maxDistance:e}){const s=new B.Vector3(0,0,0).applyMatrix4(t),i=new B.Vector3(0,0,0).applyMatrix4(A);return s.distanceTo(i)<=e}function CI({matrix1:t,matrix2:A,maxDistance:e,minCoincidence:s}){const{distance:i,coincidence:n}=zi(t,A);return i<=e&&(s==null||n>=s)}function _i(t,A){const[e,s]=[new B.Vector3,new B.Quaternion],[i,n]=[new B.Vector3,new B.Quaternion];t.decompose(e,s,new B.Vector3),A.decompose(i,n,new B.Vector3);const a=e.distanceTo(i),r=Math.abs(s.dot(n));return{distance:a,coorient:r}}function he({matrix1:t,matrix2:A,maxDistance:e,minCoorient:s}){const{distance:i,coorient:n}=_i(t,A);return i<=e&&(s==null||n>=s)}function EI(t,A=.001){return Math.abs(t)<A?0:Math.sign(t)}function cI(t){const A=t.w<0,e=qt(A?-t.x:t.x),s=qt(A?-t.y:t.y),i=qt(A?-t.z:t.z),n=e&255,a=s&255,r=i&255;return n|a<<8|r<<16}function hI(t,A){const e=t<<24>>24,s=t<<16>>24,i=t<<8>>24;A.set(e/127,s/127,i/127,0);const n=A.x*A.x+A.y*A.y+A.z*A.z;return A.w=Math.sqrt(Math.max(0,1-n)),A}function Ze(t){const A=t.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const e=2*Math.acos(A.w),s=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),i=s<1e-6?new B.Vector3(1,0,0):new B.Vector3(A.x,A.y,A.z).divideScalar(s),n=Math.abs(i.x)+Math.abs(i.y)+Math.abs(i.z);let a=i.x/n,r=i.y/n;if(i.z<0){const E=a;a=(1-Math.abs(r))*(a>=0?1:-1),r=(1-Math.abs(E))*(r>=0?1:-1)}const g=a*.5+.5,I=r*.5+.5,Q=Math.round(g*255),o=Math.round(I*255);return Math.round(e*(255/Math.PI))<<16|o<<8|Q}function Oi(t,A){const e=t&255,s=t>>>8&255,i=t>>>16&255,n=e/255,a=s/255;let r=(n-.5)*2,g=(a-.5)*2;const I=1-(Math.abs(r)+Math.abs(g)),Q=Math.max(-I,0);r+=r>=0?-Q:Q,g+=g>=0?-Q:Q;const o=new B.Vector3(r,g,I).normalize(),E=i/255*Math.PI*.5,l=Math.sin(E),c=Math.cos(E);return A.set(o.x*l,o.y*l,o.z*l,c),A}function lI(t){const A=t.clone().normalize(),e=2*(A.w*A.x+A.y*A.z),s=1-2*(A.x*A.x+A.y*A.y),i=Math.atan2(e,s),n=2*(A.w*A.y-A.z*A.x),a=Math.abs(n)>=1?Math.sign(n)*(Math.PI/2):Math.asin(n),r=2*(A.w*A.z+A.x*A.y),g=1-2*(A.y*A.y+A.z*A.z),I=Math.atan2(r,g),Q=(i+Math.PI)/(2*Math.PI),o=(a+Math.PI)/(2*Math.PI),C=(I+Math.PI)/(2*Math.PI),E=Math.round(Q*255),l=Math.round(o*255);return Math.round(C*255)<<16|l<<8|E}function uI(t,A){const e=t&255,s=t>>>8&255,i=t>>>16&255,n=e/255,a=s/255,r=i/255,g=n*(2*Math.PI)-Math.PI,I=a*(2*Math.PI)-Math.PI,Q=r*(2*Math.PI)-Math.PI,o=Math.cos(g*.5),C=Math.sin(g*.5),E=Math.cos(I*.5),l=Math.sin(I*.5),c=Math.cos(Q*.5),h=Math.sin(Q*.5);return A.w=o*E*c+C*l*h,A.x=C*E*c-o*l*h,A.y=o*l*c+C*E*h,A.z=o*E*h-C*l*c,A.normalize(),A}function ne(t,A,e,s){const i=Math.max(-127,Math.min(127,t*127)),n=Math.max(-127,Math.min(127,A*127)),a=Math.max(-127,Math.min(127,e*127)),r=Math.max(-127,Math.min(127,s*127));return i&255|(n&255)<<8|(a&255)<<16|(r&255)<<24}function dI(t,A,e){const s=A*2;for(let i=0;i<9;++i){const n=Math.max(-63,Math.min(63,e[i]*63))&127,a=i*7,r=a+7,g=Math.floor(a/32),I=a-g*32,Q=n<<I&4294967295;if(t[s+g]|=Q,r>g*32+32){const o=n>>>32-I&4294967295;t[s+g+1]|=o}}}function pI(t,A,e){t[A*4+0]=ne(e[0],e[1],e[2],e[3]),t[A*4+1]=ne(e[4],e[5],e[6],e[7]),t[A*4+2]=ne(e[8],e[9],e[10],e[11]),t[A*4+3]=ne(e[12],e[13],e[14],0)}function yI(t,A,e){const s=A*4;for(let i=0;i<21;++i){const n=Math.max(-31,Math.min(31,e[i]*31))&63,a=i*6,r=a+6,g=Math.floor(a/32),I=a-g*32,Q=n<<I&4294967295;if(t[s+g]|=Q,r>g*32+32){const o=n>>>32-I&4294967295;t[s+g+1]|=o}}}function Pi(t,A){const e=[];let s=0,i=null;const n=new ms((g,I)=>{if(e.push(g),s+=g.length,I||s>=A){const Q=new Uint8Array(s);let o=0;for(const C of e)Q.set(C,o),o+=C.length;i=Q.slice(0,A)}}),a=1024;let r=0;for(;i==null&&r<t.length;){const g=t.slice(r,r+a);n.push(g,!1),r+=a}if(i==null&&(n.push(new Uint8Array,!0),i==null))throw new Error("Failed to decompress partial gzip");return i}class Vi{constructor({fileBytes:A,chunkBytes:e=64*1024}){this.fileBytes=A,this.chunkBytes=e,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new ms((s,i)=>{this.chunks.push(s),this.totalBytes+=s.length})}read(A){for(;this.totalBytes<A&&this.offset<this.fileBytes.length;){const n=Math.min(this.offset+this.chunkBytes,this.fileBytes.length);this.gunzip.push(this.fileBytes.subarray(this.offset,n),!1),this.offset=n}if(this.totalBytes<A&&this.offset>=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes<A)throw new Error(`Unexpected EOF: needed ${A}, got ${this.totalBytes}`);const e=new Uint8Array(this.totalBytes);let s=0;for(const n of this.chunks)e.set(n,s),s+=n.length;const i=e.subarray(0,A);return this.chunks=[e.subarray(A)],this.totalBytes-=A,i}}const wI=Object.freeze(Object.defineProperty({__proto__:null,DataCache:Zo,FreeList:Ui,GunzipReader:Vi,IDENT_VERTEX_SHADER:Hi,Sint8ToFloat:Gi,Uint8ToFloat:ki,averagePositions:qi,averageQuaternions:Ki,cloneClock:Ti,coinciDist:zi,computeMaxSplats:II,coorientDist:_i,decodeQuatEulerXyz888:uI,decodeQuatOctXy88R8:Oi,decodeQuatXyz888:hI,decompressPartialGzip:Pi,encodeQuatEulerXyz888:lI,encodeQuatOctXy88R8:Ze,encodeQuatXyz888:cI,encodeSh1Rgb:dI,encodeSh2Rgb:pI,encodeSh3Rgb:yI,epsilonSign:EI,flipPixels:Yi,floatBitsToUint:Po,floatToSint8:qt,floatToUint8:NA,fromHalf:pA,getArrayBuffers:Ri,getTextureSize:xA,isAndroid:bi,isMobile:Li,isOculus:vi,mapFilterObject:Wo,mapObject:Xo,newArray:jo,omitUndefined:QI,pixelsToPngUrl:Ji,setPackedSplat:Ee,setPackedSplatCenter:$o,setPackedSplatOpacity:iI,setPackedSplatQuat:tI,setPackedSplatRgb:sI,setPackedSplatRgba:eI,setPackedSplatScales:AI,toHalf:rt,uintBitsToFloat:Vo,unpackSplat:ce,withinCoinciDist:CI,withinCoorientDist:he,withinDist:BI},Symbol.toStringTag,{value:"Module"}));class Xe{constructor({graph:A,inputs:e,outputs:s,template:i}){this.graph=A,this.template=i,this.inputs=e??{},this.outputs=s??{};const n=new Ls({indent:this.template.indent});for(const r in this.outputs)this.outputs[r]&&n.declares.add(this.outputs[r]);const a=A.compile({inputs:this.inputs,outputs:this.outputs,compile:n});this.shader=i.generate({globals:n.globals,statements:a}),this.uniforms=n.uniforms,this.updaters=n.updaters}prepareMaterial(){return DI(this)}update(){for(const A of this.updaters)A()}}class We{constructor(A){const e=A.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m),s=A.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m);if(!e||!s)throw new Error("Template must contain {{ GLOBALS }} and {{ STATEMENTS }}");this.before=A.substring(0,e.index),this.between=A.substring(e.index+e[0].length,s.index),this.after=A.substring(s.index+s[0].length),this.indent=s[1]}generate({globals:A,statements:e}){return this.before+Array.from(A).join(`
75
75
 
76
- `)+this.between+I.map(g=>this.indent+g).join(`
77
- `)+this.after}}const Ig=new Map;function sE(t){let A=Ig.get(t);return A||(A=new n.RawShaderMaterial({glslVersion:n.GLSL3,vertexShader:xB,fragmentShader:t.shader,uniforms:t.uniforms}),Ig.set(t,A),A)}function OI(t,A,I="add"){const g=()=>{throw new Error(`Invalid ${I} types: ${t}, ${A}`)};if(t===A)return t;if(t==="int"){if(lA(A))return A;g()}if(A==="int"){if(lA(t))return t;g()}if(t==="uint"){if(uA(A))return A;g()}if(A==="uint"){if(uA(t))return t;g()}if(t==="float"){if(et(A))return A;g()}if(A==="float"){if(et(t))return t;g()}throw new Error(`Invalid ${I} types: ${t}, ${A}`)}function CE(t,A){return OI(t,A,"sub")}function EE(t,A){const I=()=>{throw new Error(`Invalid mul types: ${t}, ${A}`)},g=B=>B;if(t==="int"){if(lA(A))return g(A);I()}if(A==="int"){if(lA(t))return g(t);I()}if(t==="uint"){if(uA(A))return g(A);I()}if(A==="uint"){if(uA(t))return g(t);I()}if(t==="float"){if(et(A))return g(A);I()}if(A==="float"){if(et(t))return g(t);I()}if(lA(t)||uA(t)||lA(A)||uA(A)){if(t===A)return g(t);I()}if(t==="vec2"){if(A==="vec2"||Qt(A))return g("vec2");if(A==="mat3x2")return g("vec3");if(A==="mat4x2")return g("vec4");I()}if(t==="vec3"){if(A==="mat2x3")return g("vec2");if(A==="vec3"||st(A))return g("vec3");if(A==="mat4x3")return g("vec4");I()}if(t==="vec4"){if(A==="mat2x4")return g("vec2");if(A==="mat3x4")return g("vec3");if(A==="vec4"||Ct(A))return g("vec4");I()}if(A==="vec2"){if(Qt(t))return g("vec2");if(t==="mat2x3")return g("vec3");if(t==="mat2x4")return g("vec4");I()}if(A==="vec3"){if(t==="mat3x2")return g("vec2");if(st(t))return g("vec3");if(t==="mat3x4")return g("vec4");I()}if(A==="vec4"){if(t==="mat4x2")return g("vec2");if(t==="mat4x3")return g("vec3");if(Ct(t))return g("vec4");I()}if(Qt(t)){if(Qt(A))return g("mat2");if(A==="mat3x2")return g("mat3x2");if(A==="mat4x2")return g("mat4x2");I()}if(t==="mat2x3"){if(Qt(A))return g("mat2x3");if(A==="mat3x2")return g("mat3");if(A==="mat4x2")return g("mat4x3");I()}if(t==="mat2x4"){if(Qt(A))return g("mat2x4");if(A==="mat3x2")return g("mat3x4");if(A==="mat4x2")return g("mat4");I()}if(t==="mat3x2"){if(A==="mat2x3")return g("mat2");if(st(A))return g("mat3x2");if(A==="mat4x3")return g("mat4x2");I()}if(st(t)){if(A==="mat2x3")return g("mat2x3");if(st(A))return g("mat3");if(A==="mat4x3")return g("mat4x3");I()}if(t==="mat3x4"){if(A==="mat2x3")return g("mat2x4");if(st(A))return g("mat3x4");if(A==="mat4x3")return g("mat4");I()}if(t==="mat4x2"){if(A==="mat2x4")return g("mat2");if(A==="mat3x4")return g("mat3x2");if(Ct(A))return g("mat4x2");I()}if(t==="mat4x3"){if(A==="mat2x4")return g("mat2x3");if(A==="mat3x4")return g("mat3");if(Ct(A))return g("mat4x3");I()}if(Ct(t)){if(A==="mat2x4")return g("mat2x4");if(A==="mat3x4")return g("mat3x4");if(Ct(A))return g("mat4");I()}throw new Error(`Invalid mul types: ${t}, ${A}`)}function aE(t,A){return OI(t,A,"div")}function nE(t,A){if(t===A)return t;if(t==="int"){if(lA(A))return A}else if(A==="int"){if(lA(t))return t}else if(t==="uint"){if(uA(A))return A}else if(A==="uint"&&uA(t))return t;throw new Error(`Invalid imod types: ${t}, ${A}`)}function oE(t,A){if(t===A||A==="float")return t;throw new Error(`Invalid mod types: ${t}, ${A}`)}function rE(t){return t}function cE(t){return t}function hE(t){return t}function lE(t){return t}function uE(t){return t}function DE(t){return t}function yE(t){return t}function wE(t){return t}function dE(t){return t}function pE(t){return t}function fE(t){return t}function FE(t){return t}function GE(t){return t}function SE(t){return t}function NE(t){return t}function mE(t){return t}function KB(t,A,I="min"){if(t===A)return t;if(A==="float"){if(Wt(t))return t}else if(A==="int"){if(lA(t))return t}else if(A==="uint"&&uA(t))return t;throw new Error(`Invalid ${I} types: ${t}, ${A}`)}function ME(t,A){return KB(t,A,"max")}function kE(t,A,I){if(A==="float"){if(Wt(t))return t}else if(A==="int"){if(lA(t))return t}else if(A==="uint"&&uA(t))return t;throw new Error(`Invalid clamp types: ${t}, ${A}`)}function RE(t,A,I){if(I===t||I==="float"||I==="bool"&&t==="float"||I==="bvec2"&&t==="vec2"||I==="bvec3"&&t==="vec3"||I==="bvec4"&&t==="vec4")return t;throw new Error(`Invalid mix types: ${t}, ${A}, ${I}`)}function xE(t,A){if(t===A||A==="float")return A;throw new Error(`Invalid step types: ${t}, ${A}`)}function UE(t,A,I){if(t===A&&(t===I||t==="float"))return I;throw new Error(`Invalid smoothstep types: ${t}, ${A}, ${I}`)}function qB(t,A="isNan"){if(t==="float")return"bool";if(t==="vec2")return"bvec2";if(t==="vec3")return"bvec3";if(t==="vec4")return"bvec4";throw new Error(`Invalid ${A} types: ${t}`)}function YE(t){return qB(t,"isInf")}const fA=(t,A)=>new WB({a:t,b:A}),Gt=(t,A)=>new OB({a:t,b:A}),oA=(t,A)=>new VB({a:t,b:A}),eI=(t,A)=>new PB({a:t,b:A}),UI=(t,A)=>new XB({a:t,b:A}),vB=(t,A)=>new jB({a:t,b:A}),LE=t=>new _B({a:t}).outputs,VI=t=>new $B({a:t}),JE=t=>new Ai({a:t}),HE=t=>new ti({a:t}),bE=t=>new Ii({a:t}),TE=t=>new gi({a:t}),KE=t=>new Bi({a:t}),qE=t=>new ii({a:t}),QI=t=>new ei({a:t}),vE=(t,A)=>new Qi({a:t,b:A}),ZE=t=>new si({a:t}),zE=t=>new Ci({a:t}),WE=t=>new Ei({a:t}),OE=t=>new ai({a:t}),VE=t=>new ni({a:t}),PE=t=>new oi({a:t}),XE=t=>new ri({a:t}),jE=(t,A)=>new ci({a:t,b:A}),ZB=(t,A)=>new hi({a:t,b:A}),_E=(t,A,I)=>new li({a:t,min:A,max:I}),zB=(t,A,I)=>new ui({a:t,b:A,t:I}),$E=(t,A)=>new Di({edge:t,x:A}),Aa=(t,A,I)=>new yi({edge0:t,edge1:A,x:I}),ta=t=>new wi({a:t}),Ia=t=>new di({a:t});class WB extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"sum",outTypeFunc:OI}),this.statements=({inputs:g,outputs:B})=>[`${B.sum} = ${g.a} + ${g.b};`]}}class OB extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"difference",outTypeFunc:CE}),this.statements=({inputs:g,outputs:B})=>[`${B.difference} = ${g.a} - ${g.b};`]}}class VB extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:EE}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = ${g.a} * ${g.b};`]}}class PB extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"quotient",outTypeFunc:aE}),this.statements=({inputs:g,outputs:B})=>[`${B.quotient} = ${g.a} / ${g.b};`]}}class XB extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:nE}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = ${g.a} % ${g.b};`]}}class jB extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:oE}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = mod(${g.a}, ${g.b});`]}}class _B extends W{constructor({a:A}){const I={a:z(A)},g=I.a,B={fract:g,integer:g};super({inTypes:I,outTypes:B,inputs:{a:A}}),this.statements=({inputs:i,outputs:e})=>[`${e.fract} = modf(${i.a}, ${e.integer});`]}}class $B extends N{constructor({a:A}){super({a:A,outKey:"neg",outTypeFunc:rE}),this.statements=({inputs:I,outputs:g})=>[`${g.neg} = -${I.a};`]}}class Ai extends N{constructor({a:A}){super({a:A,outKey:"abs",outTypeFunc:cE}),this.statements=({inputs:I,outputs:g})=>[`${g.abs} = abs(${I.a});`]}}class ti extends N{constructor({a:A}){super({a:A,outKey:"sign",outTypeFunc:hE}),this.statements=({inputs:I,outputs:g})=>[`${g.sign} = sign(${I.a});`]}}class Ii extends N{constructor({a:A}){super({a:A,outKey:"floor",outTypeFunc:lE}),this.statements=({inputs:I,outputs:g})=>[`${g.floor} = floor(${I.a});`]}}class gi extends N{constructor({a:A}){super({a:A,outKey:"ceil",outTypeFunc:uE}),this.statements=({inputs:I,outputs:g})=>[`${g.ceil} = ceil(${I.a});`]}}class Bi extends N{constructor({a:A}){super({a:A,outKey:"trunc",outTypeFunc:DE}),this.statements=({inputs:I,outputs:g})=>[`${g.trunc} = trunc(${I.a});`]}}class ii extends N{constructor({a:A}){super({a:A,outKey:"round",outTypeFunc:yE}),this.statements=({inputs:I,outputs:g})=>[`${g.round} = round(${I.a});`]}}class ei extends N{constructor({a:A}){super({a:A,outKey:"fract",outTypeFunc:wE}),this.statements=({inputs:I,outputs:g})=>[`${g.fract} = fract(${I.a});`]}}class Qi extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"power",outTypeFunc:dE}),this.statements=({inputs:g,outputs:B})=>[`${B.power} = pow(${g.a}, ${g.b});`]}}class si extends N{constructor({a:A}){super({a:A,outKey:"exp",outTypeFunc:pE}),this.statements=({inputs:I,outputs:g})=>[`${g.exp} = exp(${I.a});`]}}class Ci extends N{constructor({a:A}){super({a:A,outKey:"exp2",outTypeFunc:fE}),this.statements=({inputs:I,outputs:g})=>[`${g.exp2} = exp2(${I.a});`]}}class Ei extends N{constructor({a:A}){super({a:A,outKey:"log",outTypeFunc:FE}),this.statements=({inputs:I,outputs:g})=>[`${g.log} = log(${I.a});`]}}class ai extends N{constructor({a:A}){super({a:A,outKey:"log2",outTypeFunc:GE}),this.statements=({inputs:I,outputs:g})=>[`${g.log2} = log2(${I.a});`]}}class ni extends N{constructor({a:A}){super({a:A,outKey:"sqr",outTypeFunc:SE}),this.statements=({inputs:I,outputs:g})=>[`${g.sqr} = ${I.a} * ${I.a};`]}}class oi extends N{constructor({a:A}){super({a:A,outKey:"sqrt",outTypeFunc:NE}),this.statements=({inputs:I,outputs:g})=>[`${g.sqrt} = sqrt(${I.a});`]}}class ri extends N{constructor({a:A}){super({a:A,outKey:"inversesqrt",outTypeFunc:mE}),this.statements=({inputs:I,outputs:g})=>[`${g.inversesqrt} = inversesqrt(${I.a});`]}}class ci extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"min",outTypeFunc:KB}),this.statements=({inputs:g,outputs:B})=>[`${B.min} = min(${g.a}, ${g.b});`]}}class hi extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"max",outTypeFunc:ME}),this.statements=({inputs:g,outputs:B})=>[`${B.max} = max(${g.a}, ${g.b});`]}}class li extends ht{constructor({a:A,min:I,max:g}){super({a:A,b:I,c:g,outKey:"clamp",outTypeFunc:kE}),this.statements=({inputs:B,outputs:i})=>{const{a:e,b:Q,c:s}=B;return[`${i.clamp} = clamp(${e}, ${Q}, ${s});`]}}}class ui extends ht{constructor({a:A,b:I,t:g}){super({a:A,b:I,c:g,outKey:"mix",outTypeFunc:RE}),this.statements=({inputs:B,outputs:i})=>{const{a:e,b:Q,c:s}=B;return[`${i.mix} = mix(${e}, ${Q}, ${s});`]}}}class Di extends ${constructor({edge:A,x:I}){super({a:A,b:I,outKey:"step",outTypeFunc:xE}),this.statements=({inputs:g,outputs:B})=>{const{a:i,b:e}=g;return[`${B.step} = step(${i}, ${e});`]}}}class yi extends ht{constructor({edge0:A,edge1:I,x:g}){super({a:A,b:I,c:g,outKey:"smoothstep",outTypeFunc:UE}),this.statements=({inputs:B,outputs:i})=>{const{a:e,b:Q,c:s}=B;return[`${i.smoothstep} = smoothstep(${e}, ${Q}, ${s});`]}}}class wi extends N{constructor({a:A}){super({a:A,outKey:"isNan",outTypeFunc:qB}),this.statements=({inputs:I,outputs:g})=>[`${g.isNan} = isNan(${I.a});`]}}class di extends N{constructor({a:A}){super({a:A,outKey:"isInf",outTypeFunc:YE}),this.statements=({inputs:I,outputs:g})=>[`${g.isInf} = isInf(${I.a});`]}}const ga=(t,A)=>new fi({a:t,b:A}),Ba=(t,A)=>new Fi({a:t,b:A}),ia=(t,A)=>new Gi({a:t,b:A}),ea=t=>new Si({a:t}),Qa=(t,A)=>new Ni({a:t,b:A}),sa=(t,A)=>new mi({a:t,b:A}),Ca=(t,A)=>new Mi({a:t,b:A}),pi=(t,A)=>new ki({a:t,b:A}),Ea=(t,A)=>new Ri({a:t,b:A}),aa=(t,A)=>new xi({a:t,b:A}),na=t=>new Ui({a:t}),oa=t=>new Yi({a:t}),PI=(t,A,I)=>new Li({cond:t,t:A,f:I}),ra=t=>new Hi({a:t});class fi extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"and"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.and==="bool"?[`${B.and} = ${g.a} && ${g.b};`]:[`${B.and} = ${g.a} & ${g.b};`]}}class Fi extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"or"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.or==="bool"?[`${B.or} = ${g.a} || ${g.b};`]:[`${B.or} = ${g.a} | ${g.b};`]}}class Gi extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"xor"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.xor==="bool"?[`${B.xor} = ${g.a} ^^ ${g.b};`]:[`${B.xor} = ${g.a} ^ ${g.b};`]}}class Si extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"not"}),this.statements=({inputs:I,outputs:g})=>this.outTypes.not==="bool"?[`${g.not} = !${I.a};`]:[`${g.not} = not(${I.a});`]}}class Ni extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>yI(g,"lessThan"),outKey:"lessThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThan==="bool"?[`${B.lessThan} = ${g.a} < ${g.b};`]:[`${B.lessThan} = lessThan(${g.a}, ${g.b});`]}}class mi extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>yI(g,"lessThanEqual"),outKey:"lessThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThanEqual==="bool"?[`${B.lessThanEqual} = ${g.a} <= ${g.b};`]:[`${B.lessThanEqual} = lessThanEqual(${g.a}, ${g.b});`]}}class Mi extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>yI(g,"greaterThan"),outKey:"greaterThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThan==="bool"?[`${B.greaterThan} = ${g.a} > ${g.b};`]:[`${B.greaterThan} = greaterThan(${g.a}, ${g.b});`]}}class ki extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>yI(g,"greaterThanEqual"),outKey:"greaterThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThanEqual==="bool"?[`${B.greaterThanEqual} = ${g.a} >= ${g.b};`]:[`${B.greaterThanEqual} = greaterThanEqual(${g.a}, ${g.b});`]}}class Ri extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:Ji,outKey:"equal"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.equal==="bool"?[`${B.equal} = ${g.a} == ${g.b};`]:[`${B.equal} = equal(${g.a}, ${g.b});`]}}class xi extends ${constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:ca,outKey:"notEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.notEqual==="bool"?[`${B.notEqual} = ${g.a} != ${g.b};`]:[`${B.notEqual} = notEqual(${g.a}, ${g.b});`]}}class Ui extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"any"}),this.statements=({inputs:I,outputs:g})=>[`${g.any} = any(${I.a});`]}}class Yi extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"all"}),this.statements=({inputs:I,outputs:g})=>[`${g.all} = all(${I.a});`]}}class Li extends ht{constructor({cond:A,t:I,f:g}){super({a:A,b:I,c:g,outKey:"select",outTypeFunc:(B,i,e)=>i}),this.statements=({inputs:B,outputs:i})=>{const{a:e,b:Q,c:s}=B;return[`${i.select} = (${e}) ? (${Q}) : (${s});`]}}}function yI(t,A){if(ct(t))return"bool";if(t==="ivec2"||t==="uvec2"||t==="vec2")return"bvec2";if(t==="ivec3"||t==="uvec3"||t==="vec3")return"bvec3";if(t==="ivec4"||t==="uvec4"||t==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${t}`)}function Ji(t,A="equal"){if(ct(t))return"bool";if(rt(t))return t;if(t==="ivec2"||t==="uvec2"||t==="vec2")return"bvec2";if(t==="ivec3"||t==="uvec3"||t==="vec3")return"bvec3";if(t==="ivec4"||t==="uvec4"||t==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${t}`)}function ca(t){return Ji(t,"notEqual")}function ha(t){if(rt(t))return"bool";if(lA(t))return"int";if(uA(t))return"uint";throw new Error(`Invalid compXor type: ${t}`)}class Hi extends N{constructor({a:A}){const I=ha(z(A));super({a:A,outTypeFunc:g=>I,outKey:"compXor"}),this.statements=({inputs:g,outputs:B})=>{if(ct(this.outTypes.compXor))return[`${B.compXor} = ${g.a};`];const e=(St(I)?["x","y"]:Nt(I)?["x","y","z"]:["x","y","z","w"]).map(s=>`${g.a}.${s}`),Q=rt(I)?"^^":"^";return[`${B.compXor} = ${e.join(` ${Q} `)};`]}}}const la=t=>new zi({value:t}),ua=t=>new Wi({value:t}),Da=t=>new Oi({value:t}),bi=t=>new Vi({value:t}),ya=t=>new Pi({value:t}),wa=t=>new Xi({value:t}),da=t=>new ji({value:t}),pa=t=>new _i({value:t}),fa=t=>new $i({value:t}),Fa=t=>new Ae({value:t}),Ga=t=>new te({value:t}),Sa=t=>new Ie({value:t}),Na=t=>new ge({value:t}),Ti=t=>new Be({value:t}),ot=t=>new ie({value:t}),Ki=t=>new ee({value:t}),ma=t=>new Qe({value:t}),Ma=t=>new se({value:t}),ka=t=>new Ce({value:t}),qi=t=>new Ee({value:t}),Ra=t=>new ae({value:t}),xa=t=>new ne({value:t}),Ua=t=>new oe({value:t}),Ya=t=>new re({value:t}),La=t=>new ce({value:t}),Ja=t=>new he({value:t}),Ha=t=>new le({value:t}),vi=t=>new ue({value:t}),ba=t=>new De({value:t}),Zi=t=>new ye({value:t});class CA extends N{constructor({value:A,outType:I,outKey:g}){super({a:A,outTypeFunc:()=>I,outKey:g}),this.statements=({inputs:B,outputs:i})=>[`${i[g]} = ${lg(I)}(${B.a});`]}}class zi extends CA{constructor({value:A}){super({value:A,outType:"bool",outKey:"bool"})}}class Wi extends CA{constructor({value:A}){super({value:A,outType:"int",outKey:"int"})}}class Oi extends CA{constructor({value:A}){super({value:A,outType:"uint",outKey:"uint"})}}class Vi extends CA{constructor({value:A}){super({value:A,outType:"float",outKey:"float"})}}class Pi extends CA{constructor({value:A}){super({value:A,outType:"bvec2",outKey:"bvec2"})}}class Xi extends CA{constructor({value:A}){super({value:A,outType:"bvec3",outKey:"bvec3"})}}class ji extends CA{constructor({value:A}){super({value:A,outType:"bvec4",outKey:"bvec4"})}}class _i extends CA{constructor({value:A}){super({value:A,outType:"ivec2",outKey:"ivec2"})}}class $i extends CA{constructor({value:A}){super({value:A,outType:"ivec3",outKey:"ivec3"})}}class Ae extends CA{constructor({value:A}){super({value:A,outType:"ivec4",outKey:"ivec4"})}}class te extends CA{constructor({value:A}){super({value:A,outType:"uvec2",outKey:"uvec2"})}}class Ie extends CA{constructor({value:A}){super({value:A,outType:"uvec3",outKey:"uvec3"})}}class ge extends CA{constructor({value:A}){super({value:A,outType:"uvec4",outKey:"uvec4"})}}class Be extends CA{constructor({value:A}){super({value:A,outType:"vec2",outKey:"vec2"})}}class ie extends CA{constructor({value:A}){super({value:A,outType:"vec3",outKey:"vec3"})}}class ee extends CA{constructor({value:A}){super({value:A,outType:"vec4",outKey:"vec4"})}}class Qe extends CA{constructor({value:A}){super({value:A,outType:"mat2",outKey:"mat2"})}}class se extends CA{constructor({value:A}){super({value:A,outType:"mat3",outKey:"mat3"})}}class Ce extends CA{constructor({value:A}){super({value:A,outType:"mat4",outKey:"mat4"})}}class Ee extends N{constructor({value:A}){super({a:A,outKey:"int",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.int} = floatBitsToInt(${I.a});`]}}class ae extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = floatBitsToUint(${I.a});`]}}class ne extends N{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = intBitsToFloat(${I.a});`]}}class oe extends N{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = uintBitsToFloat(${I.a});`]}}class re extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packSnorm2x16(${I.a});`]}}class ce extends N{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackSnorm2x16(${I.a});`]}}class he extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packUnorm2x16(${I.a});`]}}class le extends N{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackUnorm2x16(${I.a});`]}}class ue extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packHalf2x16(${I.a});`]}}class De extends N{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackHalf2x16(${I.a});`]}}class ye extends N{constructor({value:A}){super({a:A,outKey:"rgba8",outTypeFunc:()=>"vec4"}),this.statements=({inputs:I,outputs:g})=>[`uvec4 uRgba = uvec4(${I.a} & 0xffu, (${I.a} >> 8u) & 0xffu, (${I.a} >> 16u) & 0xffu, (${I.a} >> 24u) & 0xffu);`,`${g.rgba8} = vec4(uRgba) / 255.0;`]}}const Ta=t=>new fe({a:t}),Ka=(t,A)=>new Fe({a:t,b:A}),we=(t,A)=>new Ge({a:t,b:A}),qa=(t,A)=>new Se({a:t,b:A}),de=t=>new Ne({a:t}),va=(t,A,I)=>new ke({a:t,b:A,c:I}),Za=(t,A)=>new Re({incident:t,normal:A}),za=(t,A,I)=>new xe({incident:t,normal:A,eta:I}),ft=t=>new be({vector:t}),KA=({vector:t,vectorType:A,x:I,y:g,z:B,w:i,r:e,g:Q,b:s,a:E})=>new Te({vector:t,vectorType:A,x:I,y:g,z:B,w:i,r:e,g:Q,b:s,a:E}),Wa=t=>new me({a:t}),pe=(t,A)=>new Me({a:t,b:A}),Oa=(t,A)=>new Ke({vector:t,select:A}),Va=(t,A)=>new Ue({a:t,b:A}),Pa=(t,A)=>new Ye({a:t,b:A}),Xa=t=>new Le({a:t}),ja=t=>new Je({a:t}),_a=t=>new He({a:t});class fe extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>"float",outKey:"length"}),this.statements=({inputs:I,outputs:g})=>[`${g.length} = length(${I.a});`]}}class Fe extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"distance",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.distance} = distance(${g.a}, ${g.b});`]}}class Ge extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"dot",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.dot} = dot(${g.a}, ${g.b});`]}}class Se extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"cross",outTypeFunc:(g,B)=>"vec3"}),this.statements=({inputs:g,outputs:B})=>[`${B.cross} = cross(${g.a}, ${g.b});`]}}class Ne extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"normalize"}),this.statements=({inputs:I,outputs:g})=>[`${g.normalize} = normalize(${I.a});`]}}function $a(t){if(t==="vec3")return"vec2";if(t==="vec4")return"vec3";throw new Error("Invalid type")}class me extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>$a(I),outKey:"projected"}),this.statements=({inputs:I,outputs:g})=>{if(this.inTypes.a==="vec3")return[`${g.projected} = ${I.a}.xy / ${I.a}.z;`];if(this.inTypes.a==="vec4")return[`${g.projected} = ${I.a}.xyz / ${I.a}.w;`];throw new Error("Invalid type")}}}function An(t){if(t==="float")return"vec2";if(t==="vec2")return"vec3";if(t==="vec3")return"vec4";throw new Error("Invalid type")}class Me extends ${constructor({a:A,b:I}){const g=z(A),B=An(g);super({a:A,b:I,outKey:"extend",outTypeFunc:()=>B}),this.statements=({inputs:i,outputs:e})=>[`${e.extend} = ${B}(${i.a}, ${i.b});`]}}class ke extends ht{constructor({a:A,b:I,c:g}){super({a:A,b:I,c:g,outKey:"forward",outTypeFunc:(B,i,e)=>B}),this.statements=({inputs:B,outputs:i})=>[`${i.forward} = faceforward(${B.a}, ${B.b}, ${B.c});`]}}class Re extends ${constructor({incident:A,normal:I}){super({a:A,b:I,outKey:"reflection",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.reflection} = reflect(${g.a}, ${g.b});`]}}class xe extends ht{constructor({incident:A,normal:I,eta:g}){super({a:A,b:I,c:g,outKey:"refraction",outTypeFunc:(B,i,e)=>B}),this.statements=({inputs:B,outputs:i})=>[`${i.refraction} = refract(${B.a}, ${B.b}, ${B.c});`]}}class Ue extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = matrixCompMult(${A}, ${I});`]}}function tn(t,A){if(t==="vec2"){if(A==="vec2")return"mat2";if(A==="vec3")return"mat3x2";if(A==="vec4")return"mat4x2"}if(t==="vec3"){if(A==="vec2")return"mat2x3";if(A==="vec3")return"mat3";if(A==="vec4")return"mat4x3"}if(t==="vec4"){if(A==="vec2")return"mat2x4";if(A==="vec3")return"mat3x4";if(A==="vec4")return"mat4"}throw new Error(`Invalid outer type: ${t}, ${A}`)}class Ye extends ${constructor({a:A,b:I}){super({a:A,b:I,outKey:"outer",outTypeFunc:tn}),this.statements=({inputs:g,outputs:B})=>[`${B.outer} = outerProduct(${g.a}, ${g.b});`]}}function In(t){if(t==="mat2")return"mat2";if(t==="mat3")return"mat3";if(t==="mat4")return"mat4";if(t==="mat2x2")return"mat2x2";if(t==="mat2x3")return"mat3x2";if(t==="mat2x4")return"mat4x2";if(t==="mat3x2")return"mat2x3";if(t==="mat3x3")return"mat3x3";if(t==="mat3x4")return"mat4x3";if(t==="mat4x2")return"mat2x4";if(t==="mat4x3")return"mat3x4";if(t==="mat4x4")return"mat4x4";throw new Error(`Invalid transpose type: ${t}`)}class Le extends N{constructor({a:A}){super({a:A,outKey:"transpose",outTypeFunc:In}),this.statements=({inputs:I,outputs:g})=>[`${g.transpose} = transpose(${I.a});`]}}class Je extends N{constructor({a:A}){super({a:A,outKey:"det",outTypeFunc:I=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.det} = determinant(${I.a});`]}}class He extends N{constructor({a:A}){super({a:A,outKey:"inverse",outTypeFunc:I=>I}),this.statements=({inputs:I,outputs:g})=>[`${g.inverse} = inverse(${A});`]}}function gn(t){const A=I=>I;switch(t){case"vec2":return A({x:"float",y:"float",r:"float",g:"float"});case"vec3":return A({x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"});case"vec4":return A({x:"float",y:"float",z:"float",w:"float",r:"float",g:"float",b:"float",a:"float"});case"ivec2":return A({x:"int",y:"int",r:"int",g:"int"});case"ivec3":return A({x:"int",y:"int",z:"int",r:"int",g:"int",b:"int"});case"ivec4":return A({x:"int",y:"int",z:"int",w:"int",r:"int",g:"int",b:"int",a:"int"});case"uvec2":return A({x:"uint",y:"uint",r:"uint",g:"uint"});case"uvec3":return A({x:"uint",y:"uint",z:"uint",r:"uint",g:"uint",b:"uint"});case"uvec4":return A({x:"uint",y:"uint",z:"uint",w:"uint",r:"uint",g:"uint",b:"uint",a:"uint"});default:throw new Error(`Invalid vector type: ${t}`)}}class be extends W{constructor({vector:A}){const g={vector:z(A)},B=gn(g.vector);super({inTypes:g,outTypes:B,inputs:{vector:A}}),this.statements=({inputs:i,outputs:e})=>{const{x:Q,y:s,z:E,w:a,r:C,g:o,b:r,a:h}=e,{vector:c}=i;return[Q?`${Q} = ${c}.x;`:null,s?`${s} = ${c}.y;`:null,E?`${E} = ${c}.z;`:null,a?`${a} = ${c}.w;`:null,C?`${C} = ${c}.r;`:null,o?`${o} = ${c}.g;`:null,r?`${r} = ${c}.b;`:null,h?`${h} = ${c}.a;`:null].filter(Boolean)}}}class Te extends W{constructor({vector:A,vectorType:I,x:g,y:B,z:i,w:e,r:Q,g:s,b:E,a}){if(!A&&!I)throw new Error("Either vector or vectorType must be provided");const C=I??z(A),o=rg(C),r=cg(C),h={vector:C,x:o,y:o,r:o,g:o},c={vector:A,x:g,y:B,r:Q,g:s};r>=3&&(Object.assign(h,{z:o,b:o}),Object.assign(c,{z:i,b:E})),r>=4&&(Object.assign(h,{w:o,a:o}),Object.assign(c,{w:e,a})),super({inTypes:h,outTypes:{vector:C},inputs:c}),this.statements=({inputs:l,outputs:u})=>{const{vector:D}=u,{vector:y,x:d,y:w,z:F,w:m,r:f,g:p,b:x,a:S}=l,G=[`${D}.x = ${d??f??(y?`${y}.x`:xt(o))};`,`${D}.y = ${w??p??(y?`${y}.y`:xt(o))};`];return r>=3&&G.push(`${D}.z = ${F??x??(y?`${y}.z`:xt(o))};`),r>=4&&G.push(`${D}.w = ${m??S??(y?`${y}.w`:xt(o))};`),G}}dynoOut(){return new v(this,"vector")}}function Bn(t,A){let I=null;if(Wt(t)?I=A.length===1?"float":A.length===2?"vec2":A.length===3?"vec3":A.length===4?"vec4":null:lA(t)?I=A.length===1?"int":A.length===2?"ivec2":A.length===3?"ivec3":A.length===4?"ivec4":null:uA(t)&&(I=A.length===1?"uint":A.length===2?"uvec2":A.length===3?"uvec3":A.length===4?"uvec4":null),I==null)throw new Error(`Invalid swizzle: ${A}`);return I}class Ke extends N{constructor({vector:A,select:I}){super({a:A,outKey:"swizzle",outTypeFunc:g=>Bn(g,I)}),this.statements=({inputs:g,outputs:B})=>[`${B.swizzle} = ${g.a}.${I};`]}}const en=(t,A,I)=>new Ve({index:t,from:A,to:I}),Qn=t=>new mt({value:t}),sn=t=>new xA({state:t}),Cn=t=>new UA({state:t}),qe=t=>new Pe({value:t}),ve=t=>new Xe({value:t}),Ze=t=>new je({value:t}),ze=t=>new _e({value:t}),En=t=>new $e({value:t}),an=t=>new AQ({value:t}),We=t=>new tQ({value:t}),YI=t=>new IQ({value:t}),Oe=(t,A,I)=>new gQ({z:t,zNear:A,zFar:I}).outputs.depth;class Ve extends W{constructor({from:A,to:I,index:g}){super({inTypes:{from:"int",to:"int",index:"int"},outTypes:{index:"int"},inputs:{from:A,to:I,index:g},statements:({inputs:B,outputs:i})=>[`${i.index} = ${B.index} - ${B.from} + ${B.to};`]})}dynoOut(){return new v(this,"index")}}class xA extends W{constructor({state:A}){const I=z(A);super({inTypes:{state:I},outTypes:{state:"uint"},inputs:{state:A},globals:()=>[rA(`
76
+ `)+this.between+e.map(s=>this.indent+s).join(`
77
+ `)+this.after}}const gs=new Map;function DI(t){let A=gs.get(t);return A||(A=new B.RawShaderMaterial({glslVersion:B.GLSL3,vertexShader:Hi,fragmentShader:t.shader,uniforms:t.uniforms}),gs.set(t,A),A)}function je(t,A,e="add"){const s=()=>{throw new Error(`Invalid ${e} types: ${t}, ${A}`)};if(t===A)return t;if(t==="int"){if(lA(A))return A;s()}if(A==="int"){if(lA(t))return t;s()}if(t==="uint"){if(uA(A))return A;s()}if(A==="uint"){if(uA(t))return t;s()}if(t==="float"){if(gt(A))return A;s()}if(A==="float"){if(gt(t))return t;s()}throw new Error(`Invalid ${e} types: ${t}, ${A}`)}function fI(t,A){return je(t,A,"sub")}function mI(t,A){const e=()=>{throw new Error(`Invalid mul types: ${t}, ${A}`)},s=i=>i;if(t==="int"){if(lA(A))return s(A);e()}if(A==="int"){if(lA(t))return s(t);e()}if(t==="uint"){if(uA(A))return s(A);e()}if(A==="uint"){if(uA(t))return s(t);e()}if(t==="float"){if(gt(A))return s(A);e()}if(A==="float"){if(gt(t))return s(t);e()}if(lA(t)||uA(t)||lA(A)||uA(A)){if(t===A)return s(t);e()}if(t==="vec2"){if(A==="vec2"||ot(A))return s("vec2");if(A==="mat3x2")return s("vec3");if(A==="mat4x2")return s("vec4");e()}if(t==="vec3"){if(A==="mat2x3")return s("vec2");if(A==="vec3"||It(A))return s("vec3");if(A==="mat4x3")return s("vec4");e()}if(t==="vec4"){if(A==="mat2x4")return s("vec2");if(A==="mat3x4")return s("vec3");if(A==="vec4"||Qt(A))return s("vec4");e()}if(A==="vec2"){if(ot(t))return s("vec2");if(t==="mat2x3")return s("vec3");if(t==="mat2x4")return s("vec4");e()}if(A==="vec3"){if(t==="mat3x2")return s("vec2");if(It(t))return s("vec3");if(t==="mat3x4")return s("vec4");e()}if(A==="vec4"){if(t==="mat4x2")return s("vec2");if(t==="mat4x3")return s("vec3");if(Qt(t))return s("vec4");e()}if(ot(t)){if(ot(A))return s("mat2");if(A==="mat3x2")return s("mat3x2");if(A==="mat4x2")return s("mat4x2");e()}if(t==="mat2x3"){if(ot(A))return s("mat2x3");if(A==="mat3x2")return s("mat3");if(A==="mat4x2")return s("mat4x3");e()}if(t==="mat2x4"){if(ot(A))return s("mat2x4");if(A==="mat3x2")return s("mat3x4");if(A==="mat4x2")return s("mat4");e()}if(t==="mat3x2"){if(A==="mat2x3")return s("mat2");if(It(A))return s("mat3x2");if(A==="mat4x3")return s("mat4x2");e()}if(It(t)){if(A==="mat2x3")return s("mat2x3");if(It(A))return s("mat3");if(A==="mat4x3")return s("mat4x3");e()}if(t==="mat3x4"){if(A==="mat2x3")return s("mat2x4");if(It(A))return s("mat3x4");if(A==="mat4x3")return s("mat4");e()}if(t==="mat4x2"){if(A==="mat2x4")return s("mat2");if(A==="mat3x4")return s("mat3x2");if(Qt(A))return s("mat4x2");e()}if(t==="mat4x3"){if(A==="mat2x4")return s("mat2x3");if(A==="mat3x4")return s("mat3");if(Qt(A))return s("mat4x3");e()}if(Qt(t)){if(A==="mat2x4")return s("mat2x4");if(A==="mat3x4")return s("mat3x4");if(Qt(A))return s("mat4");e()}throw new Error(`Invalid mul types: ${t}, ${A}`)}function xI(t,A){return je(t,A,"div")}function SI(t,A){if(t===A)return t;if(t==="int"){if(lA(A))return A}else if(A==="int"){if(lA(t))return t}else if(t==="uint"){if(uA(A))return A}else if(A==="uint"&&uA(t))return t;throw new Error(`Invalid imod types: ${t}, ${A}`)}function MI(t,A){if(t===A||A==="float")return t;throw new Error(`Invalid mod types: ${t}, ${A}`)}function FI(t){return t}function NI(t){return t}function kI(t){return t}function GI(t){return t}function RI(t){return t}function UI(t){return t}function LI(t){return t}function bI(t){return t}function vI(t){return t}function YI(t){return t}function JI(t){return t}function TI(t){return t}function HI(t){return t}function qI(t){return t}function KI(t){return t}function zI(t){return t}function Zi(t,A,e="min"){if(t===A)return t;if(A==="float"){if(jt(t))return t}else if(A==="int"){if(lA(t))return t}else if(A==="uint"&&uA(t))return t;throw new Error(`Invalid ${e} types: ${t}, ${A}`)}function _I(t,A){return Zi(t,A,"max")}function OI(t,A,e){if(A==="float"){if(jt(t))return t}else if(A==="int"){if(lA(t))return t}else if(A==="uint"&&uA(t))return t;throw new Error(`Invalid clamp types: ${t}, ${A}`)}function PI(t,A,e){if(e===t||e==="float"||e==="bool"&&t==="float"||e==="bvec2"&&t==="vec2"||e==="bvec3"&&t==="vec3"||e==="bvec4"&&t==="vec4")return t;throw new Error(`Invalid mix types: ${t}, ${A}, ${e}`)}function VI(t,A){if(t===A||A==="float")return A;throw new Error(`Invalid step types: ${t}, ${A}`)}function ZI(t,A,e){if(t===A&&(t===e||t==="float"))return e;throw new Error(`Invalid smoothstep types: ${t}, ${A}, ${e}`)}function Xi(t,A="isNan"){if(t==="float")return"bool";if(t==="vec2")return"bvec2";if(t==="vec3")return"bvec3";if(t==="vec4")return"bvec4";throw new Error(`Invalid ${A} types: ${t}`)}function XI(t){return Xi(t,"isInf")}const mA=(t,A)=>new An({a:t,b:A}),Nt=(t,A)=>new tn({a:t,b:A}),CA=(t,A)=>new en({a:t,b:A}),oe=(t,A)=>new sn({a:t,b:A}),Je=(t,A)=>new nn({a:t,b:A}),Wi=(t,A)=>new an({a:t,b:A}),WI=t=>new rn({a:t}).outputs,$e=t=>new gn({a:t}),jI=t=>new on({a:t}),$I=t=>new In({a:t}),AQ=t=>new Qn({a:t}),tQ=t=>new Bn({a:t}),eQ=t=>new Cn({a:t}),sQ=t=>new En({a:t}),Ie=t=>new cn({a:t}),iQ=(t,A)=>new hn({a:t,b:A}),nQ=t=>new ln({a:t}),aQ=t=>new un({a:t}),rQ=t=>new dn({a:t}),gQ=t=>new pn({a:t}),oQ=t=>new yn({a:t}),IQ=t=>new wn({a:t}),QQ=t=>new Dn({a:t}),BQ=(t,A)=>new fn({a:t,b:A}),ji=(t,A)=>new mn({a:t,b:A}),CQ=(t,A,e)=>new xn({a:t,min:A,max:e}),$i=(t,A,e)=>new Sn({a:t,b:A,t:e}),EQ=(t,A)=>new Mn({edge:t,x:A}),cQ=(t,A,e)=>new Fn({edge0:t,edge1:A,x:e}),hQ=t=>new Nn({a:t}),lQ=t=>new kn({a:t});class An extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"sum",outTypeFunc:je}),this.statements=({inputs:s,outputs:i})=>[`${i.sum} = ${s.a} + ${s.b};`]}}class tn extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"difference",outTypeFunc:fI}),this.statements=({inputs:s,outputs:i})=>[`${i.difference} = ${s.a} - ${s.b};`]}}class en extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"product",outTypeFunc:mI}),this.statements=({inputs:s,outputs:i})=>[`${i.product} = ${s.a} * ${s.b};`]}}class sn extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"quotient",outTypeFunc:xI}),this.statements=({inputs:s,outputs:i})=>[`${i.quotient} = ${s.a} / ${s.b};`]}}class nn extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"remainder",outTypeFunc:SI}),this.statements=({inputs:s,outputs:i})=>[`${i.remainder} = ${s.a} % ${s.b};`]}}class an extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"remainder",outTypeFunc:MI}),this.statements=({inputs:s,outputs:i})=>[`${i.remainder} = mod(${s.a}, ${s.b});`]}}class rn extends O{constructor({a:A}){const e={a:_(A)},s=e.a,i={fract:s,integer:s};super({inTypes:e,outTypes:i,inputs:{a:A}}),this.statements=({inputs:n,outputs:a})=>[`${a.fract} = modf(${n.a}, ${a.integer});`]}}class gn extends F{constructor({a:A}){super({a:A,outKey:"neg",outTypeFunc:FI}),this.statements=({inputs:e,outputs:s})=>[`${s.neg} = -${e.a};`]}}class on extends F{constructor({a:A}){super({a:A,outKey:"abs",outTypeFunc:NI}),this.statements=({inputs:e,outputs:s})=>[`${s.abs} = abs(${e.a});`]}}class In extends F{constructor({a:A}){super({a:A,outKey:"sign",outTypeFunc:kI}),this.statements=({inputs:e,outputs:s})=>[`${s.sign} = sign(${e.a});`]}}class Qn extends F{constructor({a:A}){super({a:A,outKey:"floor",outTypeFunc:GI}),this.statements=({inputs:e,outputs:s})=>[`${s.floor} = floor(${e.a});`]}}class Bn extends F{constructor({a:A}){super({a:A,outKey:"ceil",outTypeFunc:RI}),this.statements=({inputs:e,outputs:s})=>[`${s.ceil} = ceil(${e.a});`]}}class Cn extends F{constructor({a:A}){super({a:A,outKey:"trunc",outTypeFunc:UI}),this.statements=({inputs:e,outputs:s})=>[`${s.trunc} = trunc(${e.a});`]}}class En extends F{constructor({a:A}){super({a:A,outKey:"round",outTypeFunc:LI}),this.statements=({inputs:e,outputs:s})=>[`${s.round} = round(${e.a});`]}}class cn extends F{constructor({a:A}){super({a:A,outKey:"fract",outTypeFunc:bI}),this.statements=({inputs:e,outputs:s})=>[`${s.fract} = fract(${e.a});`]}}class hn extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"power",outTypeFunc:vI}),this.statements=({inputs:s,outputs:i})=>[`${i.power} = pow(${s.a}, ${s.b});`]}}class ln extends F{constructor({a:A}){super({a:A,outKey:"exp",outTypeFunc:YI}),this.statements=({inputs:e,outputs:s})=>[`${s.exp} = exp(${e.a});`]}}class un extends F{constructor({a:A}){super({a:A,outKey:"exp2",outTypeFunc:JI}),this.statements=({inputs:e,outputs:s})=>[`${s.exp2} = exp2(${e.a});`]}}class dn extends F{constructor({a:A}){super({a:A,outKey:"log",outTypeFunc:TI}),this.statements=({inputs:e,outputs:s})=>[`${s.log} = log(${e.a});`]}}class pn extends F{constructor({a:A}){super({a:A,outKey:"log2",outTypeFunc:HI}),this.statements=({inputs:e,outputs:s})=>[`${s.log2} = log2(${e.a});`]}}class yn extends F{constructor({a:A}){super({a:A,outKey:"sqr",outTypeFunc:qI}),this.statements=({inputs:e,outputs:s})=>[`${s.sqr} = ${e.a} * ${e.a};`]}}class wn extends F{constructor({a:A}){super({a:A,outKey:"sqrt",outTypeFunc:KI}),this.statements=({inputs:e,outputs:s})=>[`${s.sqrt} = sqrt(${e.a});`]}}class Dn extends F{constructor({a:A}){super({a:A,outKey:"inversesqrt",outTypeFunc:zI}),this.statements=({inputs:e,outputs:s})=>[`${s.inversesqrt} = inversesqrt(${e.a});`]}}class fn extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"min",outTypeFunc:Zi}),this.statements=({inputs:s,outputs:i})=>[`${i.min} = min(${s.a}, ${s.b});`]}}class mn extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"max",outTypeFunc:_I}),this.statements=({inputs:s,outputs:i})=>[`${i.max} = max(${s.a}, ${s.b});`]}}class xn extends dt{constructor({a:A,min:e,max:s}){super({a:A,b:e,c:s,outKey:"clamp",outTypeFunc:OI}),this.statements=({inputs:i,outputs:n})=>{const{a,b:r,c:g}=i;return[`${n.clamp} = clamp(${a}, ${r}, ${g});`]}}}class Sn extends dt{constructor({a:A,b:e,t:s}){super({a:A,b:e,c:s,outKey:"mix",outTypeFunc:PI}),this.statements=({inputs:i,outputs:n})=>{const{a,b:r,c:g}=i;return[`${n.mix} = mix(${a}, ${r}, ${g});`]}}}class Mn extends ${constructor({edge:A,x:e}){super({a:A,b:e,outKey:"step",outTypeFunc:VI}),this.statements=({inputs:s,outputs:i})=>{const{a:n,b:a}=s;return[`${i.step} = step(${n}, ${a});`]}}}class Fn extends dt{constructor({edge0:A,edge1:e,x:s}){super({a:A,b:e,c:s,outKey:"smoothstep",outTypeFunc:ZI}),this.statements=({inputs:i,outputs:n})=>{const{a,b:r,c:g}=i;return[`${n.smoothstep} = smoothstep(${a}, ${r}, ${g});`]}}}class Nn extends F{constructor({a:A}){super({a:A,outKey:"isNan",outTypeFunc:Xi}),this.statements=({inputs:e,outputs:s})=>[`${s.isNan} = isNan(${e.a});`]}}class kn extends F{constructor({a:A}){super({a:A,outKey:"isInf",outTypeFunc:XI}),this.statements=({inputs:e,outputs:s})=>[`${s.isInf} = isInf(${e.a});`]}}const uQ=(t,A)=>new Rn({a:t,b:A}),dQ=(t,A)=>new Un({a:t,b:A}),pQ=(t,A)=>new Ln({a:t,b:A}),yQ=t=>new bn({a:t}),wQ=(t,A)=>new vn({a:t,b:A}),DQ=(t,A)=>new Yn({a:t,b:A}),fQ=(t,A)=>new Jn({a:t,b:A}),Gn=(t,A)=>new Tn({a:t,b:A}),mQ=(t,A)=>new Hn({a:t,b:A}),xQ=(t,A)=>new qn({a:t,b:A}),SQ=t=>new Kn({a:t}),MQ=t=>new zn({a:t}),As=(t,A,e)=>new _n({cond:t,t:A,f:e}),FQ=t=>new Pn({a:t});class Rn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>s,outKey:"and"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.and==="bool"?[`${i.and} = ${s.a} && ${s.b};`]:[`${i.and} = ${s.a} & ${s.b};`]}}class Un extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>s,outKey:"or"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.or==="bool"?[`${i.or} = ${s.a} || ${s.b};`]:[`${i.or} = ${s.a} | ${s.b};`]}}class Ln extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>s,outKey:"xor"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.xor==="bool"?[`${i.xor} = ${s.a} ^^ ${s.b};`]:[`${i.xor} = ${s.a} ^ ${s.b};`]}}class bn extends F{constructor({a:A}){super({a:A,outTypeFunc:e=>e,outKey:"not"}),this.statements=({inputs:e,outputs:s})=>this.outTypes.not==="bool"?[`${s.not} = !${e.a};`]:[`${s.not} = not(${e.a});`]}}class vn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>De(s,"lessThan"),outKey:"lessThan"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.lessThan==="bool"?[`${i.lessThan} = ${s.a} < ${s.b};`]:[`${i.lessThan} = lessThan(${s.a}, ${s.b});`]}}class Yn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>De(s,"lessThanEqual"),outKey:"lessThanEqual"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.lessThanEqual==="bool"?[`${i.lessThanEqual} = ${s.a} <= ${s.b};`]:[`${i.lessThanEqual} = lessThanEqual(${s.a}, ${s.b});`]}}class Jn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>De(s,"greaterThan"),outKey:"greaterThan"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.greaterThan==="bool"?[`${i.greaterThan} = ${s.a} > ${s.b};`]:[`${i.greaterThan} = greaterThan(${s.a}, ${s.b});`]}}class Tn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:(s,i)=>De(s,"greaterThanEqual"),outKey:"greaterThanEqual"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.greaterThanEqual==="bool"?[`${i.greaterThanEqual} = ${s.a} >= ${s.b};`]:[`${i.greaterThanEqual} = greaterThanEqual(${s.a}, ${s.b});`]}}class Hn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:On,outKey:"equal"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.equal==="bool"?[`${i.equal} = ${s.a} == ${s.b};`]:[`${i.equal} = equal(${s.a}, ${s.b});`]}}class qn extends ${constructor({a:A,b:e}){super({a:A,b:e,outTypeFunc:NQ,outKey:"notEqual"}),this.statements=({inputs:s,outputs:i})=>this.outTypes.notEqual==="bool"?[`${i.notEqual} = ${s.a} != ${s.b};`]:[`${i.notEqual} = notEqual(${s.a}, ${s.b});`]}}class Kn extends F{constructor({a:A}){super({a:A,outTypeFunc:e=>"bool",outKey:"any"}),this.statements=({inputs:e,outputs:s})=>[`${s.any} = any(${e.a});`]}}class zn extends F{constructor({a:A}){super({a:A,outTypeFunc:e=>"bool",outKey:"all"}),this.statements=({inputs:e,outputs:s})=>[`${s.all} = all(${e.a});`]}}class _n extends dt{constructor({cond:A,t:e,f:s}){super({a:A,b:e,c:s,outKey:"select",outTypeFunc:(i,n,a)=>n}),this.statements=({inputs:i,outputs:n})=>{const{a,b:r,c:g}=i;return[`${n.select} = (${a}) ? (${r}) : (${g});`]}}}function De(t,A){if(ut(t))return"bool";if(t==="ivec2"||t==="uvec2"||t==="vec2")return"bvec2";if(t==="ivec3"||t==="uvec3"||t==="vec3")return"bvec3";if(t==="ivec4"||t==="uvec4"||t==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${t}`)}function On(t,A="equal"){if(ut(t))return"bool";if(lt(t))return t;if(t==="ivec2"||t==="uvec2"||t==="vec2")return"bvec2";if(t==="ivec3"||t==="uvec3"||t==="vec3")return"bvec3";if(t==="ivec4"||t==="uvec4"||t==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${t}`)}function NQ(t){return On(t,"notEqual")}function kQ(t){if(lt(t))return"bool";if(lA(t))return"int";if(uA(t))return"uint";throw new Error(`Invalid compXor type: ${t}`)}class Pn extends F{constructor({a:A}){const e=kQ(_(A));super({a:A,outTypeFunc:s=>e,outKey:"compXor"}),this.statements=({inputs:s,outputs:i})=>{if(ut(this.outTypes.compXor))return[`${i.compXor} = ${s.a};`];const a=(Gt(e)?["x","y"]:Rt(e)?["x","y","z"]:["x","y","z","w"]).map(g=>`${s.a}.${g}`),r=lt(e)?"^^":"^";return[`${i.compXor} = ${a.join(` ${r} `)};`]}}}const GQ=t=>new Aa({value:t}),RQ=t=>new ta({value:t}),UQ=t=>new ea({value:t}),Vn=t=>new sa({value:t}),LQ=t=>new ia({value:t}),bQ=t=>new na({value:t}),vQ=t=>new aa({value:t}),YQ=t=>new ra({value:t}),JQ=t=>new ga({value:t}),TQ=t=>new oa({value:t}),HQ=t=>new Ia({value:t}),qQ=t=>new Qa({value:t}),KQ=t=>new Ba({value:t}),Zn=t=>new Ca({value:t}),ht=t=>new Ea({value:t}),Xn=t=>new ca({value:t}),zQ=t=>new ha({value:t}),_Q=t=>new la({value:t}),OQ=t=>new ua({value:t}),Wn=t=>new da({value:t}),PQ=t=>new pa({value:t}),VQ=t=>new ya({value:t}),ZQ=t=>new wa({value:t}),XQ=t=>new Da({value:t}),WQ=t=>new fa({value:t}),jQ=t=>new ma({value:t}),$Q=t=>new xa({value:t}),jn=t=>new Sa({value:t}),AB=t=>new Ma({value:t}),$n=t=>new Fa({value:t});class oA extends F{constructor({value:A,outType:e,outKey:s}){super({a:A,outTypeFunc:()=>e,outKey:s}),this.statements=({inputs:i,outputs:n})=>[`${n[s]} = ${Rs(e)}(${i.a});`]}}class Aa extends oA{constructor({value:A}){super({value:A,outType:"bool",outKey:"bool"})}}class ta extends oA{constructor({value:A}){super({value:A,outType:"int",outKey:"int"})}}class ea extends oA{constructor({value:A}){super({value:A,outType:"uint",outKey:"uint"})}}class sa extends oA{constructor({value:A}){super({value:A,outType:"float",outKey:"float"})}}class ia extends oA{constructor({value:A}){super({value:A,outType:"bvec2",outKey:"bvec2"})}}class na extends oA{constructor({value:A}){super({value:A,outType:"bvec3",outKey:"bvec3"})}}class aa extends oA{constructor({value:A}){super({value:A,outType:"bvec4",outKey:"bvec4"})}}class ra extends oA{constructor({value:A}){super({value:A,outType:"ivec2",outKey:"ivec2"})}}class ga extends oA{constructor({value:A}){super({value:A,outType:"ivec3",outKey:"ivec3"})}}class oa extends oA{constructor({value:A}){super({value:A,outType:"ivec4",outKey:"ivec4"})}}class Ia extends oA{constructor({value:A}){super({value:A,outType:"uvec2",outKey:"uvec2"})}}class Qa extends oA{constructor({value:A}){super({value:A,outType:"uvec3",outKey:"uvec3"})}}class Ba extends oA{constructor({value:A}){super({value:A,outType:"uvec4",outKey:"uvec4"})}}class Ca extends oA{constructor({value:A}){super({value:A,outType:"vec2",outKey:"vec2"})}}class Ea extends oA{constructor({value:A}){super({value:A,outType:"vec3",outKey:"vec3"})}}class ca extends oA{constructor({value:A}){super({value:A,outType:"vec4",outKey:"vec4"})}}class ha extends oA{constructor({value:A}){super({value:A,outType:"mat2",outKey:"mat2"})}}class la extends oA{constructor({value:A}){super({value:A,outType:"mat3",outKey:"mat3"})}}class ua extends oA{constructor({value:A}){super({value:A,outType:"mat4",outKey:"mat4"})}}class da extends F{constructor({value:A}){super({a:A,outKey:"int",outTypeFunc:()=>"int"}),this.statements=({inputs:e,outputs:s})=>[`${s.int} = floatBitsToInt(${e.a});`]}}class pa extends F{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:e,outputs:s})=>[`${s.uint} = floatBitsToUint(${e.a});`]}}class ya extends F{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:e,outputs:s})=>[`${s.float} = intBitsToFloat(${e.a});`]}}class wa extends F{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:e,outputs:s})=>[`${s.float} = uintBitsToFloat(${e.a});`]}}class Da extends F{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:e,outputs:s})=>[`${s.uint} = packSnorm2x16(${e.a});`]}}class fa extends F{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:e,outputs:s})=>[`${s.vec2} = unpackSnorm2x16(${e.a});`]}}class ma extends F{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:e,outputs:s})=>[`${s.uint} = packUnorm2x16(${e.a});`]}}class xa extends F{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:e,outputs:s})=>[`${s.vec2} = unpackUnorm2x16(${e.a});`]}}class Sa extends F{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:e,outputs:s})=>[`${s.uint} = packHalf2x16(${e.a});`]}}class Ma extends F{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:e,outputs:s})=>[`${s.vec2} = unpackHalf2x16(${e.a});`]}}class Fa extends F{constructor({value:A}){super({a:A,outKey:"rgba8",outTypeFunc:()=>"vec4"}),this.statements=({inputs:e,outputs:s})=>[`uvec4 uRgba = uvec4(${e.a} & 0xffu, (${e.a} >> 8u) & 0xffu, (${e.a} >> 16u) & 0xffu, (${e.a} >> 24u) & 0xffu);`,`${s.rgba8} = vec4(uRgba) / 255.0;`]}}const tB=t=>new Ra({a:t}),eB=(t,A)=>new Ua({a:t,b:A}),Na=(t,A)=>new La({a:t,b:A}),sB=(t,A)=>new ba({a:t,b:A}),ka=t=>new va({a:t}),iB=(t,A,e)=>new Ta({a:t,b:A,c:e}),nB=(t,A)=>new Ha({incident:t,normal:A}),aB=(t,A,e)=>new qa({incident:t,normal:A,eta:e}),Mt=t=>new Va({vector:t}),KA=({vector:t,vectorType:A,x:e,y:s,z:i,w:n,r:a,g:r,b:g,a:I})=>new Za({vector:t,vectorType:A,x:e,y:s,z:i,w:n,r:a,g:r,b:g,a:I}),rB=t=>new Ya({a:t}),Ga=(t,A)=>new Ja({a:t,b:A}),gB=(t,A)=>new Xa({vector:t,select:A}),oB=(t,A)=>new Ka({a:t,b:A}),IB=(t,A)=>new za({a:t,b:A}),QB=t=>new _a({a:t}),BB=t=>new Oa({a:t}),CB=t=>new Pa({a:t});class Ra extends F{constructor({a:A}){super({a:A,outTypeFunc:e=>"float",outKey:"length"}),this.statements=({inputs:e,outputs:s})=>[`${s.length} = length(${e.a});`]}}class Ua extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"distance",outTypeFunc:(s,i)=>"float"}),this.statements=({inputs:s,outputs:i})=>[`${i.distance} = distance(${s.a}, ${s.b});`]}}class La extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"dot",outTypeFunc:(s,i)=>"float"}),this.statements=({inputs:s,outputs:i})=>[`${i.dot} = dot(${s.a}, ${s.b});`]}}class ba extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"cross",outTypeFunc:(s,i)=>"vec3"}),this.statements=({inputs:s,outputs:i})=>[`${i.cross} = cross(${s.a}, ${s.b});`]}}class va extends F{constructor({a:A}){super({a:A,outTypeFunc:e=>e,outKey:"normalize"}),this.statements=({inputs:e,outputs:s})=>[`${s.normalize} = normalize(${e.a});`]}}function EB(t){if(t==="vec3")return"vec2";if(t==="vec4")return"vec3";throw new Error("Invalid type")}class Ya extends F{constructor({a:A}){super({a:A,outTypeFunc:e=>EB(e),outKey:"projected"}),this.statements=({inputs:e,outputs:s})=>{if(this.inTypes.a==="vec3")return[`${s.projected} = ${e.a}.xy / ${e.a}.z;`];if(this.inTypes.a==="vec4")return[`${s.projected} = ${e.a}.xyz / ${e.a}.w;`];throw new Error("Invalid type")}}}function cB(t){if(t==="float")return"vec2";if(t==="vec2")return"vec3";if(t==="vec3")return"vec4";throw new Error("Invalid type")}class Ja extends ${constructor({a:A,b:e}){const s=_(A),i=cB(s);super({a:A,b:e,outKey:"extend",outTypeFunc:()=>i}),this.statements=({inputs:n,outputs:a})=>[`${a.extend} = ${i}(${n.a}, ${n.b});`]}}class Ta extends dt{constructor({a:A,b:e,c:s}){super({a:A,b:e,c:s,outKey:"forward",outTypeFunc:(i,n,a)=>i}),this.statements=({inputs:i,outputs:n})=>[`${n.forward} = faceforward(${i.a}, ${i.b}, ${i.c});`]}}class Ha extends ${constructor({incident:A,normal:e}){super({a:A,b:e,outKey:"reflection",outTypeFunc:(s,i)=>s}),this.statements=({inputs:s,outputs:i})=>[`${i.reflection} = reflect(${s.a}, ${s.b});`]}}class qa extends dt{constructor({incident:A,normal:e,eta:s}){super({a:A,b:e,c:s,outKey:"refraction",outTypeFunc:(i,n,a)=>i}),this.statements=({inputs:i,outputs:n})=>[`${n.refraction} = refract(${i.a}, ${i.b}, ${i.c});`]}}class Ka extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"product",outTypeFunc:(s,i)=>s}),this.statements=({inputs:s,outputs:i})=>[`${i.product} = matrixCompMult(${A}, ${e});`]}}function hB(t,A){if(t==="vec2"){if(A==="vec2")return"mat2";if(A==="vec3")return"mat3x2";if(A==="vec4")return"mat4x2"}if(t==="vec3"){if(A==="vec2")return"mat2x3";if(A==="vec3")return"mat3";if(A==="vec4")return"mat4x3"}if(t==="vec4"){if(A==="vec2")return"mat2x4";if(A==="vec3")return"mat3x4";if(A==="vec4")return"mat4"}throw new Error(`Invalid outer type: ${t}, ${A}`)}class za extends ${constructor({a:A,b:e}){super({a:A,b:e,outKey:"outer",outTypeFunc:hB}),this.statements=({inputs:s,outputs:i})=>[`${i.outer} = outerProduct(${s.a}, ${s.b});`]}}function lB(t){if(t==="mat2")return"mat2";if(t==="mat3")return"mat3";if(t==="mat4")return"mat4";if(t==="mat2x2")return"mat2x2";if(t==="mat2x3")return"mat3x2";if(t==="mat2x4")return"mat4x2";if(t==="mat3x2")return"mat2x3";if(t==="mat3x3")return"mat3x3";if(t==="mat3x4")return"mat4x3";if(t==="mat4x2")return"mat2x4";if(t==="mat4x3")return"mat3x4";if(t==="mat4x4")return"mat4x4";throw new Error(`Invalid transpose type: ${t}`)}class _a extends F{constructor({a:A}){super({a:A,outKey:"transpose",outTypeFunc:lB}),this.statements=({inputs:e,outputs:s})=>[`${s.transpose} = transpose(${e.a});`]}}class Oa extends F{constructor({a:A}){super({a:A,outKey:"det",outTypeFunc:e=>"float"}),this.statements=({inputs:e,outputs:s})=>[`${s.det} = determinant(${e.a});`]}}class Pa extends F{constructor({a:A}){super({a:A,outKey:"inverse",outTypeFunc:e=>e}),this.statements=({inputs:e,outputs:s})=>[`${s.inverse} = inverse(${A});`]}}function uB(t){const A=e=>e;switch(t){case"vec2":return A({x:"float",y:"float",r:"float",g:"float"});case"vec3":return A({x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"});case"vec4":return A({x:"float",y:"float",z:"float",w:"float",r:"float",g:"float",b:"float",a:"float"});case"ivec2":return A({x:"int",y:"int",r:"int",g:"int"});case"ivec3":return A({x:"int",y:"int",z:"int",r:"int",g:"int",b:"int"});case"ivec4":return A({x:"int",y:"int",z:"int",w:"int",r:"int",g:"int",b:"int",a:"int"});case"uvec2":return A({x:"uint",y:"uint",r:"uint",g:"uint"});case"uvec3":return A({x:"uint",y:"uint",z:"uint",r:"uint",g:"uint",b:"uint"});case"uvec4":return A({x:"uint",y:"uint",z:"uint",w:"uint",r:"uint",g:"uint",b:"uint",a:"uint"});default:throw new Error(`Invalid vector type: ${t}`)}}class Va extends O{constructor({vector:A}){const s={vector:_(A)},i=uB(s.vector);super({inTypes:s,outTypes:i,inputs:{vector:A}}),this.statements=({inputs:n,outputs:a})=>{const{x:r,y:g,z:I,w:Q,r:o,g:C,b:E,a:l}=a,{vector:c}=n;return[r?`${r} = ${c}.x;`:null,g?`${g} = ${c}.y;`:null,I?`${I} = ${c}.z;`:null,Q?`${Q} = ${c}.w;`:null,o?`${o} = ${c}.r;`:null,C?`${C} = ${c}.g;`:null,E?`${E} = ${c}.b;`:null,l?`${l} = ${c}.a;`:null].filter(Boolean)}}}class Za extends O{constructor({vector:A,vectorType:e,x:s,y:i,z:n,w:a,r,g,b:I,a:Q}){if(!A&&!e)throw new Error("Either vector or vectorType must be provided");const o=e??_(A),C=Ns(o),E=ks(o),l={vector:o,x:C,y:C,r:C,g:C},c={vector:A,x:s,y:i,r,g};E>=3&&(Object.assign(l,{z:C,b:C}),Object.assign(c,{z:n,b:I})),E>=4&&(Object.assign(l,{w:C,a:C}),Object.assign(c,{w:a,a:Q})),super({inTypes:l,outTypes:{vector:o},inputs:c}),this.statements=({inputs:h,outputs:u})=>{const{vector:p}=u,{vector:d,x:y,y:D,z:S,w:m,r:f,g:w,b:R,a:M}=h,x=[`${p}.x = ${y??f??(d?`${d}.x`:Yt(C))};`,`${p}.y = ${D??w??(d?`${d}.y`:Yt(C))};`];return E>=3&&x.push(`${p}.z = ${S??R??(d?`${d}.z`:Yt(C))};`),E>=4&&x.push(`${p}.w = ${m??M??(d?`${d}.w`:Yt(C))};`),x}}dynoOut(){return new K(this,"vector")}}function dB(t,A){let e=null;if(jt(t)?e=A.length===1?"float":A.length===2?"vec2":A.length===3?"vec3":A.length===4?"vec4":null:lA(t)?e=A.length===1?"int":A.length===2?"ivec2":A.length===3?"ivec3":A.length===4?"ivec4":null:uA(t)&&(e=A.length===1?"uint":A.length===2?"uvec2":A.length===3?"uvec3":A.length===4?"uvec4":null),e==null)throw new Error(`Invalid swizzle: ${A}`);return e}class Xa extends F{constructor({vector:A,select:e}){super({a:A,outKey:"swizzle",outTypeFunc:s=>dB(s,e)}),this.statements=({inputs:s,outputs:i})=>[`${i.swizzle} = ${s.a}.${e};`]}}const pB=(t,A,e)=>new sr({index:t,from:A,to:e}),yB=t=>new Ut({value:t}),wB=t=>new RA({state:t}),DB=t=>new UA({state:t}),Wa=t=>new ir({value:t}),ja=t=>new nr({value:t}),$a=t=>new ar({value:t}),Ar=t=>new rr({value:t}),fB=t=>new gr({value:t}),mB=t=>new or({value:t}),tr=t=>new Ir({value:t}),Te=t=>new Qr({value:t}),er=(t,A,e)=>new Br({z:t,zNear:A,zFar:e}).outputs.depth;class sr extends O{constructor({from:A,to:e,index:s}){super({inTypes:{from:"int",to:"int",index:"int"},outTypes:{index:"int"},inputs:{from:A,to:e,index:s},statements:({inputs:i,outputs:n})=>[`${n.index} = ${i.index} - ${i.from} + ${i.to};`]})}dynoOut(){return new K(this,"index")}}class RA extends O{constructor({state:A}){const e=_(A);super({inTypes:{state:e},outTypes:{state:"uint"},inputs:{state:A},globals:()=>[cA(`
78
78
  uint pcg_next(uint state) {
79
79
  return state * 747796405u + 2891336453u;
80
80
  }
81
- `)],statements:({inputs:g,outputs:B})=>{const i=I==="uint"?`${g.state}`:I==="int"?`uint(${g.state})`:`floatBitsToUint(${g.state})`;return[`${B.state} = pcg_next(${i});`]}})}dynoOut(){return new v(this,"state")}}class UA extends W{constructor({state:A}){super({inTypes:{state:"uint"},outTypes:{hash:"uint"},inputs:{state:A},globals:()=>[rA(`
81
+ `)],statements:({inputs:s,outputs:i})=>{const n=e==="uint"?`${s.state}`:e==="int"?`uint(${s.state})`:`floatBitsToUint(${s.state})`;return[`${i.state} = pcg_next(${n});`]}})}dynoOut(){return new K(this,"state")}}class UA extends O{constructor({state:A}){super({inTypes:{state:"uint"},outTypes:{hash:"uint"},inputs:{state:A},globals:()=>[cA(`
82
82
  uint pcg_hash(uint state) {
83
83
  uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;
84
84
  return (hash >> 22u) ^ hash;
85
85
  }
86
- `)],statements:({inputs:I,outputs:g})=>[`${g.hash} = pcg_hash(${I.state});`]})}dynoOut(){return new v(this,"hash")}}class mt extends W{constructor({value:A}){const I=z(A),g=hg(I);super({inTypes:{value:I},outTypes:{state:"uint"},inputs:{value:A},globals:()=>[rA(`
86
+ `)],statements:({inputs:e,outputs:s})=>[`${s.hash} = pcg_hash(${e.state});`]})}dynoOut(){return new K(this,"hash")}}class Ut extends O{constructor({value:A}){const e=_(A),s=Gs(e);super({inTypes:{value:e},outTypes:{state:"uint"},inputs:{value:A},globals:()=>[cA(`
87
87
  uint pcg_mix(uint value) {
88
88
  return value;
89
89
  }
@@ -96,7 +96,7 @@
96
96
  uint pcg_mix(uvec4 value) {
97
97
  return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;
98
98
  }
99
- `)],statements:({inputs:B,outputs:i})=>{const e=uA(I)?`${B.value}`:lA(I)?`${g}(${B.value})`:`floatBitsToUint(${B.value})`;return[`${g} bits = ${e};`,`${i.state} = pcg_mix(bits);`]}})}dynoOut(){return new v(this,"state")}}class Pe extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"uint"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new mt({value:I}).outputs.state;return g=new xA({state:g}).outputs.state,new UA({state:g}).outputs}})}dynoOut(){return new v(this,"hash")}}class Xe extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"uvec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new mt({value:I}).outputs.state;g=new xA({state:g}).outputs.state;const B=new UA({state:g}).outputs.hash;g=new xA({state:g}).outputs.state;const i=new UA({state:g}).outputs.hash;return{hash:KA({vectorType:"uvec2",x:B,y:i})}}})}dynoOut(){return new v(this,"hash")}}class je extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"uvec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new mt({value:I}).outputs.state;g=new xA({state:g}).outputs.state;const B=new UA({state:g}).outputs.hash;g=new xA({state:g}).outputs.state;const i=new UA({state:g}).outputs.hash;g=new xA({state:g}).outputs.state;const e=new UA({state:g}).outputs.hash;return{hash:KA({vectorType:"uvec3",x:B,y:i,z:e})}}})}dynoOut(){return new v(this,"hash")}}class _e extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"uvec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new mt({value:I}).outputs.state;g=new xA({state:g}).outputs.state;const B=new UA({state:g}).outputs.hash;g=new xA({state:g}).outputs.state;const i=new UA({state:g}).outputs.hash;g=new xA({state:g}).outputs.state;const e=new UA({state:g}).outputs.hash;g=new xA({state:g}).outputs.state;const Q=new UA({state:g}).outputs.hash;return{hash:KA({vectorType:"uvec4",x:B,y:i,z:e,w:Q})}}})}dynoOut(){return new v(this,"hash")}}class $e extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"float"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=qe(I);return{hash:oA(bi(g),q("float",1/2**32))}}})}dynoOut(){return new v(this,"hash")}}class AQ extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"vec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=ve(I);return{hash:oA(Ti(g),q("float",1/2**32))}}})}dynoOut(){return new v(this,"hash")}}class tQ extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"vec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=Ze(I);return{hash:oA(ot(g),q("float",1/2**32))}}})}dynoOut(){return new v(this,"hash")}}class IQ extends vA{constructor({value:A}){super({inTypes:{value:z(A)},outTypes:{hash:"vec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=ze(I);return{hash:oA(Ki(g),q("float",1/2**32))}}})}dynoOut(){return new v(this,"hash")}}class gQ extends W{constructor({z:A,zNear:I,zFar:g}){super({inTypes:{z:"float",zNear:"float",zFar:"float"},outTypes:{depth:"float"},inputs:{z:A,zNear:I,zFar:g},statements:({inputs:B,outputs:i})=>[`float clamped = clamp(${B.z}, ${B.zNear}, ${B.zFar});`,`${i.depth} = (log2(clamped + 1.0) - log2(${B.zNear} + 1.0)) / (log2(${B.zFar} + 1.0) - log2(${B.zNear} + 1.0));`]})}dynoOut(){return new v(this,"depth")}}const BQ=(t,{scale:A,scales:I,rotate:g,translate:B})=>new eQ({position:t,scale:A,scales:I,rotate:g,translate:B}).outputs.position,iQ=(t,{scale:A,scales:I,rotate:g})=>new QQ({dir:t,scale:A,scales:I,rotate:g}).outputs.dir,nn=(t,{rotate:A})=>new sQ({quaternion:t,rotate:A}).outputs.quaternion;class eQ extends W{constructor({position:A,scale:I,scales:g,rotate:B,translate:i}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:I,scales:g,rotate:B,translate:i},statements:({inputs:e,outputs:Q})=>{const{position:s}=Q;if(!s)return[];const{scale:E,scales:a,rotate:C,translate:o}=e;return[`${s} = ${e.position??"vec3(0.0, 0.0, 0.0)"};`,E?`${s} *= ${E};`:null,a?`${s} *= ${a};`:null,C?`${s} = quatVec(${C}, ${s});`:null,o?`${s} += ${o};`:null].filter(Boolean)}})}}class QQ extends W{constructor({dir:A,scale:I,scales:g,rotate:B}){super({inTypes:{dir:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{dir:"vec3"},inputs:{dir:A,scale:I,scales:g,rotate:B},statements:({inputs:i,outputs:e})=>{const{dir:Q}=e;if(!Q)return[];const{scale:s,scales:E,rotate:a}=i;return[`${Q} = ${i.dir??"vec3(0.0, 0.0, 0.0)"};`,s?`${Q} *= ${s};`:null,E?`${Q} *= ${E};`:null,a?`${Q} = quatVec(${a}, ${Q});`:null].filter(Boolean)}})}}class sQ extends W{constructor({quaternion:A,rotate:I}){super({inTypes:{quaternion:"vec4",rotate:"vec4"},outTypes:{quaternion:"vec4"},inputs:{quaternion:A,rotate:I},statements:({inputs:g,outputs:B})=>{const{quaternion:i}=B;return i?[`${i} = ${g.quaternion??"vec4(0.0, 0.0, 0.0, 1.0)"};`,I?`${i} = quatQuat(${g.rotate}, ${i});`:null].filter(Boolean):[]}})}}const on=()=>{throw new Error("Not implemented")},rn=()=>{throw new Error("Not implemented")},cn=()=>{throw new Error("Not implemented")},hn=()=>{throw new Error("Not implemented")},ln=()=>{throw new Error("Not implemented")},un=()=>{throw new Error("Not implemented")},Dn=(t,A)=>new CQ({texture:t,lod:A}),yn=(t,A,I)=>new EQ({texture:t,coord:A,bias:I}),wn=(t,A,I)=>new aQ({texture:t,coord:A,lod:I});class CQ extends W{constructor({texture:A,lod:I}){const g=z(A);super({inTypes:{texture:g,lod:"int"},outTypes:{size:nQ(g)},inputs:{texture:A,lod:I},statements:({inputs:B,outputs:i})=>[`${i.size} = textureSize(${B.texture}, ${B.lod??"0"});`]})}dynoOut(){return new v(this,"size")}}class EQ extends W{constructor({texture:A,coord:I,bias:g}){const B=z(A);super({inTypes:{texture:B,coord:dn(B),bias:"float"},outTypes:{sample:oQ(B)},inputs:{texture:A,coord:I,bias:g},statements:({inputs:i,outputs:e})=>[`${e.sample} = texture(${i.texture}, ${i.coord}${i.bias?`, ${i.bias}`:""});`]})}dynoOut(){return new v(this,"sample")}}class aQ extends W{constructor({texture:A,coord:I,lod:g}){const B=z(A);super({inTypes:{texture:B,coord:nQ(B),lod:"int"},outTypes:{texel:oQ(B)},inputs:{texture:A,coord:I,lod:g},statements:({inputs:i,outputs:e})=>[`${e.texel} = texelFetch(${i.texture}, ${i.coord}, ${i.lod??"0"});`]})}dynoOut(){return new v(this,"texel")}}function nQ(t){switch(t){case"sampler2D":case"usampler2D":case"isampler2D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DShadow":case"samplerCubeShadow":return"ivec2";case"sampler3D":case"usampler3D":case"isampler3D":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DArrayShadow":return"ivec3";default:throw new Error(`Invalid texture type: ${t}`)}}function dn(t){switch(t){case"sampler2D":case"usampler2D":case"isampler2D":return"vec2";case"sampler3D":case"usampler3D":case"isampler3D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DShadow":return"vec3";case"samplerCubeShadow":case"sampler2DArrayShadow":return"vec4";default:throw new Error(`Invalid texture type: ${t}`)}}function oQ(t){switch(t){case"sampler2D":case"sampler2DArray":case"sampler3D":case"samplerCube":case"sampler2DShadow":return"vec4";case"usampler2D":case"usampler2DArray":case"usampler3D":case"usamplerCube":return"uvec4";case"isampler2D":case"isampler2DArray":case"isampler3D":case"isamplerCube":return"ivec4";case"samplerCubeShadow":case"sampler2DArrayShadow":return"float";default:throw new Error(`Invalid texture type: ${t}`)}}const pn=t=>new rQ({degrees:t}),fn=t=>new cQ({radians:t}),LI=t=>new hQ({radians:t}),Fn=t=>new lQ({radians:t}),Gn=t=>new uQ({radians:t}),Sn=t=>new DQ({sin:t}),Nn=t=>new yQ({cos:t}),mn=t=>new wQ({tan:t}),Mn=(t,A)=>new dQ({y:t,x:A}),kn=t=>new pQ({x:t}),Rn=t=>new fQ({x:t}),xn=t=>new FQ({x:t}),Un=t=>new GQ({x:t}),Yn=t=>new SQ({x:t}),Ln=t=>new NQ({x:t});class rQ extends N{constructor({degrees:A}){super({a:A,outTypeFunc:I=>I,outKey:"radians"}),this.statements=({inputs:I,outputs:g})=>[`${g.radians} = radians(${I.a});`]}}class cQ extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"degrees"}),this.statements=({inputs:I,outputs:g})=>[`${g.degrees} = degrees(${I.a});`]}}class hQ extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"sin"}),this.statements=({inputs:I,outputs:g})=>[`${g.sin} = sin(${I.a});`]}}class lQ extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"cos"}),this.statements=({inputs:I,outputs:g})=>[`${g.cos} = cos(${I.a});`]}}class uQ extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"tan"}),this.statements=({inputs:I,outputs:g})=>[`${g.tan} = tan(${I.a});`]}}class DQ extends N{constructor({sin:A}){super({a:A,outTypeFunc:I=>I,outKey:"asin"}),this.statements=({inputs:I,outputs:g})=>[`${g.asin} = asin(${I.a});`]}}class yQ extends N{constructor({cos:A}){super({a:A,outTypeFunc:I=>I,outKey:"acos"}),this.statements=({inputs:I,outputs:g})=>[`${g.acos} = acos(${I.a});`]}}class wQ extends N{constructor({tan:A}){super({a:A,outTypeFunc:I=>I,outKey:"atan"}),this.statements=({inputs:I,outputs:g})=>[`${g.atan} = atan(${I.a});`]}}class dQ extends ${constructor({y:A,x:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"atan2"}),this.statements=({inputs:g,outputs:B})=>[`${B.atan2} = atan2(${g.a}, ${g.b});`]}}class pQ extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"sinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.sinh} = sinh(${I.a});`]}}class fQ extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"cosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.cosh} = cosh(${I.a});`]}}class FQ extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"tanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.tanh} = tanh(${I.a});`]}}class GQ extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"asinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.asinh} = asinh(${I.a});`]}}class SQ extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"acosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.acosh} = acosh(${I.a});`]}}class NQ extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"atanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.atanh} = atanh(${I.a});`]}}const Jn=Object.freeze(Object.defineProperty({__proto__:null,Abs:Ai,Acos:yQ,Acosh:SQ,Add:WB,All:Yi,And:fi,Any:Ui,Asin:DQ,Asinh:GQ,Atan:wQ,Atan2:dQ,Atanh:NQ,BVec2:Pi,BVec3:Xi,BVec4:ji,BinaryOp:$,Bool:zi,Ceil:gi,Clamp:li,Combine:Te,CombineGsplat:Gg,CompMult:Ue,CompXor:Hi,Compilation:Dg,Cos:lQ,Cosh:fQ,Cross:Se,Degrees:cQ,Determinant:Je,Distance:Fe,Div:PB,Dot:Ge,Dyno:W,DynoBlock:vA,DynoBool:EI,DynoBvec2:xg,DynoBvec3:Jg,DynoBvec4:Tg,DynoConst:ug,DynoFloat:nt,DynoInt:Tt,DynoIsampler2D:IB,DynoIsampler2DArray:BB,DynoIsampler3D:QB,DynoIsamplerCube:EB,DynoIvec2:Yg,DynoIvec3:bg,DynoIvec4:qg,DynoLiteral:pt,DynoMat2:vg,DynoMat2x2:Zg,DynoMat2x3:zg,DynoMat2x4:Wg,DynoMat3:Og,DynoMat3x2:Vg,DynoMat3x3:Pg,DynoMat3x4:Xg,DynoMat4:jg,DynoMat4x2:_g,DynoMat4x3:$g,DynoMat4x4:AB,DynoOutput:v,DynoProgram:zI,DynoProgramTemplate:WI,DynoRemapIndex:Ve,DynoSampler2D:gB,DynoSampler2DArray:iB,DynoSampler2DArrayShadow:oB,DynoSampler2DShadow:nB,DynoSampler3D:sB,DynoSamplerCube:aB,DynoSamplerCubeShadow:rB,DynoUint:Rg,DynoUniform:R,DynoUsampler2D:tB,DynoUsampler2DArray:Yt,DynoUsampler3D:eB,DynoUsamplerCube:CB,DynoUvec2:Ug,DynoUvec3:Hg,DynoUvec4:Kg,DynoValue:gt,DynoVec2:Lg,DynoVec3:Ft,DynoVec4:Xt,Equal:Ri,Exp:si,Exp2:Ci,ExtendVec:Me,FaceForward:ke,Float:Vi,FloatBitsToInt:Ee,FloatBitsToUint:ae,Floor:Ii,Fract:ei,GreaterThan:Mi,GreaterThanEqual:ki,Gsplat:_,GsplatNormal:Ng,Hash:Pe,Hash2:Xe,Hash3:je,Hash4:_e,HashFloat:$e,HashVec2:AQ,HashVec3:tQ,HashVec4:IQ,IMod:XB,IVec2:_i,IVec3:$i,IVec4:Ae,Int:Wi,IntBitsToFloat:ne,Inverse:He,InverseSqrt:ri,IsInf:di,IsNan:wi,Length:fe,LessThan:Ni,LessThanEqual:mi,Log:Ei,Log2:ai,Mat2:Qe,Mat3:se,Mat4:Ce,Max:hi,Min:ci,Mix:ui,Mod:jB,Modf:_B,Mul:VB,Neg:$B,Normalize:Ne,NormalizedDepth:gQ,Not:Si,NotEqual:xi,NumPackedSplats:wg,Or:Fi,Outer:Ye,OutputPackedSplat:kg,OutputRgba8:vI,PackHalf2x16:ue,PackSnorm2x16:re,PackUnorm2x16:he,PcgHash:UA,PcgMix:mt,PcgNext:xA,Pow:Qi,ProjectH:me,Radians:rQ,ReadPackedSplat:pg,ReadPackedSplatRange:fg,ReflectVec:Re,RefractVec:xe,Round:ii,Select:Li,Sign:ti,SimpleCast:CA,Sin:hQ,Sinh:pQ,Smoothstep:yi,Split:be,SplitGsplat:Fg,Sqr:ni,Sqrt:oi,Step:Di,Sub:OB,Swizzle:Ke,TPackedSplats:Pt,Tan:uQ,Tanh:FQ,TexelFetch:aQ,Texture:EQ,TextureSize:CQ,TransformDir:QQ,TransformGsplat:mg,TransformPosition:eQ,TransformQuaternion:sQ,Transpose:Le,TrinaryOp:ht,Trunc:Bi,UVec2:te,UVec3:Ie,UVec4:ge,Uint:Oi,UintBitsToFloat:oe,UintToRgba8:ye,UnaryOp:N,UnpackHalf2x16:De,UnpackSnorm2x16:ce,UnpackUnorm2x16:le,Vec2:Be,Vec3:ie,Vec4:ee,Xor:Gi,abs:JE,acos:Nn,acosh:Yn,add:fA,all:oa,and:ga,any:na,arrayIndex:ln,arrayLength:un,asin:Sn,asinh:Un,atan:mn,atan2:Mn,atanh:Ln,bool:la,bvec2:ya,bvec3:wa,bvec4:da,ceil:TE,clamp:_E,combine:KA,combineGsplat:Bt,comment:hn,compMult:Va,compXor:ra,cos:Fn,cosh:Rn,cross:qa,defineGsplat:MA,defineGsplatNormal:Sg,definePackedSplats:uI,degrees:fn,determinant:ja,distance:Ka,div:eI,dot:we,dyno:Vt,dynoBlock:kA,dynoBool:Rs,dynoBvec2:Ys,dynoBvec3:bs,dynoBvec4:qs,dynoConst:q,dynoDeclare:KI,dynoFloat:bA,dynoFor:cn,dynoIf:on,dynoInt:Us,dynoIsampler2D:iC,dynoIsampler2DArray:sC,dynoIsampler3D:aC,dynoIsamplerCube:rC,dynoIvec2:Js,dynoIvec3:Ks,dynoIvec4:Zs,dynoLiteral:CI,dynoMat2:Ws,dynoMat2x2:Os,dynoMat2x3:Vs,dynoMat2x4:Ps,dynoMat3:Xs,dynoMat3x2:js,dynoMat3x3:_s,dynoMat3x4:$s,dynoMat4:AC,dynoMat4x2:tC,dynoMat4x3:IC,dynoMat4x4:gC,dynoSampler2D:eC,dynoSampler2DArray:CC,dynoSampler2DArrayShadow:lC,dynoSampler2DShadow:hC,dynoSampler3D:nC,dynoSamplerCube:cC,dynoSamplerCubeShadow:uC,dynoSwitch:rn,dynoUint:xs,dynoUsampler2D:BC,dynoUsampler2DArray:QC,dynoUsampler3D:EC,dynoUsamplerCube:oC,dynoUvec2:Ls,dynoUvec3:Ts,dynoUvec4:vs,dynoVec2:Hs,dynoVec3:$A,dynoVec4:zs,equal:Ea,exp:ZE,exp2:zE,extendVec:pe,faceforward:va,float:bi,floatBitsToInt:qi,floatBitsToUint:Ra,floor:bE,fract:QI,greaterThan:Ca,greaterThanEqual:pi,gsplatNormal:RI,hash:qe,hash2:ve,hash3:Ze,hash4:ze,hashFloat:En,hashVec2:an,hashVec3:We,hashVec4:YI,imod:UI,int:ua,intBitsToFloat:xa,inverse:_a,inversesqrt:XE,isAllFloatType:et,isBoolType:rt,isFloatType:Wt,isInf:Ia,isIntType:lA,isMat2:Qt,isMat3:st,isMat4:Ct,isMatFloatType:og,isNan:ta,isScalarType:ct,isUintType:uA,isVector2Type:St,isVector3Type:Nt,isVector4Type:Ot,isVectorType:fs,ivec2:pa,ivec3:fa,ivec4:Fa,length:Ta,lessThan:Qa,lessThanEqual:sa,literalNegOne:Ns,literalOne:Ss,literalZero:xt,log:WE,log2:OE,mat2:ma,mat3:Ma,mat4:ka,max:ZB,min:jE,mix:zB,mod:vB,modf:LE,mul:oA,neg:VI,normalize:de,normalizedDepth:Oe,not:ea,notEqual:aa,numPackedSplats:ms,numberAsFloat:K,numberAsInt:eA,numberAsUint:QA,or:Ba,outer:Pa,outputPackedSplat:Mg,outputRgba8:Ms,packHalf2x16:vi,packSnorm2x16:Ya,packUnorm2x16:Ja,pcgHash:Cn,pcgMix:Qn,pcgNext:sn,pow:vE,projectH:Wa,radians:pn,readPackedSplat:bt,readPackedSplatRange:yg,reflectVec:Za,refractVec:za,remapIndex:en,round:qE,sameSizeIvec:Gs,sameSizeUvec:hg,sameSizeVec:Fs,select:PI,sign:HE,sin:LI,sinh:kn,smoothstep:Aa,split:ft,splitGsplat:at,sqr:VE,sqrt:PE,step:$E,sub:Gt,swizzle:Oa,tan:Gn,tanh:xn,texelFetch:wn,texture:yn,textureSize:Dn,transformDir:iQ,transformGsplat:qI,transformPos:BQ,transformQuat:nn,transpose:Xa,trunc:KE,typeLiteral:lg,uint:Da,uintBitsToFloat:Ua,uintToRgba8:Zi,uniform:ks,unindent:rA,unindentLines:YA,unpackHalf2x16:ba,unpackSnorm2x16:La,unpackUnorm2x16:Ha,uvec2:Ga,uvec3:Sa,uvec4:Na,valType:z,vec2:Ti,vec3:ot,vec4:Ki,vectorDim:cg,vectorElementType:rg,xor:ia},Symbol.toStringTag,{value:"Module"}));var Hn=`precision highp float;
99
+ `)],statements:({inputs:i,outputs:n})=>{const a=uA(e)?`${i.value}`:lA(e)?`${s}(${i.value})`:`floatBitsToUint(${i.value})`;return[`${s} bits = ${a};`,`${n.state} = pcg_mix(bits);`]}})}dynoOut(){return new K(this,"state")}}class ir extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"uint"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");let s=new Ut({value:e}).outputs.state;return s=new RA({state:s}).outputs.state,new UA({state:s}).outputs}})}dynoOut(){return new K(this,"hash")}}class nr extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"uvec2"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");let s=new Ut({value:e}).outputs.state;s=new RA({state:s}).outputs.state;const i=new UA({state:s}).outputs.hash;s=new RA({state:s}).outputs.state;const n=new UA({state:s}).outputs.hash;return{hash:KA({vectorType:"uvec2",x:i,y:n})}}})}dynoOut(){return new K(this,"hash")}}class ar extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"uvec3"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");let s=new Ut({value:e}).outputs.state;s=new RA({state:s}).outputs.state;const i=new UA({state:s}).outputs.hash;s=new RA({state:s}).outputs.state;const n=new UA({state:s}).outputs.hash;s=new RA({state:s}).outputs.state;const a=new UA({state:s}).outputs.hash;return{hash:KA({vectorType:"uvec3",x:i,y:n,z:a})}}})}dynoOut(){return new K(this,"hash")}}class rr extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"uvec4"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");let s=new Ut({value:e}).outputs.state;s=new RA({state:s}).outputs.state;const i=new UA({state:s}).outputs.hash;s=new RA({state:s}).outputs.state;const n=new UA({state:s}).outputs.hash;s=new RA({state:s}).outputs.state;const a=new UA({state:s}).outputs.hash;s=new RA({state:s}).outputs.state;const r=new UA({state:s}).outputs.hash;return{hash:KA({vectorType:"uvec4",x:i,y:n,z:a,w:r})}}})}dynoOut(){return new K(this,"hash")}}class gr extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"float"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");const s=Wa(e);return{hash:CA(Vn(s),q("float",1/2**32))}}})}dynoOut(){return new K(this,"hash")}}class or extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"vec2"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");const s=ja(e);return{hash:CA(Zn(s),q("float",1/2**32))}}})}dynoOut(){return new K(this,"hash")}}class Ir extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"vec3"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");const s=$a(e);return{hash:CA(ht(s),q("float",1/2**32))}}})}dynoOut(){return new K(this,"hash")}}class Qr extends _A{constructor({value:A}){super({inTypes:{value:_(A)},outTypes:{hash:"vec4"},inputs:{value:A},construct:({value:e})=>{if(!e)throw new Error("value is required");const s=Ar(e);return{hash:CA(Xn(s),q("float",1/2**32))}}})}dynoOut(){return new K(this,"hash")}}class Br extends O{constructor({z:A,zNear:e,zFar:s}){super({inTypes:{z:"float",zNear:"float",zFar:"float"},outTypes:{depth:"float"},inputs:{z:A,zNear:e,zFar:s},statements:({inputs:i,outputs:n})=>[`float clamped = clamp(${i.z}, ${i.zNear}, ${i.zFar});`,`${n.depth} = (log2(clamped + 1.0) - log2(${i.zNear} + 1.0)) / (log2(${i.zFar} + 1.0) - log2(${i.zNear} + 1.0));`]})}dynoOut(){return new K(this,"depth")}}const Cr=(t,{scale:A,scales:e,rotate:s,translate:i})=>new cr({position:t,scale:A,scales:e,rotate:s,translate:i}).outputs.position,Er=(t,{scale:A,scales:e,rotate:s})=>new hr({dir:t,scale:A,scales:e,rotate:s}).outputs.dir,xB=(t,{rotate:A})=>new lr({quaternion:t,rotate:A}).outputs.quaternion;class cr extends O{constructor({position:A,scale:e,scales:s,rotate:i,translate:n}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:e,scales:s,rotate:i,translate:n},statements:({inputs:a,outputs:r})=>{const{position:g}=r;if(!g)return[];const{scale:I,scales:Q,rotate:o,translate:C}=a;return[`${g} = ${a.position??"vec3(0.0, 0.0, 0.0)"};`,I?`${g} *= ${I};`:null,Q?`${g} *= ${Q};`:null,o?`${g} = quatVec(${o}, ${g});`:null,C?`${g} += ${C};`:null].filter(Boolean)}})}}class hr extends O{constructor({dir:A,scale:e,scales:s,rotate:i}){super({inTypes:{dir:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{dir:"vec3"},inputs:{dir:A,scale:e,scales:s,rotate:i},statements:({inputs:n,outputs:a})=>{const{dir:r}=a;if(!r)return[];const{scale:g,scales:I,rotate:Q}=n;return[`${r} = ${n.dir??"vec3(0.0, 0.0, 0.0)"};`,g?`${r} *= ${g};`:null,I?`${r} *= ${I};`:null,Q?`${r} = quatVec(${Q}, ${r});`:null].filter(Boolean)}})}}class lr extends O{constructor({quaternion:A,rotate:e}){super({inTypes:{quaternion:"vec4",rotate:"vec4"},outTypes:{quaternion:"vec4"},inputs:{quaternion:A,rotate:e},statements:({inputs:s,outputs:i})=>{const{quaternion:n}=i;return n?[`${n} = ${s.quaternion??"vec4(0.0, 0.0, 0.0, 1.0)"};`,e?`${n} = quatQuat(${s.rotate}, ${n});`:null].filter(Boolean):[]}})}}const SB=()=>{throw new Error("Not implemented")},MB=()=>{throw new Error("Not implemented")},FB=()=>{throw new Error("Not implemented")},NB=()=>{throw new Error("Not implemented")},kB=()=>{throw new Error("Not implemented")},GB=()=>{throw new Error("Not implemented")},RB=(t,A)=>new ur({texture:t,lod:A}),UB=(t,A,e)=>new dr({texture:t,coord:A,bias:e}),LB=(t,A,e)=>new pr({texture:t,coord:A,lod:e});class ur extends O{constructor({texture:A,lod:e}){const s=_(A);super({inTypes:{texture:s,lod:"int"},outTypes:{size:yr(s)},inputs:{texture:A,lod:e},statements:({inputs:i,outputs:n})=>[`${n.size} = textureSize(${i.texture}, ${i.lod??"0"});`]})}dynoOut(){return new K(this,"size")}}class dr extends O{constructor({texture:A,coord:e,bias:s}){const i=_(A);super({inTypes:{texture:i,coord:bB(i),bias:"float"},outTypes:{sample:wr(i)},inputs:{texture:A,coord:e,bias:s},statements:({inputs:n,outputs:a})=>[`${a.sample} = texture(${n.texture}, ${n.coord}${n.bias?`, ${n.bias}`:""});`]})}dynoOut(){return new K(this,"sample")}}class pr extends O{constructor({texture:A,coord:e,lod:s}){const i=_(A);super({inTypes:{texture:i,coord:yr(i),lod:"int"},outTypes:{texel:wr(i)},inputs:{texture:A,coord:e,lod:s},statements:({inputs:n,outputs:a})=>[`${a.texel} = texelFetch(${n.texture}, ${n.coord}, ${n.lod??"0"});`]})}dynoOut(){return new K(this,"texel")}}function yr(t){switch(t){case"sampler2D":case"usampler2D":case"isampler2D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DShadow":case"samplerCubeShadow":return"ivec2";case"sampler3D":case"usampler3D":case"isampler3D":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DArrayShadow":return"ivec3";default:throw new Error(`Invalid texture type: ${t}`)}}function bB(t){switch(t){case"sampler2D":case"usampler2D":case"isampler2D":return"vec2";case"sampler3D":case"usampler3D":case"isampler3D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DShadow":return"vec3";case"samplerCubeShadow":case"sampler2DArrayShadow":return"vec4";default:throw new Error(`Invalid texture type: ${t}`)}}function wr(t){switch(t){case"sampler2D":case"sampler2DArray":case"sampler3D":case"samplerCube":case"sampler2DShadow":return"vec4";case"usampler2D":case"usampler2DArray":case"usampler3D":case"usamplerCube":return"uvec4";case"isampler2D":case"isampler2DArray":case"isampler3D":case"isamplerCube":return"ivec4";case"samplerCubeShadow":case"sampler2DArrayShadow":return"float";default:throw new Error(`Invalid texture type: ${t}`)}}const vB=t=>new Dr({degrees:t}),YB=t=>new fr({radians:t}),He=t=>new mr({radians:t}),JB=t=>new xr({radians:t}),TB=t=>new Sr({radians:t}),HB=t=>new Mr({sin:t}),qB=t=>new Fr({cos:t}),KB=t=>new Nr({tan:t}),zB=(t,A)=>new kr({y:t,x:A}),_B=t=>new Gr({x:t}),OB=t=>new Rr({x:t}),PB=t=>new Ur({x:t}),VB=t=>new Lr({x:t}),ZB=t=>new br({x:t}),XB=t=>new vr({x:t});class Dr extends F{constructor({degrees:A}){super({a:A,outTypeFunc:e=>e,outKey:"radians"}),this.statements=({inputs:e,outputs:s})=>[`${s.radians} = radians(${e.a});`]}}class fr extends F{constructor({radians:A}){super({a:A,outTypeFunc:e=>e,outKey:"degrees"}),this.statements=({inputs:e,outputs:s})=>[`${s.degrees} = degrees(${e.a});`]}}class mr extends F{constructor({radians:A}){super({a:A,outTypeFunc:e=>e,outKey:"sin"}),this.statements=({inputs:e,outputs:s})=>[`${s.sin} = sin(${e.a});`]}}class xr extends F{constructor({radians:A}){super({a:A,outTypeFunc:e=>e,outKey:"cos"}),this.statements=({inputs:e,outputs:s})=>[`${s.cos} = cos(${e.a});`]}}class Sr extends F{constructor({radians:A}){super({a:A,outTypeFunc:e=>e,outKey:"tan"}),this.statements=({inputs:e,outputs:s})=>[`${s.tan} = tan(${e.a});`]}}class Mr extends F{constructor({sin:A}){super({a:A,outTypeFunc:e=>e,outKey:"asin"}),this.statements=({inputs:e,outputs:s})=>[`${s.asin} = asin(${e.a});`]}}class Fr extends F{constructor({cos:A}){super({a:A,outTypeFunc:e=>e,outKey:"acos"}),this.statements=({inputs:e,outputs:s})=>[`${s.acos} = acos(${e.a});`]}}class Nr extends F{constructor({tan:A}){super({a:A,outTypeFunc:e=>e,outKey:"atan"}),this.statements=({inputs:e,outputs:s})=>[`${s.atan} = atan(${e.a});`]}}class kr extends ${constructor({y:A,x:e}){super({a:A,b:e,outTypeFunc:(s,i)=>s,outKey:"atan2"}),this.statements=({inputs:s,outputs:i})=>[`${i.atan2} = atan2(${s.a}, ${s.b});`]}}class Gr extends F{constructor({x:A}){super({a:A,outTypeFunc:e=>e,outKey:"sinh"}),this.statements=({inputs:e,outputs:s})=>[`${s.sinh} = sinh(${e.a});`]}}class Rr extends F{constructor({x:A}){super({a:A,outTypeFunc:e=>e,outKey:"cosh"}),this.statements=({inputs:e,outputs:s})=>[`${s.cosh} = cosh(${e.a});`]}}class Ur extends F{constructor({x:A}){super({a:A,outTypeFunc:e=>e,outKey:"tanh"}),this.statements=({inputs:e,outputs:s})=>[`${s.tanh} = tanh(${e.a});`]}}class Lr extends F{constructor({x:A}){super({a:A,outTypeFunc:e=>e,outKey:"asinh"}),this.statements=({inputs:e,outputs:s})=>[`${s.asinh} = asinh(${e.a});`]}}class br extends F{constructor({x:A}){super({a:A,outTypeFunc:e=>e,outKey:"acosh"}),this.statements=({inputs:e,outputs:s})=>[`${s.acosh} = acosh(${e.a});`]}}class vr extends F{constructor({x:A}){super({a:A,outTypeFunc:e=>e,outKey:"atanh"}),this.statements=({inputs:e,outputs:s})=>[`${s.atanh} = atanh(${e.a});`]}}const WB=Object.freeze(Object.defineProperty({__proto__:null,Abs:on,Acos:Fr,Acosh:br,Add:An,All:zn,And:Rn,Any:Kn,Asin:Mr,Asinh:Lr,Atan:Nr,Atan2:kr,Atanh:vr,BVec2:ia,BVec3:na,BVec4:aa,BinaryOp:$,Bool:Aa,Ceil:Bn,Clamp:xn,Combine:Za,CombineGsplat:qs,CompMult:Ka,CompXor:Pn,Compilation:Ls,Cos:xr,Cosh:Rr,Cross:ba,Degrees:fr,Determinant:Oa,Distance:Ua,Div:sn,Dot:La,Dyno:O,DynoBlock:_A,DynoBool:Ce,DynoBvec2:Zs,DynoBvec3:$s,DynoBvec4:ei,DynoConst:Us,DynoFloat:ct,DynoInt:_t,DynoIsampler2D:ui,DynoIsampler2DArray:pi,DynoIsampler3D:Di,DynoIsamplerCube:xi,DynoIvec2:Ws,DynoIvec3:ti,DynoIvec4:ii,DynoLiteral:St,DynoMat2:ni,DynoMat2x2:ai,DynoMat2x3:ri,DynoMat2x4:gi,DynoMat3:oi,DynoMat3x2:Ii,DynoMat3x3:Qi,DynoMat3x4:Bi,DynoMat4:Ci,DynoMat4x2:Ei,DynoMat4x3:ci,DynoMat4x4:hi,DynoOutput:K,DynoProgram:Xe,DynoProgramTemplate:We,DynoRemapIndex:sr,DynoSampler2D:di,DynoSampler2DArray:yi,DynoSampler2DArrayShadow:Fi,DynoSampler2DShadow:Mi,DynoSampler3D:fi,DynoSamplerCube:Si,DynoSamplerCubeShadow:Ni,DynoUint:Vs,DynoUniform:G,DynoUsampler2D:li,DynoUsampler2DArray:Ht,DynoUsampler3D:wi,DynoUsamplerCube:mi,DynoUvec2:Xs,DynoUvec3:Ai,DynoUvec4:si,DynoValue:nt,DynoVec2:js,DynoVec3:Ft,DynoVec4:ee,Equal:Hn,Exp:ln,Exp2:un,ExtendVec:Ja,FaceForward:Ta,Float:sa,FloatBitsToInt:da,FloatBitsToUint:pa,Floor:Qn,Fract:cn,GreaterThan:Jn,GreaterThanEqual:Tn,Gsplat:j,GsplatNormal:zs,Hash:ir,Hash2:nr,Hash3:ar,Hash4:rr,HashFloat:gr,HashVec2:or,HashVec3:Ir,HashVec4:Qr,IMod:nn,IVec2:ra,IVec3:ga,IVec4:oa,Int:ta,IntBitsToFloat:ya,Inverse:Pa,InverseSqrt:Dn,IsInf:kn,IsNan:Nn,Length:Ra,LessThan:vn,LessThanEqual:Yn,Log:dn,Log2:pn,Mat2:ha,Mat3:la,Mat4:ua,Max:mn,Min:fn,Mix:Sn,Mod:an,Modf:rn,Mul:en,Neg:gn,Normalize:va,NormalizedDepth:Br,Not:bn,NotEqual:qn,NumPackedSplats:vs,Or:Un,Outer:za,OutputPackedSplat:Ps,OutputRgba8:Ve,PackHalf2x16:Sa,PackSnorm2x16:Da,PackUnorm2x16:ma,PcgHash:UA,PcgMix:Ut,PcgNext:RA,Pow:hn,ProjectH:Ya,Radians:Dr,ReadPackedSplat:Js,ReadPackedSplatRange:Ts,ReflectVec:Ha,RefractVec:qa,Round:En,Select:_n,Sign:In,SimpleCast:oA,Sin:mr,Sinh:Gr,Smoothstep:Fn,Split:Va,SplitGsplat:Hs,Sqr:yn,Sqrt:wn,Step:Mn,Sub:tn,Swizzle:Xa,TPackedSplats:te,Tan:Sr,Tanh:Ur,TexelFetch:pr,Texture:dr,TextureSize:ur,TransformDir:hr,TransformGsplat:_s,TransformPosition:cr,TransformQuaternion:lr,Transpose:_a,TrinaryOp:dt,Trunc:Cn,UVec2:Ia,UVec3:Qa,UVec4:Ba,Uint:ea,UintBitsToFloat:wa,UintToRgba8:Fa,UnaryOp:F,UnpackHalf2x16:Ma,UnpackSnorm2x16:fa,UnpackUnorm2x16:xa,Vec2:Ca,Vec3:Ea,Vec4:ca,Xor:Ln,abs:jI,acos:qB,acosh:ZB,add:mA,all:MQ,and:uQ,any:SQ,arrayIndex:kB,arrayLength:GB,asin:HB,asinh:VB,atan:KB,atan2:zB,atanh:XB,bool:GQ,bvec2:LQ,bvec3:bQ,bvec4:vQ,ceil:tQ,clamp:CQ,combine:KA,combineGsplat:at,comment:NB,compMult:oB,compXor:FQ,cos:JB,cosh:OB,cross:sB,defineGsplat:kA,defineGsplatNormal:Ks,definePackedSplats:ye,degrees:YB,determinant:BB,distance:eB,div:oe,dot:Na,dyno:Ae,dynoBlock:GA,dynoBool:no,dynoBvec2:go,dynoBvec3:Bo,dynoBvec4:co,dynoConst:q,dynoDeclare:Oe,dynoFloat:TA,dynoFor:FB,dynoIf:SB,dynoInt:ro,dynoIsampler2D:Ro,dynoIsampler2DArray:bo,dynoIsampler3D:Jo,dynoIsamplerCube:qo,dynoIvec2:Io,dynoIvec3:Eo,dynoIvec4:lo,dynoLiteral:Be,dynoMat2:po,dynoMat2x2:yo,dynoMat2x3:wo,dynoMat2x4:Do,dynoMat3:fo,dynoMat3x2:mo,dynoMat3x3:xo,dynoMat3x4:So,dynoMat4:Mo,dynoMat4x2:Fo,dynoMat4x3:No,dynoMat4x4:ko,dynoSampler2D:Uo,dynoSampler2DArray:vo,dynoSampler2DArrayShadow:_o,dynoSampler2DShadow:zo,dynoSampler3D:To,dynoSamplerCube:Ko,dynoSamplerCubeShadow:Oo,dynoSwitch:MB,dynoUint:ao,dynoUsampler2D:Go,dynoUsampler2DArray:Lo,dynoUsampler3D:Yo,dynoUsamplerCube:Ho,dynoUvec2:oo,dynoUvec3:Co,dynoUvec4:ho,dynoVec2:Qo,dynoVec3:tt,dynoVec4:uo,equal:mQ,exp:nQ,exp2:aQ,extendVec:Ga,faceforward:iB,float:Vn,floatBitsToInt:Wn,floatBitsToUint:PQ,floor:AQ,fract:Ie,greaterThan:fQ,greaterThanEqual:Gn,gsplatNormal:Ye,hash:Wa,hash2:ja,hash3:$a,hash4:Ar,hashFloat:fB,hashVec2:mB,hashVec3:tr,hashVec4:Te,imod:Je,int:RQ,intBitsToFloat:VQ,inverse:CB,inversesqrt:QQ,isAllFloatType:gt,isBoolType:lt,isFloatType:jt,isInf:lQ,isIntType:lA,isMat2:ot,isMat3:It,isMat4:Qt,isMatFloatType:Fs,isNan:hQ,isScalarType:ut,isUintType:uA,isVector2Type:Gt,isVector3Type:Rt,isVector4Type:$t,isVectorType:Wg,ivec2:YQ,ivec3:JQ,ivec4:TQ,length:tB,lessThan:wQ,lessThanEqual:DQ,literalNegOne:to,literalOne:Ao,literalZero:Yt,log:rQ,log2:gQ,mat2:zQ,mat3:_Q,mat4:OQ,max:ji,min:BQ,mix:$i,mod:Wi,modf:WI,mul:CA,neg:$e,normalize:ka,normalizedDepth:er,not:yQ,notEqual:xQ,numPackedSplats:eo,numberAsFloat:H,numberAsInt:aA,numberAsUint:rA,or:dQ,outer:IB,outputPackedSplat:Os,outputRgba8:so,packHalf2x16:jn,packSnorm2x16:XQ,packUnorm2x16:jQ,pcgHash:DB,pcgMix:yB,pcgNext:wB,pow:iQ,projectH:rB,radians:vB,readPackedSplat:zt,readPackedSplatRange:bs,reflectVec:nB,refractVec:aB,remapIndex:pB,round:sQ,sameSizeIvec:$g,sameSizeUvec:Gs,sameSizeVec:jg,select:As,sign:$I,sin:He,sinh:_B,smoothstep:cQ,split:Mt,splitGsplat:Et,sqr:oQ,sqrt:IQ,step:EQ,sub:Nt,swizzle:gB,tan:TB,tanh:PB,texelFetch:LB,texture:UB,textureSize:RB,transformDir:Er,transformGsplat:Pe,transformPos:Cr,transformQuat:xB,transpose:QB,trunc:eQ,typeLiteral:Rs,uint:UQ,uintBitsToFloat:ZQ,uintToRgba8:$n,uniform:io,unindent:cA,unindentLines:LA,unpackHalf2x16:AB,unpackSnorm2x16:WQ,unpackUnorm2x16:$Q,uvec2:HQ,uvec3:qQ,uvec4:KQ,valType:_,vec2:Zn,vec3:ht,vec4:Xn,vectorDim:ks,vectorElementType:Ns,xor:pQ},Symbol.toStringTag,{value:"Module"}));var jB=`precision highp float;
100
100
  precision highp int;
101
101
  precision highp sampler2D;
102
102
  precision highp usampler2D;
@@ -131,18 +131,18 @@ void main() {
131
131
  } else {
132
132
  target = vec4(0.0, 0.0, 0.0, 0.0);
133
133
  }
134
- }`;const aA=class aA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}ensureBuffer(A,I){const B=Math.ceil(Math.max(1,A)/j)*j*4;if(I.byteLength>=B)return I;const i=new ArrayBuffer(B);if(I instanceof ArrayBuffer)return i;const e=I.constructor;return new e(i)}ensureCapacity(A){const{width:I,height:g,depth:B,maxSplats:i}=FA(A);(!this.target||i>this.capacity)&&(this.dispose(),this.capacity=i,this.target=new n.WebGLArrayRenderTarget(I,g,B,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:n.NearestFilter,minFilter:n.NearestFilter}),this.target.texture.format=n.RGBAFormat,this.target.texture.type=n.UnsignedByteType,this.target.texture.internalFormat="RGBA8",this.target.scissorTest=!0)}prepareProgramMaterial(A){let I=aA.readbackProgram.get(A);if(!I){const B=kA({index:"int"},{rgba8:"vec4"},({index:i})=>(A.inputs.index=i,{rgba8:new vI({rgba8:A.outputs.rgba8})}));aA.programTemplate||(aA.programTemplate=new WI(Hn)),I=new zI({graph:B,inputs:{index:"index"},outputs:{rgba8:"target"},template:aA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),aA.readbackProgram.set(A,I)}const g=I.prepareMaterial();return aA.mesh.material=g,{program:I,material:g}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(null),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}process({count:A,material:I}){const g=this.renderer;if(!g)throw new Error("No renderer");if(!this.target)throw new Error("No target");const B=j*It;I.uniforms.targetBase.value=0,I.uniforms.targetCount.value=A;let i=0;for(;i<A;){const e=Math.floor(i/B),Q=e*B,s=Math.min(It,Math.ceil((A-Q)/j));I.uniforms.targetLayer.value=e,this.target.scissor.set(0,0,j,s),g.setRenderTarget(this.target,e),g.xr.enabled=!1,g.autoClear=!1,g.render(aA.scene,aA.camera),i+=j*s}this.count=A}async read({readback:A}){const I=this.renderer;if(!I)throw new Error("No renderer");if(!this.target)throw new Error("No target");const g=Math.ceil(this.count/j)*j;if(A.byteLength<g*4)throw new Error(`Readback buffer too small: ${A.byteLength} < ${g*4}`);const B=new Uint8Array(A instanceof ArrayBuffer?A:A.buffer),i=j*It;let e=0;const Q=[];for(;e<this.count;){const s=Math.floor(e/i),E=s*i,a=Math.min(It,Math.ceil((this.count-E)/j));I.setRenderTarget(this.target,s);const C=j*a*4,o=B.subarray(E*4,E*4+C),r=I==null?void 0:I.readRenderTargetPixelsAsync(this.target,0,0,j,a,o);Q.push(r),e+=j*a}return Promise.all(Q).then(()=>A)}render({reader:A,count:I,renderer:g}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:B,material:i}=this.prepareProgramMaterial(A);B.update();const e=this.saveRenderState(this.renderer);this.process({count:I,material:i}),this.resetRenderState(this.renderer,e)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const I=this.saveRenderState(this.renderer),g=this.read({readback:A});return this.resetRenderState(this.renderer,I),g}async renderReadback({reader:A,count:I,renderer:g,readback:B}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:i,material:e}=this.prepareProgramMaterial(A);i.update();const Q=this.saveRenderState(this.renderer);this.process({count:I,material:e});const s=this.read({readback:B});return this.resetRenderState(this.renderer,Q),s}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};aA.programTemplate=null,aA.readbackProgram=new Map,aA.geometry=new n.PlaneGeometry(2,2),aA.mesh=new n.Mesh(aA.geometry,new n.RawShaderMaterial({visible:!1})),aA.scene=new n.Scene().add(aA.mesh),aA.camera=new n.Camera;let Kt=aA;const nA=class nA{constructor(A={}){this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new R({key:"rgbaArray",type:mQ,globals:()=>[MQ],value:{texture:nA.getEmpty(),count:0},update:I=>{var g;return I.texture=((g=this.readback)==null?void 0:g.getTexture())??this.source??nA.getEmpty(),I.count=this.count,I}}),A.array?(this.array=A.array,this.capacity=Math.floor(this.array.length/4),this.capacity=Math.floor(this.capacity/j)*j,this.count=Math.min(this.capacity,A.count??Number.POSITIVE_INFINITY)):(this.capacity=A.capacity??0,this.count=0)}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var I;if(!this.array||A>(((I=this.array)==null?void 0:I.length)??0)/4){this.capacity=FA(A).maxSplats;const g=new Uint8Array(this.capacity*4);this.array&&g.set(this.array),this.array=g}return this.array}getTexture(){var I;let A=(I=this.readback)==null?void 0:I.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??nA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.capacity!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:I,depth:g}=FA(this.capacity);this.source=new n.DataArrayTexture(this.array,A,I,g),this.source.format=n.RGBAFormat,this.source.type=n.UnsignedByteType,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:I,renderer:g}){this.readback||(this.readback=new Kt({renderer:g})),this.readback.render({reader:A,count:I,renderer:g}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:I,count:g,renderer:B}){const{dynoSplats:i,dynoBase:e,dynoCount:Q,reader:s}=nA.makeDynos();return i.packedSplats=A,e.value=I,Q.value=g,this.render({reader:s,count:g,renderer:B}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length<this.count*4)&&(this.array=new Uint8Array(this.capacity*4)),(await this.readback.readback({readback:this.array})).subarray(0,this.count*4)}static getEmpty(){if(!nA.emptySource){const A=new Uint8Array(4);nA.emptySource=new n.DataArrayTexture(A,1,1,1),nA.emptySource.format=n.RGBAFormat,nA.emptySource.type=n.UnsignedByteType,nA.emptySource.internalFormat="RGBA8",nA.emptySource.needsUpdate=!0}return nA.emptySource}static makeDynos(){if(!nA.dynos){const A=new _I,I=new Tt({value:0}),g=new Tt({value:0}),B=kA({index:"int"},{rgba8:"vec4"},({index:i})=>{if(!i)throw new Error("index is undefined");i=fA(i,I);const e=yg(A,i,I,g);return{rgba8:at(e).outputs.rgba}});nA.dynos={dynoSplats:A,dynoBase:I,dynoCount:g,reader:B}}return nA.dynos}};nA.emptySource=null,nA.dynos=null;let JI=nA;const mQ={type:"RgbaArray"},MQ=rA(`
134
+ }`;const QA=class QA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}ensureBuffer(A,e){const i=Math.ceil(Math.max(1,A)/W)*W*4;if(e.byteLength>=i)return e;const n=new ArrayBuffer(i);if(e instanceof ArrayBuffer)return n;const a=e.constructor;return new a(n)}ensureCapacity(A){const{width:e,height:s,depth:i,maxSplats:n}=xA(A);(!this.target||n>this.capacity)&&(this.dispose(),this.capacity=n,this.target=new B.WebGLArrayRenderTarget(e,s,i,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:B.NearestFilter,minFilter:B.NearestFilter}),this.target.texture.format=B.RGBAFormat,this.target.texture.type=B.UnsignedByteType,this.target.texture.internalFormat="RGBA8",this.target.scissorTest=!0)}prepareProgramMaterial(A){let e=QA.readbackProgram.get(A);if(!e){const i=GA({index:"int"},{rgba8:"vec4"},({index:n})=>(A.inputs.index=n,{rgba8:new Ve({rgba8:A.outputs.rgba8})}));QA.programTemplate||(QA.programTemplate=new We(jB)),e=new Xe({graph:i,inputs:{index:"index"},outputs:{rgba8:"target"},template:QA.programTemplate}),Object.assign(e.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),QA.readbackProgram.set(A,e)}const s=e.prepareMaterial();return QA.mesh.material=s,{program:e,material:s}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,e){A.setRenderTarget(null),A.xr.enabled=e.xrEnabled,A.autoClear=e.autoClear}process({count:A,material:e}){const s=this.renderer;if(!s)throw new Error("No renderer");if(!this.target)throw new Error("No target");const i=W*it;e.uniforms.targetBase.value=0,e.uniforms.targetCount.value=A;let n=0;for(;n<A;){const a=Math.floor(n/i),r=a*i,g=Math.min(it,Math.ceil((A-r)/W));e.uniforms.targetLayer.value=a,this.target.scissor.set(0,0,W,g),s.setRenderTarget(this.target,a),s.xr.enabled=!1,s.autoClear=!1,s.render(QA.scene,QA.camera),n+=W*g}this.count=A}async read({readback:A}){const e=this.renderer;if(!e)throw new Error("No renderer");if(!this.target)throw new Error("No target");const s=Math.ceil(this.count/W)*W;if(A.byteLength<s*4)throw new Error(`Readback buffer too small: ${A.byteLength} < ${s*4}`);const i=new Uint8Array(A instanceof ArrayBuffer?A:A.buffer),n=W*it;let a=0;const r=[];for(;a<this.count;){const g=Math.floor(a/n),I=g*n,Q=Math.min(it,Math.ceil((this.count-I)/W));e.setRenderTarget(this.target,g);const o=W*Q*4,C=i.subarray(I*4,I*4+o),E=e==null?void 0:e.readRenderTargetPixelsAsync(this.target,0,0,W,Q,C);r.push(E),a+=W*Q}return Promise.all(r).then(()=>A)}render({reader:A,count:e,renderer:s}){if(this.renderer=s||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(e);const{program:i,material:n}=this.prepareProgramMaterial(A);i.update();const a=this.saveRenderState(this.renderer);this.process({count:e,material:n}),this.resetRenderState(this.renderer,a)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const e=this.saveRenderState(this.renderer),s=this.read({readback:A});return this.resetRenderState(this.renderer,e),s}async renderReadback({reader:A,count:e,renderer:s,readback:i}){if(this.renderer=s||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(e);const{program:n,material:a}=this.prepareProgramMaterial(A);n.update();const r=this.saveRenderState(this.renderer);this.process({count:e,material:a});const g=this.read({readback:i});return this.resetRenderState(this.renderer,r),g}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};QA.programTemplate=null,QA.readbackProgram=new Map,QA.geometry=new B.PlaneGeometry(2,2),QA.mesh=new B.Mesh(QA.geometry,new B.RawShaderMaterial({visible:!1})),QA.scene=new B.Scene().add(QA.mesh),QA.camera=new B.Camera;let Ot=QA;const BA=class BA{constructor(A={}){this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new G({key:"rgbaArray",type:Yr,globals:()=>[Jr],value:{texture:BA.getEmpty(),count:0},update:e=>{var s;return e.texture=((s=this.readback)==null?void 0:s.getTexture())??this.source??BA.getEmpty(),e.count=this.count,e}}),A.array?(this.array=A.array,this.capacity=Math.floor(this.array.length/4),this.capacity=Math.floor(this.capacity/W)*W,this.count=Math.min(this.capacity,A.count??Number.POSITIVE_INFINITY)):(this.capacity=A.capacity??0,this.count=0)}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var e;if(!this.array||A>(((e=this.array)==null?void 0:e.length)??0)/4){this.capacity=xA(A).maxSplats;const s=new Uint8Array(this.capacity*4);this.array&&s.set(this.array),this.array=s}return this.array}getTexture(){var e;let A=(e=this.readback)==null?void 0:e.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??BA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:e,depth:s}=this.source.image;this.capacity!==A*e*s&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:e,depth:s}=xA(this.capacity);this.source=new B.DataArrayTexture(this.array,A,e,s),this.source.format=B.RGBAFormat,this.source.type=B.UnsignedByteType,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:e,renderer:s}){this.readback||(this.readback=new Ot({renderer:s})),this.readback.render({reader:A,count:e,renderer:s}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:e,count:s,renderer:i}){const{dynoSplats:n,dynoBase:a,dynoCount:r,reader:g}=BA.makeDynos();return n.packedSplats=A,a.value=e,r.value=s,this.render({reader:g,count:s,renderer:i}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length<this.count*4)&&(this.array=new Uint8Array(this.capacity*4)),(await this.readback.readback({readback:this.array})).subarray(0,this.count*4)}static getEmpty(){if(!BA.emptySource){const A=new Uint8Array(4);BA.emptySource=new B.DataArrayTexture(A,1,1,1),BA.emptySource.format=B.RGBAFormat,BA.emptySource.type=B.UnsignedByteType,BA.emptySource.internalFormat="RGBA8",BA.emptySource.needsUpdate=!0}return BA.emptySource}static makeDynos(){if(!BA.dynos){const A=new is,e=new _t({value:0}),s=new _t({value:0}),i=GA({index:"int"},{rgba8:"vec4"},({index:n})=>{if(!n)throw new Error("index is undefined");n=mA(n,e);const a=bs(A,n,e,s);return{rgba8:Et(a).outputs.rgba}});BA.dynos={dynoSplats:A,dynoBase:e,dynoCount:s,reader:i}}return BA.dynos}};BA.emptySource=null,BA.dynos=null;let qe=BA;const Yr={type:"RgbaArray"},Jr=cA(`
135
135
  struct RgbaArray {
136
136
  sampler2DArray texture;
137
137
  int count;
138
138
  };
139
- `);function bn(t,A){return new W({inTypes:{rgba:mQ,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:t,index:A},globals:()=>[MQ],statements:({inputs:g,outputs:B})=>YA(`
140
- if ((index >= 0) && (index < ${g.rgba}.count)) {
141
- ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(index), 0);
139
+ `);function $B(t,A){return new O({inTypes:{rgba:Yr,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:t,index:A},globals:()=>[Jr],statements:({inputs:s,outputs:i})=>LA(`
140
+ if ((index >= 0) && (index < ${s.rgba}.count)) {
141
+ ${i.rgba} = texelFetch(${s.rgba}.texture, splatTexCoord(index), 0);
142
142
  } else {
143
- ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0);
143
+ ${i.rgba} = vec4(0.0, 0.0, 0.0, 0.0);
144
144
  }
145
- `)}).outputs.rgba}var kQ=(t=>(t.ALL="all",t.PLANE="plane",t.SPHERE="sphere",t.BOX="box",t.ELLIPSOID="ellipsoid",t.CYLINDER="cylinder",t.CAPSULE="capsule",t.INFINITE_CONE="infinite_cone",t))(kQ||{});function Tn(t){switch(t){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${t}`)}}var RQ=(t=>(t.MULTIPLY="multiply",t.SET_RGB="set_rgb",t.ADD_RGBA="add_rgba",t))(RQ||{});function Kn(t){switch(t){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${t}`)}}class xQ extends n.Object3D{constructor(A={}){super();const{type:I,invert:g,opacity:B,color:i,displace:e,radius:Q}=A;this.type=I??"sphere",this.invert=g??!1,this.opacity=B??1,this.color=i??new n.Color(1,1,1),this.displace=e??new n.Vector3(0,0,0),this.radius=Q??0}}const lI=class lI extends n.Object3D{constructor(A={}){const{name:I,rgbaBlendMode:g="multiply",sdfSmooth:B=0,softEdge:i=0,invert:e=!1,sdfs:Q=null}=A;super(),this.rgbaBlendMode=g,this.sdfSmooth=B,this.softEdge=i,this.invert=e,this.sdfs=Q,this.ordering=lI.nextOrdering++,this.name=I??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.includes(A)||this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(I=>I!==A))}};lI.nextOrdering=1;let qt=lI;class UQ{constructor({maxSdfs:A,maxEdits:I}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new R({key:"sdfArray",type:YQ,globals:()=>[LQ],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:g=>(g.numSdfs=this.numSdfs,g.sdfTexture=this.sdfTexture,g)}),this.maxEdits=Math.max(16,I??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new Tt({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,I){const g=new n.DataTexture(A,8,I,n.RGBAIntegerFormat,n.UnsignedIntType);return g.internalFormat="RGBA32UI",g.needsUpdate=!0,g}newEdits(A,I){return new R({key:"edits",type:"uvec4",count:I,globals:()=>[JQ],value:A})}ensureCapacity({maxSdfs:A,maxEdits:I}){let g=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),I>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,I),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),g=!0),g}updateEditData(A,I){const g=this.editData[A]!==I;return this.editData[A]=I,g}updateEditFloatData(A,I){lt[0]=I;const g=this.editFloatData[A]!==lt[0];return g&&(this.editFloatData[A]=lt[0]),g}encodeEdit(A,{sdfFirst:I,sdfCount:g,invert:B,rgbaBlendMode:i,softEdge:e,sdfSmooth:Q}){const s=A*4;let E=!1;return E=this.updateEditData(s+0,i|(B?256:0))||E,E=this.updateEditData(s+1,I|g<<16)||E,E=this.updateEditFloatData(s+2,e)||E,E=this.updateEditFloatData(s+3,Q)||E,E}updateSdfData(A,I){const g=this.sdfData[A]!==I;return this.sdfData[A]=I,g}updateSdfFloatData(A,I){lt[0]=I;const g=this.sdfFloatData[A]!==lt[0];return g&&(this.sdfFloatData[A]=lt[0]),g}encodeSdf(A,{sdfType:I,invert:g,center:B,quaternion:i,scale:e,sizes:Q},s){const E=A*32,a=I|(g?256:0);let C=!1;C=this.updateSdfFloatData(E+0,(B==null?void 0:B.x)??0)||C,C=this.updateSdfFloatData(E+1,(B==null?void 0:B.y)??0)||C,C=this.updateSdfFloatData(E+2,(B==null?void 0:B.z)??0)||C,C=this.updateSdfData(E+3,a)||C,C=this.updateSdfFloatData(E+4,(i==null?void 0:i.x)??0)||C,C=this.updateSdfFloatData(E+5,(i==null?void 0:i.y)??0)||C,C=this.updateSdfFloatData(E+6,(i==null?void 0:i.z)??0)||C,C=this.updateSdfFloatData(E+7,(i==null?void 0:i.w)??0)||C,C=this.updateSdfFloatData(E+8,(e==null?void 0:e.x)??0)||C,C=this.updateSdfFloatData(E+9,(e==null?void 0:e.y)??0)||C,C=this.updateSdfFloatData(E+10,(e==null?void 0:e.z)??0)||C,C=this.updateSdfData(E+11,0)||C,C=this.updateSdfFloatData(E+12,(Q==null?void 0:Q.x)??0)||C,C=this.updateSdfFloatData(E+13,(Q==null?void 0:Q.y)??0)||C,C=this.updateSdfFloatData(E+14,(Q==null?void 0:Q.z)??0)||C,C=this.updateSdfFloatData(E+15,(Q==null?void 0:Q.w)??0)||C;const o=Math.min(4,s.length);for(let r=0;r<o;++r){const h=E+16+r*4;C=this.updateSdfFloatData(h+0,s[r].x)||C,C=this.updateSdfFloatData(h+1,s[r].y)||C,C=this.updateSdfFloatData(h+2,s[r].z)||C,C=this.updateSdfFloatData(h+3,s[r].w)||C}return C}update(A){const I=A.reduce((C,{sdfs:o})=>C+o.length,0),g=this.ensureCapacity({maxEdits:A.length,maxSdfs:I}),B=[new n.Vector4,new n.Vector4],i=new n.Vector3,e=new n.Quaternion,Q=new n.Vector3,s=new n.Vector4;let E=0,a=g;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,a=!0);for(const[C,{edit:o,sdfs:r}]of A.entries()){a=this.encodeEdit(C,{sdfFirst:E,sdfCount:r.length,invert:o.invert,rgbaBlendMode:Kn(o.rgbaBlendMode),softEdge:o.softEdge,sdfSmooth:o.sdfSmooth})||a;let h=!1;for(const c of r)s.set(c.scale.x,c.scale.y,c.scale.z,c.radius),c.scale.setScalar(1),c.updateMatrixWorld(),c.matrixWorld.clone().invert().decompose(i,e,Q),c.scale.set(s.x,s.y,s.z),c.updateMatrixWorld(),B[0].set(c.color.r,c.color.g,c.color.b,c.opacity),B[1].set(c.displace.x,c.displace.y,c.displace.z,1),h=this.encodeSdf(E,{sdfType:Tn(c.type),invert:c.invert,center:i,quaternion:e,scale:Q,sizes:s},B)||h,E+=1;this.numSdfs=E,h&&(this.sdfTexture.needsUpdate=!0),a||(a=h)}return{updated:a,dynoUpdated:g}}modify(A){return qn(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const YQ={type:"SdfArray"},LQ=rA(`
145
+ `)}).outputs.rgba}var Tr=(t=>(t.ALL="all",t.PLANE="plane",t.SPHERE="sphere",t.BOX="box",t.ELLIPSOID="ellipsoid",t.CYLINDER="cylinder",t.CAPSULE="capsule",t.INFINITE_CONE="infinite_cone",t))(Tr||{});function AC(t){switch(t){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${t}`)}}var Hr=(t=>(t.MULTIPLY="multiply",t.SET_RGB="set_rgb",t.ADD_RGBA="add_rgba",t))(Hr||{});function tC(t){switch(t){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${t}`)}}class qr extends B.Object3D{constructor(A={}){super();const{type:e,invert:s,opacity:i,color:n,displace:a,radius:r}=A;this.type=e??"sphere",this.invert=s??!1,this.opacity=i??1,this.color=n??new B.Color(1,1,1),this.displace=a??new B.Vector3(0,0,0),this.radius=r??0}}const pe=class pe extends B.Object3D{constructor(A={}){const{name:e,rgbaBlendMode:s="multiply",sdfSmooth:i=0,softEdge:n=0,invert:a=!1,sdfs:r=null}=A;super(),this.rgbaBlendMode=s,this.sdfSmooth=i,this.softEdge=n,this.invert=a,this.sdfs=r,this.ordering=pe.nextOrdering++,this.name=e??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.includes(A)||this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(e=>e!==A))}};pe.nextOrdering=1;let Pt=pe;class Kr{constructor({maxSdfs:A,maxEdits:e}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new G({key:"sdfArray",type:zr,globals:()=>[_r],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:s=>(s.numSdfs=this.numSdfs,s.sdfTexture=this.sdfTexture,s)}),this.maxEdits=Math.max(16,e??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new _t({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,e){const s=new B.DataTexture(A,8,e,B.RGBAIntegerFormat,B.UnsignedIntType);return s.internalFormat="RGBA32UI",s.needsUpdate=!0,s}newEdits(A,e){return new G({key:"edits",type:"uvec4",count:e,globals:()=>[Or],value:A})}ensureCapacity({maxSdfs:A,maxEdits:e}){let s=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),e>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,e),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),s=!0),s}updateEditData(A,e){const s=this.editData[A]!==e;return this.editData[A]=e,s}updateEditFloatData(A,e){pt[0]=e;const s=this.editFloatData[A]!==pt[0];return s&&(this.editFloatData[A]=pt[0]),s}encodeEdit(A,{sdfFirst:e,sdfCount:s,invert:i,rgbaBlendMode:n,softEdge:a,sdfSmooth:r}){const g=A*4;let I=!1;return I=this.updateEditData(g+0,n|(i?256:0))||I,I=this.updateEditData(g+1,e|s<<16)||I,I=this.updateEditFloatData(g+2,a)||I,I=this.updateEditFloatData(g+3,r)||I,I}updateSdfData(A,e){const s=this.sdfData[A]!==e;return this.sdfData[A]=e,s}updateSdfFloatData(A,e){pt[0]=e;const s=this.sdfFloatData[A]!==pt[0];return s&&(this.sdfFloatData[A]=pt[0]),s}encodeSdf(A,{sdfType:e,invert:s,center:i,quaternion:n,scale:a,sizes:r},g){const I=A*32,Q=e|(s?256:0);let o=!1;o=this.updateSdfFloatData(I+0,(i==null?void 0:i.x)??0)||o,o=this.updateSdfFloatData(I+1,(i==null?void 0:i.y)??0)||o,o=this.updateSdfFloatData(I+2,(i==null?void 0:i.z)??0)||o,o=this.updateSdfData(I+3,Q)||o,o=this.updateSdfFloatData(I+4,(n==null?void 0:n.x)??0)||o,o=this.updateSdfFloatData(I+5,(n==null?void 0:n.y)??0)||o,o=this.updateSdfFloatData(I+6,(n==null?void 0:n.z)??0)||o,o=this.updateSdfFloatData(I+7,(n==null?void 0:n.w)??0)||o,o=this.updateSdfFloatData(I+8,(a==null?void 0:a.x)??0)||o,o=this.updateSdfFloatData(I+9,(a==null?void 0:a.y)??0)||o,o=this.updateSdfFloatData(I+10,(a==null?void 0:a.z)??0)||o,o=this.updateSdfData(I+11,0)||o,o=this.updateSdfFloatData(I+12,(r==null?void 0:r.x)??0)||o,o=this.updateSdfFloatData(I+13,(r==null?void 0:r.y)??0)||o,o=this.updateSdfFloatData(I+14,(r==null?void 0:r.z)??0)||o,o=this.updateSdfFloatData(I+15,(r==null?void 0:r.w)??0)||o;const C=Math.min(4,g.length);for(let E=0;E<C;++E){const l=I+16+E*4;o=this.updateSdfFloatData(l+0,g[E].x)||o,o=this.updateSdfFloatData(l+1,g[E].y)||o,o=this.updateSdfFloatData(l+2,g[E].z)||o,o=this.updateSdfFloatData(l+3,g[E].w)||o}return o}update(A){const e=A.reduce((o,{sdfs:C})=>o+C.length,0),s=this.ensureCapacity({maxEdits:A.length,maxSdfs:e}),i=[new B.Vector4,new B.Vector4],n=new B.Vector3,a=new B.Quaternion,r=new B.Vector3,g=new B.Vector4;let I=0,Q=s;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,Q=!0);for(const[o,{edit:C,sdfs:E}]of A.entries()){Q=this.encodeEdit(o,{sdfFirst:I,sdfCount:E.length,invert:C.invert,rgbaBlendMode:tC(C.rgbaBlendMode),softEdge:C.softEdge,sdfSmooth:C.sdfSmooth})||Q;let l=!1;for(const c of E)g.set(c.scale.x,c.scale.y,c.scale.z,c.radius),c.scale.setScalar(1),c.updateMatrixWorld(),c.matrixWorld.clone().invert().decompose(n,a,r),c.scale.set(g.x,g.y,g.z),c.updateMatrixWorld(),i[0].set(c.color.r,c.color.g,c.color.b,c.opacity),i[1].set(c.displace.x,c.displace.y,c.displace.z,1),l=this.encodeSdf(I,{sdfType:AC(c.type),invert:c.invert,center:n,quaternion:a,scale:r,sizes:g},i)||l,I+=1;this.numSdfs=I,l&&(this.sdfTexture.needsUpdate=!0),Q||(Q=l)}return{updated:Q,dynoUpdated:s}}modify(A){return eC(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const zr={type:"SdfArray"},_r=cA(`
146
146
  struct SdfArray {
147
147
  int numSdfs;
148
148
  usampler2D sdfTexture;
@@ -307,7 +307,7 @@ void main() {
307
307
  return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)
308
308
  : clamp(-distance / softEdge + 0.5, 0.0, 1.0);
309
309
  }
310
- `),JQ=rA(`
310
+ `),Or=cA(`
311
311
  const uint EDIT_FLAG_BLEND = 0xFFu;
312
312
  const uint EDIT_BLEND_MULTIPLY = 0u;
313
313
  const uint EDIT_BLEND_SET_RGB = 1u;
@@ -365,17 +365,17 @@ void main() {
365
365
  decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);
366
366
  applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);
367
367
  }
368
- `);function qn(t,A,I,g){return new W({inTypes:{gsplat:_,sdfArray:YQ,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:_},globals:()=>[LQ,JQ],inputs:{gsplat:t,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:i,outputs:e})=>{const{sdfArray:Q,numEdits:s,rgbaDisplaceEdits:E}=i,{gsplat:a}=e;return YA(`
369
- ${a} = ${i.gsplat};
370
- if (isGsplatActive(${a}.flags)) {
371
- for (int editIndex = 0; editIndex < ${s}; ++editIndex) {
368
+ `);function eC(t,A,e,s){return new O({inTypes:{gsplat:j,sdfArray:zr,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:j},globals:()=>[_r,Or],inputs:{gsplat:t,sdfArray:A,numEdits:e,rgbaDisplaceEdits:s},statements:({inputs:n,outputs:a})=>{const{sdfArray:r,numEdits:g,rgbaDisplaceEdits:I}=n,{gsplat:Q}=a;return LA(`
369
+ ${Q} = ${n.gsplat};
370
+ if (isGsplatActive(${Q}.flags)) {
371
+ for (int editIndex = 0; editIndex < ${g}; ++editIndex) {
372
372
  applyPackedRgbaDisplaceEdit(
373
- ${E}[editIndex], ${Q}.sdfTexture, ${Q}.numSdfs,
374
- ${a}.center, ${a}.rgba
373
+ ${I}[editIndex], ${r}.sdfTexture, ${r}.numSdfs,
374
+ ${Q}.center, ${Q}.rgba
375
375
  );
376
376
  }
377
377
  }
378
- `)}}).outputs.gsplat}const lt=new Float32Array(1);class HQ{constructor(A){this.modifier=A,this.cache=new Map}apply(A){let I=this.cache.get(A);return I||(I=kA({index:"int"},{gsplat:_},({index:g})=>{const{gsplat:B}=A.apply({index:g});return this.modifier.apply({gsplat:B})}),this.cache.set(A,I)),I}}class Et{constructor(){this.scale=new nt({value:Number.NEGATIVE_INFINITY}),this.rotate=new Xt({value:new n.Quaternion(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new Ft({value:new n.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}apply(A){return BQ(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}applyDir(A){return iQ(A,{rotate:this.rotate})}applyGsplat(A){return qI(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const I=new n.Vector3,g=new n.Quaternion,B=new n.Vector3;A.decompose(B,g,I);const i=(I.x+I.y+I.z)/3;let e=!1;return i!==this.scale.value&&(this.scale.value=i,e=!0),B.equals(this.translate.value)||(this.translate.value.copy(B),e=!0),g.equals(this.rotate.value)||(this.rotate.value.copy(g),e=!0),e}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class $t extends n.Object3D{constructor({numSplats:A,generator:I,construct:g,update:B}){if(super(),this.numSplats=A??0,this.generator=I,this.frameUpdate=B,this.version=0,g){const i=g(this);Object.assign(this,i)}}updateVersion(){this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}const At=class At extends $t{constructor(A={}){const I=new Et,g=new Et,B=new Et,i=new Et,e=new Xt({value:new n.Vector4(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY)}),Q=new nt({value:0}),s=new nt({value:0}),E={transform:I,viewToWorld:g,worldToView:B,viewToObject:i,recolor:e,time:Q,deltaTime:s};if(super({update:({time:a,deltaTime:C,viewToWorld:o,globalEdits:r})=>this.update({time:a,deltaTime:C,viewToWorld:o,globalEdits:r})}),this.isInitialized=!1,this.recolor=new n.Color(1,1,1),this.opacity=1,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.packedSplats=A.packedSplats??new HA,this.numSplats=this.packedSplats.numSplats,this.editable=A.editable??!0,this.onFrame=A.onFrame,this.context=E,this.objectModifier=A.objectModifier,this.worldModifier=A.worldModifier,this.updateGenerator(),A.url||A.fileBytes||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const a=A.onLoad(this);a instanceof Promise&&await a}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const a=A.onLoad(this);a instanceof Promise&&(this.initialized=a.then(()=>this))}}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:i,maxSplats:e,constructSplats:Q}=A;if(I||g||Q){const s={url:I,fileBytes:g,fileType:B,fileName:i,maxSplats:e,construct:Q};this.packedSplats.reinitialize(s)}this.packedSplats&&(await this.packedSplats.initialized,this.numSplats=this.packedSplats.numSplats,this.updateGenerator())}static async staticInitialize(){await ag(),At.isStaticInitialized=!0}pushSplat(A,I,g,B,i){this.packedSplats.pushSplat(A,I,g,B,i)}forEachSplat(A){this.packedSplats.forEachSplat(A)}dispose(){this.packedSplats.dispose()}constructGenerator(A){const{transform:I,viewToObject:g,recolor:B}=A,i=kA({index:"int"},{gsplat:_},({index:e})=>{if(!e)throw new Error("index is undefined");let Q=bt(this.packedSplats.dyno,e);if(this.maxSh>=1){const{sh1Texture:E,sh2Texture:a,sh3Texture:C}=this.ensureShTextures();if(E){const o=g.translate,{center:r}=at(Q).outputs,h=de(Gt(r,o));let c=Wn(Q,E,h);this.maxSh>=2&&a&&(c=fA(c,On(Q,a,h))),this.maxSh>=3&&C&&(c=fA(c,Vn(Q,C,h)));let{rgba:l}=at(Q).outputs;l=fA(l,pe(c,q("float",0))),Q=Bt({gsplat:Q,rgba:l})}}if(this.splatRgba){const E=bn(this.splatRgba.dyno,e);Q=Bt({gsplat:Q,rgba:E})}this.skinning&&(Q=this.skinning.modify(Q)),this.objectModifier&&(Q=this.objectModifier.apply({gsplat:Q}).gsplat),Q=I.applyGsplat(Q);const s=oA(B,at(Q).outputs.rgba);return Q=Bt({gsplat:Q,rgba:s}),this.rgbaDisplaceEdits&&(Q=this.rgbaDisplaceEdits.modify(Q)),this.worldModifier&&(Q=this.worldModifier.apply({gsplat:Q}).gsplat),{gsplat:Q}});this.generator=i}updateGenerator(){this.constructGenerator(this.context)}update({time:A,viewToWorld:I,deltaTime:g,globalEdits:B}){var l;this.numSplats=this.packedSplats.numSplats,this.context.time.value=A,this.context.deltaTime.value=g,At.dynoTime.value=A;const{transform:i,viewToObject:e,recolor:Q}=this.context;let s=i.update(this);this.context.viewToWorld.updateFromMatrix(I)&&this.enableViewToWorld&&(s=!0);const E=I.clone().invert();this.context.worldToView.updateFromMatrix(E)&&this.enableWorldToView&&(s=!0);const o=new n.Matrix4().compose(i.translate.value,i.rotate.value,new n.Vector3().setScalar(i.scale.value)).invert().multiply(I);e.updateFromMatrix(o)&&(this.enableViewToObject||this.packedSplats.extra.sh1)&&(s=!0);const r=new n.Vector4(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);r.equals(Q.value)||(Q.value.copy(r),s=!0);const h=this.editable?(this.edits??[]).concat(B):[];this.editable&&!this.edits&&this.traverseVisible(u=>{u instanceof qt&&h.push(u)}),h.sort((u,D)=>u.ordering-D.ordering);const c=h.map(u=>{if(u.sdfs!=null)return{edit:u,sdfs:u.sdfs};const D=[];return u.traverseVisible(y=>{y instanceof xQ&&D.push(y)}),{edit:u,sdfs:D}});if(c.length>0&&!this.rgbaDisplaceEdits){const u=c.length,D=c.reduce((y,d)=>y+d.sdfs.length,0);this.rgbaDisplaceEdits=new UQ({maxEdits:u,maxSdfs:D}),this.updateGenerator()}if(this.rgbaDisplaceEdits){const u=this.rgbaDisplaceEdits.update(c);s||(s=u.updated),u.dynoUpdated&&this.updateGenerator()}s&&this.updateVersion(),(l=this.onFrame)==null||l.call(this,{mesh:this,time:A,deltaTime:g})}raycast(A,I){if(!this.packedSplats.packedArray||!this.packedSplats.numSplats)return;const{near:g,far:B,ray:i}=A,e=this.matrixWorld.clone().invert(),Q=new n.Matrix3().setFromMatrix4(e),s=i.origin.clone().applyMatrix4(e),E=i.direction.clone().applyMatrix3(Q),a=new n.Vector3;e.decompose(new n.Vector3,new n.Quaternion,a),(a.x*a.y*a.z)**(1/3);const o=ls(s.x,s.y,s.z,E.x,E.y,E.z,g,B,this.packedSplats.numSplats,this.packedSplats.packedArray,!0);for(const r of o){const h=i.direction.clone().multiplyScalar(r).add(i.origin);I.push({distance:r,point:h,object:this})}}ensureShTextures(){if(!this.packedSplats.extra.sh1)return{};let A=this.packedSplats.extra.sh1Texture;if(!A){let B=this.packedSplats.extra.sh1;const{width:i,height:e,depth:Q,maxSplats:s}=FA(B.length/2);if(B.length<s*2){const a=new Uint32Array(s*2);a.set(B),this.packedSplats.extra.sh1=a,B=a}const E=new n.DataArrayTexture(B,i,e,Q);E.format=n.RGIntegerFormat,E.type=n.UnsignedIntType,E.internalFormat="RG32UI",E.needsUpdate=!0,A=new Yt({value:E,key:"sh1"}),this.packedSplats.extra.sh1Texture=A}if(!this.packedSplats.extra.sh2)return{sh1Texture:A};let I=this.packedSplats.extra.sh2Texture;if(!I){let B=this.packedSplats.extra.sh2;const{width:i,height:e,depth:Q,maxSplats:s}=FA(B.length/4);if(B.length<s*4){const a=new Uint32Array(s*4);a.set(B),this.packedSplats.extra.sh2=a,B=a}const E=new n.DataArrayTexture(B,i,e,Q);E.format=n.RGBAIntegerFormat,E.type=n.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,I=new Yt({value:E,key:"sh2"}),this.packedSplats.extra.sh2Texture=I}if(!this.packedSplats.extra.sh3)return{sh1Texture:A,sh2Texture:I};let g=this.packedSplats.extra.sh3Texture;if(!g){let B=this.packedSplats.extra.sh3;const{width:i,height:e,depth:Q,maxSplats:s}=FA(B.length/4);if(B.length<s*4){const a=new Uint32Array(s*4);a.set(B),this.packedSplats.extra.sh3=a,B=a}const E=new n.DataArrayTexture(B,i,e,Q);E.format=n.RGBAIntegerFormat,E.type=n.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,g=new Yt({value:E,key:"sh3"}),this.packedSplats.extra.sh3Texture=g}return{sh1Texture:A,sh2Texture:I,sh3Texture:g}}};At.staticInitialized=At.staticInitialize(),At.isStaticInitialized=!1,At.dynoTime=new nt({value:0});let qA=At;const vn=rA(`
378
+ `)}}).outputs.gsplat}const pt=new Float32Array(1);class Pr{constructor(A){this.modifier=A,this.cache=new Map}apply(A){let e=this.cache.get(A);return e||(e=GA({index:"int"},{gsplat:j},({index:s})=>{const{gsplat:i}=A.apply({index:s});return this.modifier.apply({gsplat:i})}),this.cache.set(A,e)),e}}class Ct{constructor(){this.scale=new ct({value:Number.NEGATIVE_INFINITY}),this.rotate=new ee({value:new B.Quaternion(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new Ft({value:new B.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}apply(A){return Cr(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}applyDir(A){return Er(A,{rotate:this.rotate})}applyGsplat(A){return Pe(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const e=new B.Vector3,s=new B.Quaternion,i=new B.Vector3;A.decompose(i,s,e);const n=(e.x+e.y+e.z)/3;let a=!1;return n!==this.scale.value&&(this.scale.value=n,a=!0),i.equals(this.translate.value)||(this.translate.value.copy(i),a=!0),s.equals(this.rotate.value)||(this.rotate.value.copy(s),a=!0),a}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class kt extends B.Object3D{constructor({numSplats:A,generator:e,construct:s,update:i}){if(super(),this.numSplats=A??0,this.generator=e,this.frameUpdate=i,this.version=0,s){const n=s(this);Object.assign(this,n)}}updateVersion(){this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}const et=class et extends kt{constructor(A={}){const e=new Ct,s=new Ct,i=new Ct,n=new Ct,a=new ee({value:new B.Vector4(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY)}),r=new ct({value:0}),g=new ct({value:0}),I={transform:e,viewToWorld:s,worldToView:i,viewToObject:n,recolor:a,time:r,deltaTime:g};if(super({update:({time:Q,deltaTime:o,viewToWorld:C,globalEdits:E})=>this.update({time:Q,deltaTime:o,viewToWorld:C,globalEdits:E})}),this.isInitialized=!1,this.recolor=new B.Color(1,1,1),this.opacity=1,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.packedSplats=A.packedSplats??new JA,this.numSplats=this.packedSplats.numSplats,this.editable=A.editable??!0,this.onFrame=A.onFrame,this.context=I,this.objectModifier=A.objectModifier,this.worldModifier=A.worldModifier,this.updateGenerator(),A.url||A.fileBytes||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const Q=A.onLoad(this);Q instanceof Promise&&await Q}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const Q=A.onLoad(this);Q instanceof Promise&&(this.initialized=Q.then(()=>this))}}async asyncInitialize(A){const{url:e,fileBytes:s,fileType:i,fileName:n,maxSplats:a,constructSplats:r}=A;if(e||s||r){const g={url:e,fileBytes:s,fileType:i,fileName:n,maxSplats:a,construct:r};this.packedSplats.reinitialize(g)}this.packedSplats&&(await this.packedSplats.initialized,this.numSplats=this.packedSplats.numSplats,this.updateGenerator())}static async staticInitialize(){await Ss(),et.isStaticInitialized=!0}pushSplat(A,e,s,i,n){this.packedSplats.pushSplat(A,e,s,i,n)}forEachSplat(A){this.packedSplats.forEachSplat(A)}dispose(){this.packedSplats.dispose()}constructGenerator(A){const{transform:e,viewToObject:s,recolor:i}=A,n=GA({index:"int"},{gsplat:j},({index:a})=>{if(!a)throw new Error("index is undefined");let r=zt(this.packedSplats.dyno,a);if(this.maxSh>=1){const{sh1Texture:I,sh2Texture:Q,sh3Texture:o}=this.ensureShTextures();if(I){const C=s.translate,{center:E}=Et(r).outputs,l=ka(Nt(E,C));let c=aC(r,I,l);this.maxSh>=2&&Q&&(c=mA(c,rC(r,Q,l))),this.maxSh>=3&&o&&(c=mA(c,gC(r,o,l)));let{rgba:h}=Et(r).outputs;h=mA(h,Ga(c,q("float",0))),r=at({gsplat:r,rgba:h})}}if(this.splatRgba){const I=$B(this.splatRgba.dyno,a);r=at({gsplat:r,rgba:I})}this.skinning&&(r=this.skinning.modify(r)),this.objectModifier&&(r=this.objectModifier.apply({gsplat:r}).gsplat),r=e.applyGsplat(r);const g=CA(i,Et(r).outputs.rgba);return r=at({gsplat:r,rgba:g}),this.rgbaDisplaceEdits&&(r=this.rgbaDisplaceEdits.modify(r)),this.worldModifier&&(r=this.worldModifier.apply({gsplat:r}).gsplat),{gsplat:r}});this.generator=n}updateGenerator(){this.constructGenerator(this.context)}update({time:A,viewToWorld:e,deltaTime:s,globalEdits:i}){var h;this.numSplats=this.packedSplats.numSplats,this.context.time.value=A,this.context.deltaTime.value=s,et.dynoTime.value=A;const{transform:n,viewToObject:a,recolor:r}=this.context;let g=n.update(this);this.context.viewToWorld.updateFromMatrix(e)&&this.enableViewToWorld&&(g=!0);const I=e.clone().invert();this.context.worldToView.updateFromMatrix(I)&&this.enableWorldToView&&(g=!0);const C=new B.Matrix4().compose(n.translate.value,n.rotate.value,new B.Vector3().setScalar(n.scale.value)).invert().multiply(e);a.updateFromMatrix(C)&&(this.enableViewToObject||this.packedSplats.extra.sh1)&&(g=!0);const E=new B.Vector4(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);E.equals(r.value)||(r.value.copy(E),g=!0);const l=this.editable?(this.edits??[]).concat(i):[];this.editable&&!this.edits&&this.traverseVisible(u=>{u instanceof Pt&&l.push(u)}),l.sort((u,p)=>u.ordering-p.ordering);const c=l.map(u=>{if(u.sdfs!=null)return{edit:u,sdfs:u.sdfs};const p=[];return u.traverseVisible(d=>{d instanceof qr&&p.push(d)}),{edit:u,sdfs:p}});if(c.length>0&&!this.rgbaDisplaceEdits){const u=c.length,p=c.reduce((d,y)=>d+y.sdfs.length,0);this.rgbaDisplaceEdits=new Kr({maxEdits:u,maxSdfs:p}),this.updateGenerator()}if(this.rgbaDisplaceEdits){const u=this.rgbaDisplaceEdits.update(c);g||(g=u.updated),u.dynoUpdated&&this.updateGenerator()}g&&this.updateVersion(),(h=this.onFrame)==null||h.call(this,{mesh:this,time:A,deltaTime:s})}raycast(A,e){if(!this.packedSplats.packedArray||!this.packedSplats.numSplats)return;const{near:s,far:i,ray:n}=A,a=this.matrixWorld.clone().invert(),r=new B.Matrix3().setFromMatrix4(a),g=n.origin.clone().applyMatrix4(a),I=n.direction.clone().applyMatrix3(r),Q=new B.Vector3;a.decompose(new B.Vector3,new B.Quaternion,Q),(Q.x*Q.y*Q.z)**(1/3);const C=Kg(g.x,g.y,g.z,I.x,I.y,I.z,s,i,this.packedSplats.numSplats,this.packedSplats.packedArray,!0);for(const E of C){const l=n.direction.clone().multiplyScalar(E).add(n.origin);e.push({distance:E,point:l,object:this})}}ensureShTextures(){if(!this.packedSplats.extra.sh1)return{};let A=this.packedSplats.extra.sh1Texture;if(!A){let i=this.packedSplats.extra.sh1;const{width:n,height:a,depth:r,maxSplats:g}=xA(i.length/2);if(i.length<g*2){const Q=new Uint32Array(g*2);Q.set(i),this.packedSplats.extra.sh1=Q,i=Q}const I=new B.DataArrayTexture(i,n,a,r);I.format=B.RGIntegerFormat,I.type=B.UnsignedIntType,I.internalFormat="RG32UI",I.needsUpdate=!0,A=new Ht({value:I,key:"sh1"}),this.packedSplats.extra.sh1Texture=A}if(!this.packedSplats.extra.sh2)return{sh1Texture:A};let e=this.packedSplats.extra.sh2Texture;if(!e){let i=this.packedSplats.extra.sh2;const{width:n,height:a,depth:r,maxSplats:g}=xA(i.length/4);if(i.length<g*4){const Q=new Uint32Array(g*4);Q.set(i),this.packedSplats.extra.sh2=Q,i=Q}const I=new B.DataArrayTexture(i,n,a,r);I.format=B.RGBAIntegerFormat,I.type=B.UnsignedIntType,I.internalFormat="RGBA32UI",I.needsUpdate=!0,e=new Ht({value:I,key:"sh2"}),this.packedSplats.extra.sh2Texture=e}if(!this.packedSplats.extra.sh3)return{sh1Texture:A,sh2Texture:e};let s=this.packedSplats.extra.sh3Texture;if(!s){let i=this.packedSplats.extra.sh3;const{width:n,height:a,depth:r,maxSplats:g}=xA(i.length/4);if(i.length<g*4){const Q=new Uint32Array(g*4);Q.set(i),this.packedSplats.extra.sh3=Q,i=Q}const I=new B.DataArrayTexture(i,n,a,r);I.format=B.RGBAIntegerFormat,I.type=B.UnsignedIntType,I.internalFormat="RGBA32UI",I.needsUpdate=!0,s=new Ht({value:I,key:"sh3"}),this.packedSplats.extra.sh3Texture=s}return{sh1Texture:A,sh2Texture:e,sh3Texture:s}}};et.staticInitialized=et.staticInitialize(),et.isStaticInitialized=!1,et.dynoTime=new ct({value:0});let zA=et;const sC=cA(`
379
379
  vec3 evaluateSH1(Gsplat gsplat, usampler2DArray sh1, vec3 viewDir) {
380
380
  // Extract sint7 values packed into 2 x uint32
381
381
  uvec2 packed = texelFetch(sh1, splatTexCoord(gsplat.index), 0).rg;
@@ -399,7 +399,7 @@ void main() {
399
399
  + sh1_1 * (0.4886025 * viewDir.z)
400
400
  + sh1_2 * (-0.4886025 * viewDir.x);
401
401
  }
402
- `),Zn=rA(`
402
+ `),iC=cA(`
403
403
  vec3 evaluateSH2(Gsplat gsplat, usampler2DArray sh2, vec3 viewDir) {
404
404
  // Extract sint8 values packed into 4 x uint32
405
405
  uvec4 packed = texelFetch(sh2, splatTexCoord(gsplat.index), 0);
@@ -435,7 +435,7 @@ void main() {
435
435
  + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)
436
436
  + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));
437
437
  }
438
- `),zn=rA(`
438
+ `),nC=cA(`
439
439
  vec3 evaluateSH3(Gsplat gsplat, usampler2DArray sh3, vec3 viewDir) {
440
440
  // Extract sint6 values packed into 4 x uint32
441
441
  uvec4 packed = texelFetch(sh3, splatTexCoord(gsplat.index), 0);
@@ -490,27 +490,27 @@ void main() {
490
490
  + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))
491
491
  + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));
492
492
  }
493
- `);function Wn(t,A,I){return Vt({inTypes:{gsplat:_,sh1:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:t,sh1:A,viewDir:I},globals:()=>[MA,vn],statements:({inputs:g,outputs:B})=>YA(`
494
- if (isGsplatActive(${g.gsplat}.flags)) {
495
- ${B.rgb} = evaluateSH1(${g.gsplat}, ${g.sh1}, ${g.viewDir});
493
+ `);function aC(t,A,e){return Ae({inTypes:{gsplat:j,sh1:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:t,sh1:A,viewDir:e},globals:()=>[kA,sC],statements:({inputs:s,outputs:i})=>LA(`
494
+ if (isGsplatActive(${s.gsplat}.flags)) {
495
+ ${i.rgb} = evaluateSH1(${s.gsplat}, ${s.sh1}, ${s.viewDir});
496
496
  } else {
497
- ${B.rgb} = vec3(0.0);
497
+ ${i.rgb} = vec3(0.0);
498
498
  }
499
- `)}).outputs.rgb}function On(t,A,I){return Vt({inTypes:{gsplat:_,sh2:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:t,sh2:A,viewDir:I},globals:()=>[MA,Zn],statements:({inputs:g,outputs:B})=>YA(`
500
- if (isGsplatActive(${g.gsplat}.flags)) {
501
- ${B.rgb} = evaluateSH2(${g.gsplat}, ${g.sh2}, ${g.viewDir});
499
+ `)}).outputs.rgb}function rC(t,A,e){return Ae({inTypes:{gsplat:j,sh2:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:t,sh2:A,viewDir:e},globals:()=>[kA,iC],statements:({inputs:s,outputs:i})=>LA(`
500
+ if (isGsplatActive(${s.gsplat}.flags)) {
501
+ ${i.rgb} = evaluateSH2(${s.gsplat}, ${s.sh2}, ${s.viewDir});
502
502
  } else {
503
- ${B.rgb} = vec3(0.0);
503
+ ${i.rgb} = vec3(0.0);
504
504
  }
505
- `)}).outputs.rgb}function Vn(t,A,I){return Vt({inTypes:{gsplat:_,sh3:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:t,sh3:A,viewDir:I},globals:()=>[MA,zn],statements:({inputs:g,outputs:B})=>YA(`
506
- if (isGsplatActive(${g.gsplat}.flags)) {
507
- ${B.rgb} = evaluateSH3(${g.gsplat}, ${g.sh3}, ${g.viewDir});
505
+ `)}).outputs.rgb}function gC(t,A,e){return Ae({inTypes:{gsplat:j,sh3:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:t,sh3:A,viewDir:e},globals:()=>[kA,nC],statements:({inputs:s,outputs:i})=>LA(`
506
+ if (isGsplatActive(${s.gsplat}.flags)) {
507
+ ${i.rgb} = evaluateSH3(${s.gsplat}, ${s.sh3}, ${s.viewDir});
508
508
  } else {
509
- ${B.rgb} = vec3(0.0);
509
+ ${i.rgb} = vec3(0.0);
510
510
  }
511
- `)}).outputs.rgb}const dt=class dt{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:e=>{e.enqueue(this.fileBytes.slice(0,65536)),e.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header
512
- `;for(;;){const{value:e,done:Q}=await I.read();if(Q)throw new Error("Failed to read header");this.header+=e;const s=this.header.indexOf(g);if(s>=0){this.header=this.header.slice(0,s+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let i=null;this.comments=[],this.header.trim().split(`
513
- `).forEach((e,Q)=>{const s=e.trim();if(Q===0){if(s!=="ply")throw new Error("Invalid PLY header");return}if(s.length===0)return;const E=s.split(" ");switch(E[0]){case"format":if(E[1]==="binary_little_endian")this.littleEndian=!0;else if(E[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${E[1]}`);if(E[2]!=="1.0")throw new Error(`Unsupported PLY version: ${E[2]}`);break;case"end_header":break;case"comment":this.comments.push(s.slice(8));break;case"element":{const a=E[1];i={name:a,count:Number.parseInt(E[2]),properties:{}},this.elements[a]=i;break}case"property":if(i==null)throw new Error("Property must be inside an element");E[1]==="list"?i.properties[E[4]]={isList:!0,type:E[3],countType:E[2]}:i.properties[E[2]]={isList:!1,type:E[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const i=this.elements[B],{count:e,properties:Q}=i,s={},E=[];for(const[C,o]of Object.entries(Q))o.isList?(s[C]=[],E.push(()=>{const r=s[C];r.length=gI[o.countType](g,I,this.littleEndian),I+=ut[o.countType];for(let h=0;h<r.length;h++)r[h]=gI[o.type](g,I,this.littleEndian),I+=ut[o.type]})):(s[C]=0,E.push(()=>{s[C]=gI[o.type](g,I,this.littleEndian),I+=ut[o.type]}));const a=A(i)??(()=>{});for(let C=0;C<e;C++){for(const o of E)o();a(C,s)}}}parseSplats(A,I){if(this.elements.vertex==null)throw new Error("No vertex element found");let g=!1;const B=[];let i=0,e=[],Q=[],s=[],E,a,C;function o(){const u=Xn[i];e=new Array(3).fill(null).flatMap((D,y)=>[0,1,2].map((d,w)=>`f_rest_${y+w*u/3}`)),Q=new Array(5).fill(null).flatMap((D,y)=>[0,1,2].map((d,w)=>`f_rest_${3+y+w*u/3}`)),s=new Array(7).fill(null).flatMap((D,y)=>[0,1,2].map((d,w)=>`f_rest_${8+y+w*u/3}`)),E=i>=1?new Float32Array(3*3):void 0,a=i>=2?new Float32Array(5*3):void 0,C=i>=3?new Float32Array(7*3):void 0}function r(u,D){if(!E)throw new Error("Missing sh1");for(const[y,d]of e.entries())E[y]=D[d]*8/255-4;if(a)for(const[y,d]of Q.entries())a[y]=D[d]*8/255-4;if(C)for(const[y,d]of s.entries())C[y]=D[d]*8/255-4;I==null||I(u,E,a,C)}function h(u){const{min_x:D,min_y:y,min_z:d,max_x:w,max_y:F,max_z:m,min_scale_x:f,min_scale_y:p,min_scale_z:x,max_scale_x:S,max_scale_y:G,max_scale_z:Y}=u.properties;if(!D||!y||!d||!w||!F||!m||!f||!p||!x||!S||!G||!Y)throw new Error("Missing PLY chunk properties");return g=!0,(M,k)=>{const{min_x:U,min_y:J,min_z:AA,max_x:Z,max_y:gA,max_z:tA,min_scale_x:V,min_scale_y:b,min_scale_z:P,max_scale_x:O,max_scale_y:X,max_scale_z:L,min_r:wA,min_g:EA,min_b:dA,max_r:pA,max_g:GA,max_b:cA}=k;B.push({min_x:U,min_y:J,min_z:AA,max_x:Z,max_y:gA,max_z:tA,min_scale_x:V,min_scale_y:b,min_scale_z:P,max_scale_x:O,max_scale_y:X,max_scale_z:L,min_r:wA,min_g:EA,min_b:dA,max_r:pA,max_g:GA,max_b:cA})}}function c(u){if(I&&u.name==="sh")return i=Bg(u.properties),o(),r;if(u.name!=="vertex")return null;const{packed_position:D,packed_rotation:y,packed_scale:d,packed_color:w}=u.properties;if(!D||!y||!d||!w)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const F=Math.sqrt(2);return(m,f)=>{const p=B[m>>>8];if(p==null)throw new Error("Missing PLY chunk");const{min_x:x,min_y:S,min_z:G,max_x:Y,max_y:M,max_z:k,min_scale_x:U,min_scale_y:J,min_scale_z:AA,max_scale_x:Z,max_scale_y:gA,max_scale_z:tA,min_r:V,min_g:b,min_b:P,max_r:O,max_g:X,max_b:L}=p,{packed_position:wA,packed_rotation:EA,packed_scale:dA,packed_color:pA}=f,GA=(wA>>>21&2047)/2047*(Y-x)+x,cA=(wA>>>11&1023)/1023*(M-S)+S,LA=(wA&2047)/2047*(k-G)+G,SA=((EA>>>20&1023)/1023-.5)*F,PA=((EA>>>10&1023)/1023-.5)*F,XA=((EA&1023)/1023-.5)*F,H=Math.sqrt(Math.max(0,1-SA*SA-PA*PA-XA*XA)),DA=EA>>>30,ZA=DA===0?SA:DA===1?H:PA,Mt=DA<=1?PA:DA===2?H:XA,AI=DA<=2?XA:H,NA=DA===0?H:SA,T=Math.exp((dA>>>21&2047)/2047*(Z-U)+U),zA=Math.exp((dA>>>11&1023)/1023*(gA-J)+J),dI=Math.exp((dA&2047)/2047*(tA-AA)+AA),pI=(pA>>>24&255)/255*((O??1)-(V??0))+(V??0),fI=(pA>>>16&255)/255*((X??1)-(b??0))+(b??0),FI=(pA>>>8&255)/255*((L??1)-(P??0))+(P??0),GI=(pA&255)/255;A(m,GA,cA,LA,T,zA,dI,ZA,Mt,AI,NA,GI,pI,fI,FI)}}const l=u=>{if(u.name==="chunk")return h(u);if(g)return c(u);if(u.name!=="vertex")return null;const{x:D,y,z:d,scale_0:w,scale_1:F,scale_2:m,rot_0:f,rot_1:p,rot_2:x,rot_3:S,opacity:G,f_dc_0:Y,f_dc_1:M,f_dc_2:k,red:U,green:J,blue:AA,alpha:Z}=u.properties;if(!D||!y||!d)throw new Error("Missing PLY properties: x, y, z");const gA=w&&F&&m,tA=f&&p&&x&&S,V=Z!=null?BI[Z.type]:1,b=U!=null?BI[U.type]:1,P=J!=null?BI[J.type]:1,O=AA!=null?BI[AA.type]:1;return i=Bg(u.properties),o(),(X,L)=>{const wA=gA?Math.exp(L.scale_0):dt.defaultPointScale,EA=gA?Math.exp(L.scale_1):dt.defaultPointScale,dA=gA?Math.exp(L.scale_2):dt.defaultPointScale,pA=tA?L.rot_1:0,GA=tA?L.rot_2:0,cA=tA?L.rot_3:0,LA=tA?L.rot_0:1,SA=G!=null?1/(1+Math.exp(-L.opacity)):Z!=null?L.alpha/V:1,PA=Y!=null?L.f_dc_0*II+.5:U!=null?L.red/b:1,XA=M!=null?L.f_dc_1*II+.5:J!=null?L.green/P:1,H=k!=null?L.f_dc_2*II+.5:AA!=null?L.blue/O:1;if(A(X,L.x,L.y,L.z,wA,EA,dA,pA,GA,cA,LA,SA,PA,XA,H),I&&E){if(E)for(const[DA,ZA]of e.entries())E[DA]=L[ZA];if(a)for(const[DA,ZA]of Q.entries())a[DA]=L[ZA];if(C)for(const[DA,ZA]of s.entries())C[DA]=L[ZA];I(X,E,a,C)}}};this.parseData(l)}injectRgba(A){let I=0;const g=this.data;if(g==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const B in this.elements){const i=this.elements[B],{count:e,properties:Q}=i,s=[];let E=0;const a=B==="vertex";if(a){for(const C of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!Q[C]||Q[C].type!=="float")throw new Error(`Can't injectRgba due to property: ${C}`)}for(const[C,o]of Object.entries(Q))if(o.isList)s.push(()=>{const r=gI[o.countType](g,I,this.littleEndian);I+=ut[o.countType],I+=r*ut[o.type]});else{if(a)if(C==="f_dc_0"||C==="f_dc_1"||C==="f_dc_2"){const r=Number.parseInt(C.slice(5));s.push(()=>{const h=(A[E+r]/255-.5)/II;gg[o.type](g,I,this.littleEndian,h)})}else C==="opacity"&&s.push(()=>{const r=Math.max(-100,Math.min(100,-Math.log(1/(A[E+3]/255)-1)));gg[o.type](g,I,this.littleEndian,r)});s.push(()=>{I+=ut[o.type]})}for(let C=0;C<e;C++){for(const o of s)o();a&&(E+=4)}}}};dt.defaultPointScale=.001;let vt=dt;const II=.28209479177387814,gI={char:(t,A,I)=>t.getInt8(A),uchar:(t,A,I)=>t.getUint8(A),short:(t,A,I)=>t.getInt16(A,I),ushort:(t,A,I)=>t.getUint16(A,I),int:(t,A,I)=>t.getInt32(A,I),uint:(t,A,I)=>t.getUint32(A,I),float:(t,A,I)=>t.getFloat32(A,I),double:(t,A,I)=>t.getFloat64(A,I)},gg={char:(t,A,I,g)=>{t.setInt8(A,g)},uchar:(t,A,I,g)=>{t.setUint8(A,g)},short:(t,A,I,g)=>{t.setInt16(A,g,I)},ushort:(t,A,I,g)=>{t.setUint16(A,g,I)},int:(t,A,I,g)=>{t.setInt32(A,g,I)},uint:(t,A,I,g)=>{t.setUint32(A,g,I)},float:(t,A,I,g)=>{t.setFloat32(A,g,I)},double:(t,A,I,g)=>{t.setFloat64(A,g,I)}},ut={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},BI={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},Pn={0:0,9:1,24:2,45:3},Xn={0:0,1:9,2:24,3:45};function Bg(t){let A=0;for(;t[`f_rest_${A}`];)A+=1;const I=Pn[A];if(I==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return I}const bQ='(function(){"use strict";let rI;const Ht=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&Ht.decode();let xg=null;function Si(){return(xg===null||xg.byteLength===0)&&(xg=new Uint8Array(rI.memory.buffer)),xg}function Ni(E,A){return E=E>>>0,Ht.decode(Si().subarray(E,E+A))}function pi(E,A,I){return rI.sort_splats(E,A,I)>>>0}function Mi(E,A,I,g,B,t,Q,i,C,s,o){return rI.raycast_splats(E,A,I,g,B,t,Q,i,C,s,o)}async function ki(E,A){if(typeof Response=="function"&&E instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(E,A)}catch(g){if(E.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",g);else throw g}const I=await E.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(E,A);return I instanceof WebAssembly.Instance?{instance:I,module:E}:I}}function Ri(){const E={};return E.wbg={},E.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},E.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},E.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},E.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},E.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},E.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},E.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,I,g){return new Float32Array(A,I>>>0,g>>>0)},E.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,I,g){return new Uint32Array(A,I>>>0,g>>>0)},E.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},E.wbg.__wbg_set_10bad9bee0e9c58b=function(A,I,g){A.set(I,g>>>0)},E.wbg.__wbg_set_d23661d19148b229=function(A,I,g){A.set(I,g>>>0)},E.wbg.__wbg_set_f4f1f0daa30696fc=function(A,I,g){A.set(I,g>>>0)},E.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,I,g){return A.subarray(I>>>0,g>>>0)},E.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,I,g){return A.subarray(I>>>0,g>>>0)},E.wbg.__wbindgen_init_externref_table=function(){const A=rI.__wbindgen_export_0,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)},E.wbg.__wbindgen_memory=function(){return rI.memory},E.wbg.__wbindgen_throw=function(A,I){throw new Error(Ni(A,I))},E}function mi(E,A){return rI=E.exports,vB.__wbindgen_wasm_module=A,xg=null,rI.__wbindgen_start(),rI}async function vB(E){if(rI!==void 0)return rI;typeof E<"u"&&(Object.getPrototypeOf(E)===Object.prototype?{module_or_path:E}=E:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof E>"u"&&(E=new URL("data:application/wasm;base64,AGFzbQEAAAAB9wEkYAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAR/f39/AGABbwFvYANvb38AYAFvAX9gAAF/YAAAYAd/f39/f39/AX9gAX0BfWAGf39/f39/AGAEf39/fwF/YAF/AW9gAAFvYAd/f39/f39/AGACf34Bf2ADf35+AGACf34AYAt9fX19fX19fX9vfwFvYAZ/f39/f38Bf2AFf398f38AYAR/fH9/AGAFf399f38AYAR/fX9/AGAFf39+f38AYAR/fn9/AGADf35+AX9gA39vbwF/YAJ9fQF9AvIEEQN3YmcdX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgACgN3YmcaX193YmdfbmV3XzlmZWU5N2E0MDliMzJiNjgACgN3YmcaX193Ymdfc2V0X2Y0ZjFmMGRhYTMwNjk2ZmMACwN3YmcdX193YmdfbGVuZ3RoXzhjZmQyYzY0MDlhZjg4YWQADAN3YmcxX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfZjFkZWFkNDRkMWZjNzIxMgAHA3diZxpfX3diZ19uZXdfZTNiMzIxZGNmZWY4OWZjNwAKA3diZxpfX3diZ19zZXRfZDIzNjYxZDE5MTQ4YjIyOQALA3diZx1fX3diZ19sZW5ndGhfNmNhNTI3NjY1ZDg5Njk0ZAAMA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9lNmI3ZTY5YWNkNGM3MzU0AAcDd2JnGl9fd2JnX3NldF8xMGJhZDliZWUwZTljNThiAAsDd2JnHV9fd2JnX2xlbmd0aF8zYjRmMDIyMTg4YWU4ZGI2AAwDd2JnH19fd2JnX3N1YmFycmF5Xzc2OWUxZTBmODFiYjI1OWIABwN3YmcfX193Ymdfc3ViYXJyYXlfM2FhZWVjODliYjI1NDRmMAAHA3diZyRfX3diZ19uZXd3aXRobGVuZ3RoXzVhNWVmZTMxM2NmZDU5ZjEAEwN3YmcQX193YmluZGdlbl90aHJvdwACA3diZxFfX3diaW5kZ2VuX21lbW9yeQAUA3diZx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4DwAG+AQUAAAYPAAUF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BSADOgAcIAUgAjYCGCAFIAUpAwA3AhBBlM/AACgCACAFQRBqQZjPwAAoAgAoAhQRAgBBkM/AACgCAEEBawUgBgs2AgBB6NLAAEEAOgAAIANFDQAACwALsgEBBn8CQAJAIABBhAFJDQAgANBvJgEQRSIBKAIMIQUgASgCECECIAFCADcCDCABKAIIIQMgASgCBCEEIAFCBDcCBCABKAIAIQYgAUEANgIAIAAgAkkNASAAIAJrIgAgA08NASAEIABBAnRqIAU2AgAgASACNgIQIAEgADYCDCABIAM2AgggASgCBCABIAQ2AgQgASgCACEAIAEgBjYCACAARQ0AIABBAnRBBBCwAQsPCwALqQEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBgACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAkEEELABDAELIAMgAkEEIAFBAnQiAhCXASIFRQ0CCyAAIAE2AgQgACAFNgIAIAZBEGokAA8LQZiPwABBMhC5AQALQQQgAhCUAQALowEBAn8jAEEgayIDJAACQCABRQRAQQFBACACEMYBIQAMAQsgAyABNgIMIAMgADYCCCADQRBqIANBCGoQLSADKAIQIgEEQANAIAMoAhQhBCADKAIcRQRAIAEgBCACEMYBIQAMAwtBASEAIAIgASAEEJkBDQIgAkH9/wMQnAENAiADQRBqIANBCGoQLSADKAIQIgENAAsLQQAhAAsgA0EgaiQAIAALiwEBAX8CQCACQQBOBEACfyADKAIEBEACQCADKAIIIgRFBEAMAQsgAygCACAEIAEgAhCXAQwCCwsgASACRQ0AGkH9zsAALQAAGiACIAEQpgELIgMEQCAAIAI2AgggACADNgIEIABBADYCAA8LIAAgAjYCCCAAIAE2AgQMAQsgAEEANgIECyAAQQE2AgALqwEBAn8jAEEgayIBJAACQCAAKAIEIgJBA0YgAkECSXINAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIABBKEEEELABIAFBIGokAAuaAQECfyMAQSBrIgEkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIAFBIGokAAuSAQEEfyMAQRBrIgIkAEEBIQQCQCABKAIUIgNBJyABKAIYIgUoAhAiAREAAA0AIAJBBGogACgCAEGBAhAiAkAgAi0ABEGAAUYEQCADIAIoAgggAREAAEUNAQwCCyADIAItAA4iACACQQRqaiACLQAPIABrIAUoAgwRAQANAQsgA0EnIAERAAAhBAsgAkEQaiQAIAQLlQEBAn8jAEEgayIDJAACQCAAKAIEIgRBA0YgBEECSXINAAJAAkAgAC0AGEEBaw4CAgABCyADQQE2AgggA0GshcAANgIEIANCADcCECADIANBHGo2AgwgA0EEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiBEUNACAAKAIMIARBDGxBBBCwAQsgAEEoQQQQsAEgA0EgaiQAC4QBAQN/An8CQCAAKAIAIgFFDQADQAJAIAAoAggiAyAAKAIETw0AIAEgA2otAABBxQBHDQAgACADQQFqNgIIDAILAkAgAkUNACAAKAIQIgFFDQBB+aTAAEECIAEQxgFFDQBBAQ8LQQEgAEEBEBMNAhogAkEBayECIAAoAgAiAQ0ACwtBAAsLegEBfyMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQmQEMAQsgAkEQaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEYaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIUIAEoAhggAkEIahApCyACQSBqJAALSQEDfiAAIAFC/////w+DIgJCPn4iA0IAIgIgAUIgiEI+fnwiAUIghnwiBDcDACAAIAMgBFatIAEgAlStQiCGIAFCIIiEfDcDCAt8AQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQQI2AhwgBUG8rsAANgIYIAVCAjcCJCAFIAVBEGqtQoCAgICADIQ3AzggBSAFQQhqrUKAgICAkAyENwMwIAUgBUEwajYCICAFQRhqIAQQhAEAC3gBA38CQCAAKAIAIgFBgICAgHhHBEAgAUUNASAAKAIEIAFBARCwAQ8LIAAtAARBA0cNACAAKAIIIgAoAgAhASAAQQRqKAIAIgMoAgAiAgRAIAEgAhEEAAsgAygCBCICBEAgASACIAMoAggQsAELIABBDEEEELABCwvzAwIIfwF+IwBBEGsiAyQAIAAoAgQhBSAAKAIAIQAgASgCFEG4rMAAQQEgASgCGCgCDBEBACEEIANBBGoiAkEAOgAFIAIgBDoABCACIAE2AgAgBQRAA0AgAyAANgIMIANBDGohCCMAQUBqIgEkAEEBIQYCQCADQQRqIgQtAAQNACAELQAFIQkCQCAEKAIAIgIoAhwiB0EEcUUEQCAJQQFxRQ0BIAIoAhRB667AAEECIAIoAhgoAgwRAQBFDQEMAgsgCUEBcUUEQCACKAIUQfWuwABBASACKAIYKAIMEQEADQIgAigCHCEHCyABQQE6ABsgASACKQIUNwIMIAFBzK7AADYCNCABIAFBG2o2AhQgASACKQIINwIkIAIpAgAhCiABIAc2AjggASACKAIQNgIsIAEgAi0AIDoAPCABIAo3AhwgASABQQxqNgIwIAggAUEcakGAmcAAKAIAEQAADQEgASgCMEHwrsAAQQIgASgCNCgCDBEBACEGDAELIAggAkGAmcAAKAIAEQAAIQYLIARBAToABSAEIAY6AAQgAUFAayQAIABBAWohACAFQQFrIgUNAAsLQQEhACADQQRqIgEtAARFBEAgASgCACIAKAIUQfauwABBASAAKAIYKAIMEQEAIQALIAEgADoABCADQRBqJAAgAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0HYscAANgIIIANCAjcCFCADQoCAgIDwAiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhAEAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZitwAA2AgggA0ICNwIUIANCgICAgPACIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhCEAQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIM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AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIMIQMCQAJAAkACQCACKAIEDgIAAQILIAMNAUEBIQJBACEDDAILIAMNACACKAIAIgIoAgQhAyACKAIAIQIMAQsgAEGAgICAeDYCACAAIAE2AgwgAEHglsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALIAAgAzYCBCAAIAI2AgAgAEHElsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALJQAgAEUEQEGYj8AAQTIQuQEACyAAIAIgAyAEIAUgASgCEBEIAAsoACABIAAoAgAtAABBAnQiAEHkp8AAaigCACAAQdCnwABqKAIAEJkBCyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQEQkACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERIACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERwACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQER4ACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQESAACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARCwAQsLJwAgAEEcakEAIAJC2KGkg7Hi0d18URtBACABQpXX3ZjDl4qMC1EbCyEAIABFBEBBmI/AAEEyELkBAAsgACACIAMgASgCEBEDAAsfACAARQRAQZiPwABBMhC5AQALIAAgAiABKAIQEQAAC+MVAQx/EDMiBCABJgECfyAAIQYQMyIAIAImASMAQdAAayIIJAAgCCAANgIYIAggBDYCFCAIQRRqKAIAEMoBIQtBvM7AACgCAEUEQEHkzsAAQQA2AgBB2M7AAEEANgIAQczOwABBADYCAEHAzsAAQQA2AgBB4M7AACgCACEFQeDOwABBBDYCAEHczsAAKAIAIQ1B3M7AAEEANgIAQdTOwAAoAgAhA0HUzsAAQQQ2AgBB0M7AACgCACEJQdDOwABBADYCAEHIzsAAKAIAIQRByM7AAEECNgIAQcTOwAAoAgAhB0HEzsAAQQA2AgBBvM7AACgCACEAQbzOwABBATYCAAJAIABFDQAgBwRAIAQgB0EBdEECELABCyAJBEAgAyAJQQJ0QQQQsAELIA1FDQAgBSANQQJ0QQQQsAELCwJAAkACQAJAAkBBwM7AACgCAEUEQEHAzsAAQX82AgBBzM7AACgCACIEIAtJBEAgCyAEIgBrIgVBxM7AACgCACAAa0sEQEHEzsAAIAAgBUECQQIQTEHMzsAAKAIAIQALQcjOwAAoAgAiAyAAQQF0aiEHIAVBAk8EQCAHIARBf3MgC2pBAXQQVxogACALakEBdCAEQQF0ayADakECayEHIAAgBWpBAWshAAsgB0EAOwEAQczOwAAgAEEBajYCAAtB2M7AACgCACIEIAtJBEAgCyAEIgBrIgVB0M7AACgCACAAa0sEQEHQzsAAIAAgBUEEQQQQTEHYzsAAKAIAIQALQdTOwAAoAgAiAyAAQQJ0aiEHIAVBAk8EQCAHIARBf3MgC2pBAnQQVxogACALakECdCAEQQJ0ayADakEEayEHIAAgBWpBAWshAAsgB0EANgIAQdjOwAAgAEEBajYCAAtB5M7AACgCACIEQYD4AU0EQEGB+AEgBCIAayIDQdzOwAAoAgAgAGtLBEBB3M7AACAAIANBBEEEEExB5M7AACgCACEAC0HgzsAAKAIAIgcgAEECdCIFaiEDIARBgPgBRwR/IANBgOAHIARBAnQiA2sQVxogACAEa0GA+AFqIQAgBSADayAHakGA4AdqBSADC0EANgIAQeTOwAAgAEEBajYCAAsgCEEUaigCACUBQQAgBhALIQEQMyIAIAEmASAIIAA2AhxBzM7AACgCACIAIAZJDQFByM7AACgCACEFIwBBIGsiACQAIAAgCEEcaiIDKAIAEMoBIgQ2AgAgACAGNgIEIAQgBkcNBRCeASIHEJUBIgQlARABIQEQMyIJIAEmASAEQYQBTwRAIAQQWgsgCSUBIAMoAgAlASAFQQF2EAIgCUGEAU8EQCAJEFoLIAdBhAFPBEAgBxBaCyAAQSBqJAAgCEEIaiEJQQAhACMAQUBqIgokAAJAAkACfwJAIAZBzM7AACgCACIETQRAQcjOwAAoAgAhBEHkzsAAQQA2AgBB3M7AACgCAEGA+AFNBEBB3M7AAEEAQYH4AUEEQQQQTEHkzsAAKAIAIQALQeDOwAAoAgAiCyAAQQJ0IgVqQYDgBxBXQeTOwAAgAEGB+AFqIg02AgBBgOAHakEANgIAAkAgBgRAIAZBAXQhDiAEIQADQCAALwEAIgNBgPgBSQRAIAMgDU8NAyALIANBAnRqIgMgAygCAEEBajYCAAsgAEECaiEAIA5BAmsiDg0ACwsgCkEANgIIAkAgDUECSQ0AIAsgDUECdGpBCGsiACgCACEMIABBADYCACAKIAw2AgggACALRg0AIAVB+N8HaiIFQQJ2QQFqQQNxIgMEQCADQQJ0IQ4DQCAAQQRrIgAoAgAhAyAAIAw2AgAgCiADIAxqIgw2AgggDkEEayIODQALCyAFQQxJDQAgAEEQayEAA0AgAEEMaiIFKAIAIQMgBSAMNgIAIAogAyAMaiIHNgIIIABBCGoiBSgCACEDIAUgBzYCACAKIAMgB2oiBzYCCCAAQQRqIgUoAgAhAyAFIAc2AgAgCiADIAdqIgU2AgggACgCACEDIAAgBTYCACAKIAMgBWoiDDYCCCAAIAtGIABBEGshAEUNAAsLAkAgBgRAIAZBAXQhDkHUzsAAKAIAIQZB2M7AACgCACEHQQAhAANAIAQvAQAiA0GA+AFJBEAgAyANTw0DIAcgCyADQQJ0aiIFKAIAIgNNBEAgAyAHQbyCwAAQaQALIAYgA0ECdGogADYCACAFIAUoAgBBAWo2AgALIARBAmohBCAAQQFqIQAgDkECayIODQALCyANRQ0FIAsoAgAgDEcNA0EADAQLIAMgDUGsgsAAEGkACyADIA1BzILAABBpAAsgBiAEQdyBwAAQagALIApBAjYCHCAKQZyCwAA2AhggCkICNwIkIAogC61CgICAgPAChDcDOCAKIApBCGqtQoCAgIDwAoQ3AzAgCiAKQTBqNgIgIApBDGoiBiAKQRhqEDcjAEEgayIEJAAgBEEIaiEDIwBBIGsiBSQAAkACQAJAAkACQAJAQYjPwAAtAAAOAgABAgtBiM/AAEEBOgAACyADQQE2AgAMAQtBic/AAC0AACEAQYnPwABBAToAACAFIAA6AAcgAEEBRg0BIANBADoAFCADQQA2AgBBic/AAEEAOgAACyAFQSBqJAAMAQsgBUIANwIUIAVCgYCAgMAANwIMIAVB4JTAADYCCCAFQQdqIAVBCGoQfwALAn9B/c7AAC0AABpBKEEEEKYBIgAEQCAAQaCBwAA2AgAgACADKQIANwIEIAAgBikCADcCHCAAQQxqIANBCGopAgA3AgAgAEEUaiADQRBqKQIANwIAIABBJGogBkEIaigCADYCACAADAELQQRBKBDEAQALIQwgBEEgaiQAQQELIQAgCSAMNgIEIAkgADYCACAKQUBrJAAMAQtBAEEAQeyBwAAQaQALIAgoAgwhCSAIKAIIDQIgCUUNBEHYzsAAKAIAIgAgCUkNA0HUzsAAKAIAIQYgCCAIQRhqQQAgCRCxASIHNgIwIwBBIGsiACQAIAhBMGooAgAiBBDLASEDIAAgCTYCBCAAIAM2AgACQCADIAlGBEAQngEiBRCVASIDJQEgBiAJEAQhARAzIgYgASYBIAVBhAFPBEAgBRBaCyADQYQBTwRAIAMQWgsgBCAGQQAQrwEgBkGEAU8EQCAGEFoLIABBIGokAAwBCwwGCyAHQYQBSQ0EIAcQWgwECxBwAAsgBiAAQbyGwAAQagALIAggCTYCICAIQQE2AjQgCEHchsAANgIwIAhCATcCPCAIIAhBIGqtQoCAgICAA4Q3A0ggCCAIQcgAajYCOCAIQSRqIQNBACEAIAhBMGoiBigCDCEEAkACQAJAAkACQAJAAkAgBigCBA4CAAECCyAEDQFBASEHQQAhBkEBIQQMAwsgBEUNAQsgAyAGEDcMAwsgBigCACIEKAIEIgZBAEgNASAEKAIAIQcgBkUEQEEBIQRBACEGDAELQf3OwAAtAAAaQQEhACAGQQEQpgEiBEUNAQsgBCAHIAYQPCEAIAMgBjYCCCADIAA2AgQgAyAGNgIADAELIAAgBhCUAQALIAgoAiggCCgCLBC5AQALIAkgAEHMhsAAEGoACyAIKAIcIgBBhAFPBEAgABBaC0HAzsAAQcDOwAAoAgBBAWo2AgAgCCgCGCIAQYQBTwRAIAAQWgsgCCgCFCIAQYQBTwRAIAAQWgsgCEHQAGokACAJDAELIABBADYCCCAAIABBBGogAEEIahB+AAsLGgEBfyAAKAIAIgEEQCAAKAIEIAFBARCwAQsLFAAgASABIAAgACABXRsgACAAXBsLHAAgAEEANgIQIABCADcCCCAAQoCAgIDAADcCAAtGACAARQRAIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEH8qcAANgIIIABCBDcCECAAQQhqQZiqwAAQhAEACyAAIAEQxAEACxYBAW8gACUBEAAhARAzIgAgASYBIAALFgAgAEG4gMAANgIEIAAgAUEcajYCAAvWBgEGfwJ/AkACQAJAAkACQCAAQQRrIgUoAgAiBkF4cSIEQQRBCCAGQQNxIgcbIAFqTwRAIAdBACABQSdqIgkgBEkbDQECQAJAIAJBCU8EQCACIAMQNSIIDQFBAAwJCyADQcz/e0sNAUEQIANBC2pBeHEgA0ELSRshAQJAIAdFBEAgAUGAAkkgBCABQQRySXIgBCABa0GBgAhPcg0BDAkLIABBCGsiAiAEaiEHAkACQAJAAkAgASAESwRAIAdBzNLAACgCAEYNBCAHQcjSwAAoAgBGDQIgBygCBCIGQQJxDQUgBkF4cSIGIARqIgQgAUkNBSAHIAYQOyAEIAFrIgNBEEkNASAFIAEgBSgCAEEBcXJBAnI2AgAgASACaiIBIANBA3I2AgQgAiAEaiICIAIoAgRBAXI2AgQgASADEDAMDQsgBCABayIDQQ9LDQIMDAsgBSAEIAUoAgBBAXFyQQJyNgIAIAIgBGoiASABKAIEQQFyNgIEDAsLQcDSwAAoAgAgBGoiBCABSQ0CAkAgBCABayIDQQ9NBEAgBSAGQQFxIARyQQJyNgIAIAIgBGoiASABKAIEQQFyNgIEQQAhA0EAIQEMAQsgBSABIAZBAXFyQQJyNgIAIAEgAmoiASADQQFyNgIEIAIgBGoiAiADNgIAIAIgAigCBEF+cTYCBAtByNLAACABNgIAQcDSwAAgAzYCAAwKCyAFIAEgBkEBcXJBAnI2AgAgASACaiIBIANBA3I2AgQgByAHKAIEQQFyNgIEIAEgAxAwDAkLQcTSwAAoAgAgBGoiBCABSw0HCyADEBEiAUUNASABIABBfEF4IAUoAgAiAUEDcRsgAUF4cWoiASADIAEgA0kbEDwgABAlDAgLIAggACABIAMgASADSRsQPBogBSgCACICQXhxIgMgAUEEQQggAkEDcSICG2pJDQMgAkEAIAMgCUsbDQQgABAlCyAIDAYLQe2RwABBLkGcksAAEHgAC0GsksAAQS5B3JLAABB4AAtB7ZHAAEEuQZySwAAQeAALQaySwABBLkHcksAAEHgACyAFIAEgBkEBcXJBAnI2AgAgASACaiICIAQgAWsiAUEBcjYCBEHE0sAAIAE2AgBBzNLAACACNgIAIAAMAQsgAAsLGQAgASgCFEGGrMAAQQ4gASgCGCgCDBEBAAsWACAAKAIUIAEgAiAAKAIYKAIMEQEACxQAIAAoAgAgASAAKAIEKAIQEQAACxQAIAAoAgAgASAAKAIEKAIMEQAACxQAIAAoAhQgASAAKAIYKAIQEQAAC84IAQV/IwBB8ABrIgUkACAFIAM2AgwgBSACNgIIAkACQAJAAkACQAJAAn8gAAJ/AkAgAUGBAk8EQEEDIAAsAIACQb9/Sg0CGiAALAD/AUG/f0wNAUECDAILIAUgATYCFCAFIAA2AhBBAQwCCyAALAD+AUG/f0oLQf0BaiIGaiwAAEG/f0wNASAFIAY2AhQgBSAANgIQQQUhB0HJtsAACyEGIAUgBzYCHCAFIAY2AhggASACSSIHIAEgA0lyRQRAIAIgA0sNAiACRSABIAJNckUEQCAFQQxqIAVBCGogACACaiwAAEG/f0obKAIAIQMLIAUgAzYCICADIAEiAkkEQCADQQFqIgggA0EDayICQQAgAiADTRsiAkkNBAJAIAIgCEYNACAIIAJrIQcgACADaiwAAEG/f0oEQCAHQQFrIQYMAQsgAiADRg0AIAAgCGoiA0ECayIJLAAAQb9/SgRAIAdBAmshBgwBCyAJIAAgAmoiCEYNACADQQNrIgksAABBv39KBEAgB0EDayEGDAELIAggCUYNACADQQRrIgMsAABBv39KBEAgB0EEayEGDAELIAMgCEYNACAHQQVrIQYLIAIgBmohAgsCQCACRQ0AIAEgAksEQCAAIAJqLAAAQb9/Sg0BDAcLIAEgAkcNBgsgASACRg0EAn8CQAJAIAAgAmoiASwAACIAQQBIBEAgAS0AAUE/cSEGIABBH3EhAyAAQV9LDQEgA0EGdCAGciEADAILIAUgAEH/AXE2AiRBAQwCCyABLQACQT9xIAZBBnRyIQYgAEFwSQRAIAYgA0EMdHIhAAwBCyADQRJ0QYCA8ABxIAEtAANBP3EgBkEGdHJyIgBBgIDEAEYNBgsgBSAANgIkQQEgAEGAAUkNABpBAiAAQYAQSQ0AGkEDQQQgAEGAgARJGwshACAFIAI2AiggBSAAIAJqNgIsIAVBBTYCNCAFQdS3wAA2AjAgBUIFNwI8IAUgBUEYaq1CgICAgJAMhDcDaCAFIAVBEGqtQoCAgICQDIQ3A2AgBSAFQShqrUKAgICAsAyENwNYIAUgBUEkaq1CgICAgMAMhDcDUCAFIAVBIGqtQoCAgIDwAoQ3A0gMBgsgBSACIAMgBxs2AiggBUEDNgI0IAVBlLjAADYCMCAFQgM3AjwgBSAFQRhqrUKAgICAkAyENwNYIAUgBUEQaq1CgICAgJAMhDcDUCAFIAVBKGqtQoCAgIDwAoQ3A0gMBQsgACABQQAgBiAEEJ0BAAsgBUEENgI0IAVB9LbAADYCMCAFQgQ3AjwgBSAFQRhqrUKAgICAkAyENwNgIAUgBUEQaq1CgICAgJAMhDcDWCAFIAVBDGqtQoCAgIDwAoQ3A1AgBSAFQQhqrUKAgICA8AKENwNIDAMLIAIgCEHAuMAAEGsACyAEELMBAAsgACABIAIgASAEEJ0BAAsgBSAFQcgAajYCOCAFQTBqIAQQhAEACxQCAW8BfxAPIQAQMyIBIAAmASABCxMAIABBKDYCBCAAQYCAwAA2AgALEwAgAEH0gMAANgIEIAAgATYCAAsTACAAQSg2AgQgAEGMhMAANgIACyEAIABCnJzu3svC7uAnNwMIIABCtJOr5e2OzP6efzcDAAsiACAAQvLlnerun8WVjn83AwggAEKIoIuQ+YC1oqF/NwMACxAAIAAoAgQgACgCCCABEBwLEQAgACgCBCAAKAIIIAEQxgELGQACfyABQQlPBEAgASAAEDUMAQsgABARCwsiACAAQu26rbbNhdT14wA3AwggAEL4gpm9le7Gxbl/NwMACyAAIABC2KGkg7Hi0d18NwMIIABCldfdmMOXiowLNwMACxEAIAAoAgAgACgCBCABEMYBCxMAIABBtJbAADYCBCAAIAE2AgALEQAgASAAKAIAIAAoAgQQmQELEAAgACgCACAAKAIEIAEQHAsQACABIAAoAgAgACgCBBAeCxAAIAEoAhQgASgCGCAAECkLDgAgACUBIAElASACEAYLXwEBfwJAAkAgAEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpPBEAgAkEAIAMgAUEnaksbDQEgABAlDAILQe2RwABBLkGcksAAEHgAC0GsksAAQS5B3JLAABB4AAsLHQEBbyAAKAIAJQEgASACEAwhAxAzIgAgAyYBIAALCwAgACgCACABEEILDgBBuazAAEErIAAQeAALyQICBH8CfiAAKQMAIQYjAEEgayIDJABBFCEAAkAgBkKQzgBUBEAgBiEHDAELA0AgA0EMaiAAaiICQQRrIAYgBkKQzgCAIgdCkM4Afn2nIgRB//8DcUHkAG4iBUEBdEGer8AAai8AADsAACACQQJrIAQgBUHkAGxrQf//A3FBAXRBnq/AAGovAAA7AAAgAEEEayEAIAZC/8HXL1YgByEGDQALCwJAIAdC4wBYBEAgB6chAgwBCyAAQQJrIgAgA0EMamogB6ciAiACQf//A3FB5ABuIgJB5ABsa0H//wNxQQF0QZ6vwABqLwAAOwAACwJAIAJBCk8EQCAAQQJrIgAgA0EMamogAkEBdEGer8AAai8AADsAAAwBCyAAQQFrIgAgA0EMamogAkEwcjoAAAsgAUEBQQAgA0EMaiAAakEUIABrECEgA0EgaiQACw0AIABB/IjAACABECkLDgAgAUGUicAAQQUQmQELpwMCB38BfiAAKAIAIQAjAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQIAIAIgAkHIAGqtQoCAgICABIQ3AyhBASEDIAJBATYCNCACQcSLwAA2AjAgAkIBNwI8IAIgAikDIDcCSCACIAJBKGo2AjgCQCABKAIUIgcgASgCGCIIIAJBMGoQKQ0AIAEtABxBBHFFBEBBACEDDAELIAJBGGogACAAKAIAKAIEEQIAIAJBKGqtQoCAgICABIQhCSACKAIcIQQgAigCGCEFQQAhAEEBIQYDQAJAIABBAXEEQCAEIQEgBSEADAELIAUhACAEIQEDQCAARQRAQQAhAwwECyACQRBqIAAgASgCGBECACACKAIUIQEgAigCECEAIAZBAWsiBg0ACwsgAEEARyEDIABFDQEgAkEIaiAAIAEoAhgRAgAgAigCDCEEIAIoAgghBSACIAE2AiwgAiAANgIoQQEhACACQQE2AjQgAkHQi8AANgIwIAJCATcCPCACIAk3A0ggAiACQcgAajYCOEEAIQYgByAIIAJBMGoQKUUNAAsLIAJB0ABqJAAgAwsNACAAQeSNwAAgARApCwkAIAAgARAOAAspAAJ/IAAoAgAtAABFBEAgAUH5sMAAQQUQHgwBCyABQf6wwABBBBAeCwsNACAAQayRwAAgARApC+4BAQZ/An8gACgCACECIwBBgAFrIgQkACABKAIEIQcgASgCACEGIAEoAhwiBSEAAkAgBUEEcUUNACAFQQhyIQAgBg0AIAFCgYCAgKABNwIACyABIABBBHI2AhxBACEAA0AgACAEakH/AGogAkEPcSIDQTByIANB1wBqIANBCkkbOgAAIABBAWshACACQRBJIAJBBHYhAkUNAAsgAEGAAWoiAkGBAUkEQCABQZyvwABBAiAAIARqQYABakEAIABrECEgASAFNgIcIAEgBzYCBCABIAY2AgAgBEGAAWokAAwBCyACQYABQYyvwAAQaAALCwwAIAAgASkCADcDAAsNACABQfCYwABBAhAeCw0AIABBhJzAACABECkLDgAgAUGvm8AAQQUQmQELDgAgAUG8p8AAQRIQmQELDQAgAEHQqcAAIAEQKQsOACABQcipwABBBRCZAQsZACAAIAFBjM/AACgCACIAQTogABsRAgAACw0AIABBzK7AACABECkLCgAgAiAAIAEQHguQBQEHfwJAAn8CQCACIgUgACABa0sEQCABIAJqIQMgACACaiECIAAgBUEQSQ0CGiACQXxxIQRBACACQQNxIgZrIQcgBgRAIANBAWshAANAIAJBAWsiAiAALQAAOgAAIABBAWshACACIARLDQALCyAEIAUgBmsiBkF8cSIFayECIAMgB2oiA0EDcQRAIAVBAEwNAiADQQN0IgBBGHEhByADQXxxIghBBGshAUEAIABrQRhxIQkgCCgCACEAA0AgBEEEayIEIAAgCXQgASgCACIAIAd2cjYCACABQQRrIQEgAiAESQ0ACwwCCyAFQQBMDQEgASAGakEEayEBA0AgBEEEayIEIAEoAgA2AgAgAUEEayEBIAIgBEkNAAsMAQsCQCAFQRBJBEAgACECDAELIABBACAAa0EDcSIDaiEEIAMEQCAAIQIgASEAA0AgAiAALQAAOgAAIABBAWohACACQQFqIgIgBEkNAAsLIAQgBSADayIFQXxxIgZqIQICQCABIANqIgNBA3EEQCAGQQBMDQEgA0EDdCIAQRhxIQcgA0F8cSIIQQRqIQFBACAAa0EYcSEJIAgoAgAhAANAIAQgACAHdiABKAIAIgAgCXRyNgIAIAFBBGohASAEQQRqIgQgAkkNAAsMAQsgBkEATA0AIAMhAQNAIAQgASgCADYCACABQQRqIQEgBEEEaiIEIAJJDQALCyAFQQNxIQUgAyAGaiEBCyAFRQ0CIAIgBWohAANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIABJDQALDAILIAZBA3EiAEUNASADIAVrIQMgAiAAawshACADQQFrIQEDQCACQQFrIgIgAS0AADoA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YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwB0AxAATwAAAGgDAAA0AAAAdAMQAE8AAABvAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAAA4EEABLAAAAxAcAAB0AAAAOBBAASwAAAMwHAAAdAAAAHAAAAAwAAAAEAAAAHQAAAB4AAAAfAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnPJBBAASwAAAMAFAAANAAAAAAAAABAAAAAEAAAAIgAAACMAAAAkAAAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAAVAUQAF4AAABnBAAADgAAAAEAAAAAAAAAOiAAAMwFEAACAAAACgpDYXVzZWQgYnk6CgAAACUAAAAMAAAABAAAACYAAAAnAAAAHwAAAAoKc3RhY2sgYmFja3RyYWNlOlN0YWNrIGJhY2t0cmFjZToKABIGEAARAAAAUwBBuIzAAAvZBAEAAAAoAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQDJBBAASwAAAHsKAAAOAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc4gGEABMAAAALQoAACQAAAAAAAAAEAAAAAQAAAAiAAAAIwAAACQAAAAgICAgOiAAAAEAAAAAAAAAAAcQAAIAAAAgICAgICAgL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnMAGwcQAFwAAAD7GAAAAQAAAAAAAAAEAAAABAAAADUAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZMoHEAAqAAAAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMA/AcQAF8AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AABsCBAADgAAAPwHEABfAAAAegIAAA0AQZyRwAALlQ8EAAAABAAAADsAAAA6AAAAPAAAAAwAAAAEAAAAPQAAAD4AAAA/AAAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAMQIEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADECBAAKQAAAK4EAAANAAAAc3RkL3NyYy9iYWNrdHJhY2UucnNvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtgAkQACgAAAAkAAAAAAAAAAIAAACoCRAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAGwJEAAUAAAAigEAAB0AAABAAAAAEAAAAAQAAABBAAAAQgAAAAEAAAAAAAAAOiBzdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzABYKEAAZAAAA0AAAABMAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleEAKEAAgAAAAc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzaAoQACQAAAAUAAAACQAAAHN0ZC9zcmMvc3luYy9vbmNlLnJznAoQABQAAACeAAAAMgAAADx1bmtub3duPu+/vW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAMwKEAAVAAAA4QoQAA0AAABzdGQvc3JjL2FsbG9jLnJzAAsQABAAAABjAQAACQAAAAoAAAA8AAAADAAAAAQAAABDAAAAAAAAAAgAAAAEAAAARAAAAAAAAAAIAAAABAAAAEUAAABGAAAARwAAAEgAAABJAAAAEAAAAAQAAABKAAAASwAAAEwAAABNAAAAc3RkL3NyYy8uLi8uLi9iYWNrdHJhY2Uvc3JjL3N5bWJvbGl6ZS9tb2QucnN8CxAALAAAAGcBAAAwAAAAAQAAAAAAAAAUChAAAgAAACAtIAABAAAAAAAAAMgLEAADAAAAICAgICAgICAgICAgICAgICAgIGF0IAAAqAgQAAEAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAPwLEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHkwDBAAOAAAACgpAAAAAAAABAAAAAQAAABRAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnOEDBAAUAAAAKYAAAAFAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwDkDBAATwAAAMgFAAAUAAAA5AwQAE8AAADIBQAAIQAAAOQMEABPAAAAvAUAACEAAAAwMTIzNDU2Nzg5YWJjZGVmAAAAAAAAAAABAAAAUgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVFcnJvckVtcHR5SW52YWxpZERpZ2l0UG9zT3ZlcmZsb3dOZWdPdmVyZmxvd1plcm8AAAAAAAQAAAAEAAAAUwAAAFBhcnNlSW50RXJyb3JraW5kAAAAAAAAAAwAAAAEAAAAVAAAAFUAAABWAAAA5AwQAE8AAABMBAAAJAAAAOQMEABPAAAAvgEAADcAAABfWk4vcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvbGVnYWN5LnJzAAAAPw4QAC4AAAA9AAAACwAAAD8OEAAuAAAAOgAAAAsAAAA/DhAALgAAADYAAAALAAAAPw4QAC4AAABmAAAAHAAAAD8OEAAuAAAAbwAAACcAAAA/DhAALgAAAHAAAAAdAAAAPw4QAC4AAAByAAAAIQAAAD8OEAAuAAAAcwAAABoAAAA/DhAALgAAAHQAAAAZAAAAOjoAAD8OEAAuAAAAfgAAAB0AAAA/DhAALgAAALQAAAAmAAAAPw4QAC4AAAC1AAAAIQAAAD8OEAAuAAAAigAAAEkAAAA/DhAALgAAAIsAAAAfAAAAPw4QAC4AAACLAAAALwAAAEMAAAA/DhAALgAAAJ0AAAA1AAAALCkoPjwmKkA/DhAALgAAAIIAAAAsAAAAPw4QAC4AAACEAAAAJQAAAC4AAAA/DhAALgAAAIcAAAAlAAAAAAAAAAEAAAABAAAAVwAAAD8OEAAuAAAAcgAAAEgAAABfX1IvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvdjAucnMAAADXDxAAKgAAADIAAAATAAAA1w8QACoAAAAvAAAAEwAAANcPEAAqAAAAKwAAABMAQbygwAAL6QkBAAAAWAAAAGBmbXQ6OkVycm9yYHMgc2hvdWxkIGJlIGltcG9zc2libGUgd2l0aG91dCBhIGBmbXQ6OkZvcm1hdHRlcmAAAADXDxAAKgAAAEsAAAAOAAAA1w8QACoAAABaAAAAKAAAANcPEAAqAAAAigAAAA0AAABwdW55Y29kZXstfTDXDxAAKgAAAB4BAAAxAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdcPEAAqAAAAMQEAABYAAADXDxAAKgAAADQBAABHAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc3RyOjpmcm9tX3V0ZjgoKSA9ICB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGNoYXIsIGJ1dCAgY2hhcnMgd2VyZSBmb3VuZBgREAA5AAAAUREQAAQAAABVERAAIgAAAHcREAARAAAA1w8QACoAAABcAQAAGgAAAGJvb2xjaGFyc3RyaThpMTZpMzJpNjRpMTI4aXNpemV1OHUxNnUzMnU2NHUxMjh1c2l6ZWYzMmY2NCFfLi4uAADXDxAAKgAAAL8BAAAfAAAA1w8QACoAAAAeAgAAHgAAANcPEAAqAAAAIwIAACIAAADXDxAAKgAAACQCAAAlAAAA1w8QACoAAACHAgAAEQAAAHtpbnZhbGlkIHN5bnRheH17cmVjdXJzaW9uIGxpbWl0IHJlYWNoZWR9Pydmb3I8PiAsIFtdOjp7Y2xvc3VyZXNoaW06IyBhcyAgbXV0IGNvbnN0IDsgZHluICArIHVuc2FmZSBleHRlcm4gItcPEAAqAAAA1AMAAC0AAAAiIGZuKCAtPiAgPSBmYWxzZXRydWV7IHsgIH06IDB4ANcPEAAqAAAAygQAAC0AAAAubGx2bS4vcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvbGliLnJzAAAA+hIQACsAAABiAAAAGwAAAPoSEAArAAAAaQAAABMAAAABAAAAAAAAAHtzaXplIGxpbWl0IHJlYWNoZWR9AAAAAAAAAAABAAAAWQAAAGBmbXQ6OkVycm9yYCBmcm9tIGBTaXplTGltaXRlZEZtdEFkYXB0ZXJgIHdhcyBkaXNjYXJkZWQA+hIQACsAAABTAQAAHgAAAFNpemVMaW1pdEV4aGF1c3RlZAAABQAAAAwAAAALAAAACwAAAAQAAAC0DRAAuQ0QAMUNEADQDRAA2w0QAAIAAAAEAAAABAAAAAMAAAADAAAAAwAAAAQAAAACAAAABQAAAAUAAAAEAAAAAwAAAAMAAAAEAAAABAAAAAEAAAAEAAAABAAAAAMAAAADAAAAAgAAAAMAAAAEAAAAAwAAAAMAAAABAAAAwxEQALgREAC8ERAA7hEQAMAREADrERAAuBEQANcREADSERAA5hEQALgREADIERAA3BEQAM4READiERAA8hEQALgREAC4ERAAxREQANkREABwDBAA8xEQALgREADLERAA3xEQAPEREABFcnJvcgAAAFoAAAAMAAAABAAAAFsAAABcAAAAXQAAAGNhcGFjaXR5IG92ZXJmbG93AAAA6BQQABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5ycwQVEAAUAAAAGAAAAAUAQbCqwAALsAoBAAAAXgAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAjhUQABAAAAB+AgAADgAAAGZyb21fc3RyX3JhZGl4X2ludDogbXVzdCBsaWUgaW4gdGhlIHJhbmdlIGBbMiwgMzZdYCAtIGZvdW5kILAVEAA8AAAALi4wMTIzNDU2Nzg5YWJjZGVmQm9ycm93TXV0RXJyb3JhbHJlYWR5IGJvcnJvd2VkOiAAABQWEAASAAAAAQAAAAAAAABbY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAABkFhAAIAAAAIQWEAASAAAAPT0hPW1hdGNoZXNhc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAAsxYQABAAAADDFhAAFwAAANoWEAAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAALMWEAAQAAAA/BYQABAAAAAMFxAACQAAANoWEAAJAAAAOiAAAAEAAAAAAAAAOBcQAAIAAAAAAAAADAAAAAQAAABlAAAAZgAAAGcAAAAgICAgIHsgLCAgewosCn0gfQpdY29yZS9zcmMvZm10L251bS5ycwAAdxcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTljb3JlL3NyYy9mbXQvbW9kLnJzZmFsc2V0cnVlAABmGBAAEwAAAKMJAAAmAAAAZhgQABMAAACsCQAAGgAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2Yg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",self.location.href));const A=Ri();(typeof E=="string"||typeof Request=="function"&&E instanceof Request||typeof URL=="function"&&E instanceof URL)&&(E=fetch(E));const{instance:I,module:g}=await ki(await E,A);return mi(I,g)}var kA=Uint8Array,Ig=Uint16Array,xi=Int32Array,bt=new kA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Kt=new kA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Ui=new kA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),qt=function(E,A){for(var I=new Ig(31),g=0;g<31;++g)I[g]=A+=1<<E[g-1];for(var B=new xi(I[30]),g=1;g<30;++g)for(var t=I[g];t<I[g+1];++t)B[t]=t-I[g]<<5|g;return{b:I,r:B}},Tt=qt(bt,2),Zt=Tt.b,Yi=Tt.r;Zt[28]=258,Yi[258]=28;for(var Ji=qt(Kt,0),Li=Ji.b,OB=new Ig(32768),eA=0;eA<32768;++eA){var RI=(eA&43690)>>1|(eA&21845)<<1;RI=(RI&52428)>>2|(RI&13107)<<2,RI=(RI&61680)>>4|(RI&3855)<<4,OB[eA]=((RI&65280)>>8|(RI&255)<<8)>>1}for(var Ug=function(E,A,I){for(var g=E.length,B=0,t=new Ig(A);B<g;++B)E[B]&&++t[E[B]-1];var Q=new Ig(A);for(B=1;B<A;++B)Q[B]=Q[B-1]+t[B-1]<<1;var i;if(I){i=new Ig(1<<A);var C=15-A;for(B=0;B<g;++B)if(E[B])for(var s=B<<4|E[B],o=A-E[B],e=Q[E[B]-1]++<<o,a=e|(1<<o)-1;e<=a;++e)i[OB[e]>>C]=s}else for(i=new Ig(g),B=0;B<g;++B)E[B]&&(i[B]=OB[Q[E[B]-1]++]>>15-E[B]);return i},Yg=new kA(288),eA=0;eA<144;++eA)Yg[eA]=8;for(var eA=144;eA<256;++eA)Yg[eA]=9;for(var eA=256;eA<280;++eA)Yg[eA]=7;for(var eA=280;eA<288;++eA)Yg[eA]=8;for(var zt=new kA(32),eA=0;eA<32;++eA)zt[eA]=5;var Hi=Ug(Yg,9,1),bi=Ug(zt,5,1),VB=function(E){for(var A=E[0],I=1;I<E.length;++I)E[I]>A&&(A=E[I]);return A},tI=function(E,A,I){var g=A/8|0;return(E[g]|E[g+1]<<8)>>(A&7)&I},XB=function(E,A){var I=A/8|0;return(E[I]|E[I+1]<<8|E[I+2]<<16)>>(A&7)},Wt=function(E){return(E+7)/8|0},gB=function(E,A,I){return(A==null||A<0)&&(A=0),(I==null||I>E.length)&&(I=E.length),new kA(E.subarray(A,I))},Ki=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],AI=function(E,A,I){var g=new Error(A||Ki[E]);if(g.code=E,Error.captureStackTrace&&Error.captureStackTrace(g,AI),!I)throw g;return g},qi=function(E,A,I,g){var B=E.length,t=0;if(!B||A.f&&!A.l)return I||new kA(0);var Q=!I,i=Q||A.i!=2,C=A.i;Q&&(I=new kA(B*3));var s=function(mA){var xA=I.length;if(mA>xA){var nA=new kA(Math.max(xA*2,mA));nA.set(I),I=nA}},o=A.f||0,e=A.p||0,a=A.b||0,n=A.l,r=A.d,D=A.m,l=A.n,y=B*8;do{if(!n){o=tI(E,e,1);var w=tI(E,e+1,3);if(e+=3,w)if(w==1)n=Hi,r=bi,D=9,l=5;else if(w==2){var x=tI(E,e,31)+257,k=tI(E,e+10,15)+4,S=x+tI(E,e+5,31)+1;e+=14;for(var N=new kA(S),H=new kA(19),U=0;U<k;++U)H[Ui[U]]=tI(E,e+U*3,7);e+=k*3;for(var m=VB(H),J=(1<<m)-1,K=Ug(H,m,1),U=0;U<S;){var z=K[tI(E,e,J)];e+=z&15;var u=z>>4;if(u<16)N[U++]=u;else{var T=0,W=0;for(u==16?(W=3+tI(E,e,3),e+=2,T=N[U-1]):u==17?(W=3+tI(E,e,7),e+=3):u==18&&(W=11+tI(E,e,127),e+=7);W--;)N[U++]=T}}var BA=N.subarray(0,x),AA=N.subarray(x);D=VB(BA),l=VB(AA),n=Ug(BA,D,1),r=Ug(AA,l,1)}else AI(1);else{var u=Wt(e)+4,G=E[u-4]|E[u-3]<<8,M=u+G;if(M>B){C&&AI(0);break}i&&s(a+G),I.set(E.subarray(u,M),a),A.b=a+=G,A.p=e=M*8,A.f=o;continue}if(e>y){C&&AI(0);break}}i&&s(a+131072);for(var CA=(1<<D)-1,QA=(1<<l)-1,EA=e;;EA=e){var T=n[XB(E,e)&CA],IA=T>>4;if(e+=T&15,e>y){C&&AI(0);break}if(T||AI(2),IA<256)I[a++]=IA;else if(IA==256){EA=e,n=null;break}else{var _=IA-254;if(IA>264){var U=IA-257,O=bt[U];_=tI(E,e,(1<<O)-1)+Zt[U],e+=O}var v=r[XB(E,e)&QA],Z=v>>4;v||AI(3),e+=v&15;var AA=Li[Z];if(Z>3){var O=Kt[Z];AA+=XB(E,e)&(1<<O)-1,e+=O}if(e>y){C&&AI(0);break}i&&s(a+131072);var RA=a+_;if(a<AA){var SA=t-AA,NA=Math.min(AA,RA);for(SA+a<0&&AI(3);a<NA;++a)I[a]=g[SA+a]}for(;a<RA;++a)I[a]=I[a-AA]}}A.l=n,A.p=EA,A.b=a,A.f=o,n&&(o=1,A.m=D,A.d=r,A.n=l)}while(!o);return a!=I.length&&Q?gB(I,0,a):I.subarray(0,a)},Ti=new kA(0),Zi=function(E){(E[0]!=31||E[1]!=139||E[2]!=8)&&AI(6,"invalid gzip data");var A=E[3],I=10;A&4&&(I+=(E[10]|E[11]<<8)+2);for(var g=(A>>3&1)+(A>>4&1);g>0;g-=!E[I++]);return I+(A&2)},PB=function(){function E(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new kA(32768),this.p=new kA(0),g&&this.o.set(g)}return E.prototype.e=function(A){if(this.ondata||AI(5),this.d&&AI(4),!this.p.length)this.p=A;else if(A.length){var I=new kA(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},E.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=qi(this.p,this.s,this.o);this.ondata(gB(g,I,this.s.b),this.d),this.o=gB(g,this.s.b-32768),this.s.b=this.o.length,this.p=gB(this.p,this.s.p/8|0),this.s.p&=7},E.prototype.push=function(A,I){this.e(A),this.c(I)},E}(),vt=function(){function E(A,I){this.v=1,this.r=0,PB.call(this,A,I)}return E.prototype.push=function(A,I){if(PB.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?Zi(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}PB.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=Wt(this.s.p)+9,this.s={i:0},this.o=new kA(0),this.push(new kA(0),I))},E}(),zi=typeof TextDecoder<"u"&&new TextDecoder,Wi=0;try{zi.decode(Ti,{stream:!0}),Wi=1}catch{}/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */const Ot="172",jB=0,vi=1,Vt=1,Xt=100,Pt=204,jt=205,_t=3,Oi=0,$t=300,AQ=1e3,Jg=1001,IQ=1002,mI=1003,gQ=1006,Vi=1008,BB=1009,WI=1014,Xi=1015,tB=1023,Pi=1031,gg=1033,BQ="",QI="srgb",tQ="srgb-linear",QQ="linear",_B="srgb",Bg=7680,iQ=519,CQ=35044,ji="300 es",Lg=2e3,EQ=2001;class Hg{addEventListener(A,I){this._listeners===void 0&&(this._listeners={});const g=this._listeners;g[A]===void 0&&(g[A]=[]),g[A].indexOf(I)===-1&&g[A].push(I)}hasEventListener(A,I){if(this._listeners===void 0)return!1;const g=this._listeners;return g[A]!==void 0&&g[A].indexOf(I)!==-1}removeEventListener(A,I){if(this._listeners===void 0)return;const B=this._listeners[A];if(B!==void 0){const t=B.indexOf(I);t!==-1&&B.splice(t,1)}}dispatchEvent(A){if(this._listeners===void 0)return;const g=this._listeners[A.type];if(g!==void 0){A.target=this;const B=g.slice(0);for(let t=0,Q=B.length;t<Q;t++)B[t].call(this,A);A.target=null}}}const JA=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function bg(){const E=Math.random()*4294967295|0,A=Math.random()*4294967295|0,I=Math.random()*4294967295|0,g=Math.random()*4294967295|0;return(JA[E&255]+JA[E>>8&255]+JA[E>>16&255]+JA[E>>24&255]+"-"+JA[A&255]+JA[A>>8&255]+"-"+JA[A>>16&15|64]+JA[A>>24&255]+"-"+JA[I&63|128]+JA[I>>8&255]+"-"+JA[I>>16&255]+JA[I>>24&255]+JA[g&255]+JA[g>>8&255]+JA[g>>16&255]+JA[g>>24&255]).toLowerCase()}function $(E,A,I){return Math.max(A,Math.min(I,E))}function _i(E,A){return(E%A+A)%A}function $B(E,A,I){return(1-I)*E+I*A}function Kg(E,A){switch(A.constructor){case Float32Array:return E;case Uint32Array:return E/4294967295;case Uint16Array:return E/65535;case Uint8Array:return E/255;case Int32Array:return Math.max(E/2147483647,-1);case Int16Array:return Math.max(E/32767,-1);case Int8Array:return Math.max(E/127,-1);default:throw new Error("Invalid component type.")}}function ZA(E,A){switch(A.constructor){case Float32Array:return E;case Uint32Array:return Math.round(E*4294967295);case Uint16Array:return Math.round(E*65535);case Uint8Array:return Math.round(E*255);case Int32Array:return Math.round(E*2147483647);case Int16Array:return Math.round(E*32767);case Int8Array:return Math.round(E*127);default:throw new Error("Invalid component type.")}}class zA{constructor(A=0,I=0){zA.prototype.isVector2=!0,this.x=A,this.y=I}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,I){return this.x=A,this.y=I,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){const I=this.x,g=this.y,B=A.elements;return this.x=B[0]*I+B[3]*g+B[6],this.y=B[1]*I+B[4]*g+B[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,I){return this.x=$(this.x,A.x,I.x),this.y=$(this.y,A.y,I.y),this}clampScalar(A,I){return this.x=$(this.x,A,I),this.y=$(this.y,A,I),this}clampLength(A,I){const g=this.length();return this.divideScalar(g||1).multiplyScalar($(g,A,I))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(A){const I=Math.sqrt(this.lengthSq()*A.lengthSq());if(I===0)return Math.PI/2;const g=this.dot(A)/I;return Math.acos($(g,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const I=this.x-A.x,g=this.y-A.y;return I*I+g*g}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this}lerpVectors(A,I,g){return this.x=A.x+(I.x-A.x)*g,this.y=A.y+(I.y-A.y)*g,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this}rotateAround(A,I){const g=Math.cos(I),B=Math.sin(I),t=this.x-A.x,Q=this.y-A.y;return this.x=t*g-Q*B+A.x,this.y=t*B+Q*g+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class hI{constructor(A,I,g,B,t,Q,i,C,s){hI.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,I,g,B,t,Q,i,C,s)}set(A,I,g,B,t,Q,i,C,s){const o=this.elements;return o[0]=A,o[1]=B,o[2]=i,o[3]=I,o[4]=t,o[5]=C,o[6]=g,o[7]=Q,o[8]=s,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const I=this.elements,g=A.elements;return I[0]=g[0],I[1]=g[1],I[2]=g[2],I[3]=g[3],I[4]=g[4],I[5]=g[5],I[6]=g[6],I[7]=g[7],I[8]=g[8],this}extractBasis(A,I,g){return A.setFromMatrix3Column(this,0),I.setFromMatrix3Column(this,1),g.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const I=A.elements;return this.set(I[0],I[4],I[8],I[1],I[5],I[9],I[2],I[6],I[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){const g=A.elements,B=I.elements,t=this.elements,Q=g[0],i=g[3],C=g[6],s=g[1],o=g[4],e=g[7],a=g[2],n=g[5],r=g[8],D=B[0],l=B[3],y=B[6],w=B[1],u=B[4],G=B[7],M=B[2],x=B[5],k=B[8];return t[0]=Q*D+i*w+C*M,t[3]=Q*l+i*u+C*x,t[6]=Q*y+i*G+C*k,t[1]=s*D+o*w+e*M,t[4]=s*l+o*u+e*x,t[7]=s*y+o*G+e*k,t[2]=a*D+n*w+r*M,t[5]=a*l+n*u+r*x,t[8]=a*y+n*G+r*k,this}multiplyScalar(A){const I=this.elements;return I[0]*=A,I[3]*=A,I[6]*=A,I[1]*=A,I[4]*=A,I[7]*=A,I[2]*=A,I[5]*=A,I[8]*=A,this}determinant(){const A=this.elements,I=A[0],g=A[1],B=A[2],t=A[3],Q=A[4],i=A[5],C=A[6],s=A[7],o=A[8];return I*Q*o-I*i*s-g*t*o+g*i*C+B*t*s-B*Q*C}invert(){const A=this.elements,I=A[0],g=A[1],B=A[2],t=A[3],Q=A[4],i=A[5],C=A[6],s=A[7],o=A[8],e=o*Q-i*s,a=i*C-o*t,n=s*t-Q*C,r=I*e+g*a+B*n;if(r===0)return this.set(0,0,0,0,0,0,0,0,0);const D=1/r;return A[0]=e*D,A[1]=(B*s-o*g)*D,A[2]=(i*g-B*Q)*D,A[3]=a*D,A[4]=(o*I-B*C)*D,A[5]=(B*t-i*I)*D,A[6]=n*D,A[7]=(g*C-s*I)*D,A[8]=(Q*I-g*t)*D,this}transpose(){let A;const I=this.elements;return A=I[1],I[1]=I[3],I[3]=A,A=I[2],I[2]=I[6],I[6]=A,A=I[5],I[5]=I[7],I[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const I=this.elements;return A[0]=I[0],A[1]=I[3],A[2]=I[6],A[3]=I[1],A[4]=I[4],A[5]=I[7],A[6]=I[2],A[7]=I[5],A[8]=I[8],this}setUvTransform(A,I,g,B,t,Q,i){const C=Math.cos(t),s=Math.sin(t);return this.set(g*C,g*s,-g*(C*Q+s*i)+Q+A,-B*s,B*C,-B*(-s*Q+C*i)+i+I,0,0,1),this}scale(A,I){return this.premultiply(At.makeScale(A,I)),this}rotate(A){return this.premultiply(At.makeRotation(-A)),this}translate(A,I){return this.premultiply(At.makeTranslation(A,I)),this}makeTranslation(A,I){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,I,0,0,1),this}makeRotation(A){const I=Math.cos(A),g=Math.sin(A);return this.set(I,-g,0,g,I,0,0,0,1),this}makeScale(A,I){return this.set(A,0,0,0,I,0,0,0,1),this}equals(A){const I=this.elements,g=A.elements;for(let B=0;B<9;B++)if(I[B]!==g[B])return!1;return!0}fromArray(A,I=0){for(let g=0;g<9;g++)this.elements[g]=A[g+I];return this}toArray(A=[],I=0){const g=this.elements;return A[I]=g[0],A[I+1]=g[1],A[I+2]=g[2],A[I+3]=g[3],A[I+4]=g[4],A[I+5]=g[5],A[I+6]=g[6],A[I+7]=g[7],A[I+8]=g[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const At=new hI;function $i(E){for(let A=E.length-1;A>=0;--A)if(E[A]>=65535)return!0;return!1}function sQ(E){return document.createElementNS("http://www.w3.org/1999/xhtml",E)}const eQ=new hI().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),oQ=new hI().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function AC(){const E={enabled:!0,workingColorSpace:tQ,spaces:{},convert:function(B,t,Q){return this.enabled===!1||t===Q||!t||!Q||(this.spaces[t].transfer===_B&&(B.r=lI(B.r),B.g=lI(B.g),B.b=lI(B.b)),this.spaces[t].primaries!==this.spaces[Q].primaries&&(B.applyMatrix3(this.spaces[t].toXYZ),B.applyMatrix3(this.spaces[Q].fromXYZ)),this.spaces[Q].transfer===_B&&(B.r=tg(B.r),B.g=tg(B.g),B.b=tg(B.b))),B},fromWorkingColorSpace:function(B,t){return this.convert(B,this.workingColorSpace,t)},toWorkingColorSpace:function(B,t){return this.convert(B,t,this.workingColorSpace)},getPrimaries:function(B){return this.spaces[B].primaries},getTransfer:function(B){return B===BQ?QQ:this.spaces[B].transfer},getLuminanceCoefficients:function(B,t=this.workingColorSpace){return B.fromArray(this.spaces[t].luminanceCoefficients)},define:function(B){Object.assign(this.spaces,B)},_getMatrix:function(B,t,Q){return B.copy(this.spaces[t].toXYZ).multiply(this.spaces[Q].fromXYZ)},_getDrawingBufferColorSpace:function(B){return this.spaces[B].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(B=this.workingColorSpace){return this.spaces[B].workingColorSpaceConfig.unpackColorSpace}},A=[.64,.33,.3,.6,.15,.06],I=[.2126,.7152,.0722],g=[.3127,.329];return E.define({[tQ]:{primaries:A,whitePoint:g,transfer:QQ,toXYZ:eQ,fromXYZ:oQ,luminanceCoefficients:I,workingColorSpaceConfig:{unpackColorSpace:QI},outputColorSpaceConfig:{drawingBufferColorSpace:QI}},[QI]:{primaries:A,whitePoint:g,transfer:_B,toXYZ:eQ,fromXYZ:oQ,luminanceCoefficients:I,outputColorSpaceConfig:{drawingBufferColorSpace:QI}}}),E}const iI=AC();function lI(E){return E<.04045?E*.0773993808:Math.pow(E*.9478672986+.0521327014,2.4)}function tg(E){return E<.0031308?E*12.92:1.055*Math.pow(E,.41666)-.055}let Qg;class IC{static getDataURL(A){if(/^data:/i.test(A.src)||typeof HTMLCanvasElement>"u")return A.src;let I;if(A instanceof HTMLCanvasElement)I=A;else{Qg===void 0&&(Qg=sQ("canvas")),Qg.width=A.width,Qg.height=A.height;const g=Qg.getContext("2d");A instanceof ImageData?g.putImageData(A,0,0):g.drawImage(A,0,0,A.width,A.height),I=Qg}return I.width>2048||I.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",A),I.toDataURL("image/jpeg",.6)):I.toDataURL("image/png")}static sRGBToLinear(A){if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap){const I=sQ("canvas");I.width=A.width,I.height=A.height;const g=I.getContext("2d");g.drawImage(A,0,0,A.width,A.height);const B=g.getImageData(0,0,A.width,A.height),t=B.data;for(let Q=0;Q<t.length;Q++)t[Q]=lI(t[Q]/255)*255;return g.putImageData(B,0,0),I}else if(A.data){const I=A.data.slice(0);for(let g=0;g<I.length;g++)I instanceof Uint8Array||I instanceof Uint8ClampedArray?I[g]=Math.floor(lI(I[g]/255)*255):I[g]=lI(I[g]);return{data:I,width:A.width,height:A.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),A}}let gC=0;class aQ{constructor(A=null){this.isSource=!0,Object.defineProperty(this,"id",{value:gC++}),this.uuid=bg(),this.data=A,this.dataReady=!0,this.version=0}set needsUpdate(A){A===!0&&this.version++}toJSON(A){const I=A===void 0||typeof A=="string";if(!I&&A.images[this.uuid]!==void 0)return A.images[this.uuid];const g={uuid:this.uuid,url:""},B=this.data;if(B!==null){let t;if(Array.isArray(B)){t=[];for(let Q=0,i=B.length;Q<i;Q++)B[Q].isDataTexture?t.push(It(B[Q].image)):t.push(It(B[Q]))}else t=It(B);g.url=t}return I||(A.images[this.uuid]=g),g}}function It(E){return typeof HTMLImageElement<"u"&&E instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&E instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&E instanceof ImageBitmap?IC.getDataURL(E):E.data?{data:Array.from(E.data),width:E.width,height:E.height,type:E.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let BC=0;class cI extends Hg{constructor(A=cI.DEFAULT_IMAGE,I=cI.DEFAULT_MAPPING,g=Jg,B=Jg,t=gQ,Q=Vi,i=tB,C=BB,s=cI.DEFAULT_ANISOTROPY,o=BQ){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:BC++}),this.uuid=bg(),this.name="",this.source=new aQ(A),this.mipmaps=[],this.mapping=I,this.channel=0,this.wrapS=g,this.wrapT=B,this.magFilter=t,this.minFilter=Q,this.anisotropy=s,this.format=i,this.internalFormat=null,this.type=C,this.offset=new zA(0,0),this.repeat=new zA(1,1),this.center=new zA(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new hI,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=o,this.userData={},this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(A=null){this.source.data=A}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(A){return this.name=A.name,this.source=A.source,this.mipmaps=A.mipmaps.slice(0),this.mapping=A.mapping,this.channel=A.channel,this.wrapS=A.wrapS,this.wrapT=A.wrapT,this.magFilter=A.magFilter,this.minFilter=A.minFilter,this.anisotropy=A.anisotropy,this.format=A.format,this.internalFormat=A.internalFormat,this.type=A.type,this.offset.copy(A.offset),this.repeat.copy(A.repeat),this.center.copy(A.center),this.rotation=A.rotation,this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrix.copy(A.matrix),this.generateMipmaps=A.generateMipmaps,this.premultiplyAlpha=A.premultiplyAlpha,this.flipY=A.flipY,this.unpackAlignment=A.unpackAlignment,this.colorSpace=A.colorSpace,this.renderTarget=A.renderTarget,this.isRenderTargetTexture=A.isRenderTargetTexture,this.userData=JSON.parse(JSON.stringify(A.userData)),this.needsUpdate=!0,this}toJSON(A){const I=A===void 0||typeof A=="string";if(!I&&A.textures[this.uuid]!==void 0)return A.textures[this.uuid];const g={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(A).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(g.userData=this.userData),I||(A.textures[this.uuid]=g),g}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==$t)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case AQ:A.x=A.x-Math.floor(A.x);break;case Jg:A.x=A.x<0?0:1;break;case IQ:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case AQ:A.y=A.y-Math.floor(A.y);break;case Jg:A.y=A.y<0?0:1;break;case IQ:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(A){A===!0&&this.pmremVersion++}}cI.DEFAULT_IMAGE=null,cI.DEFAULT_MAPPING=$t,cI.DEFAULT_ANISOTROPY=1;class qA{constructor(A=0,I=0,g=0,B=1){qA.prototype.isVector4=!0,this.x=A,this.y=I,this.z=g,this.w=B}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,I,g,B){return this.x=A,this.y=I,this.z=g,this.w=B,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;case 3:this.w=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this.w=A.w+I.w,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this.w+=A.w*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this.w=A.w-I.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){const I=this.x,g=this.y,B=this.z,t=this.w,Q=A.elements;return this.x=Q[0]*I+Q[4]*g+Q[8]*B+Q[12]*t,this.y=Q[1]*I+Q[5]*g+Q[9]*B+Q[13]*t,this.z=Q[2]*I+Q[6]*g+Q[10]*B+Q[14]*t,this.w=Q[3]*I+Q[7]*g+Q[11]*B+Q[15]*t,this}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this.w/=A.w,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);const I=Math.sqrt(1-A.w*A.w);return I<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/I,this.y=A.y/I,this.z=A.z/I),this}setAxisAngleFromRotationMatrix(A){let I,g,B,t;const C=A.elements,s=C[0],o=C[4],e=C[8],a=C[1],n=C[5],r=C[9],D=C[2],l=C[6],y=C[10];if(Math.abs(o-a)<.01&&Math.abs(e-D)<.01&&Math.abs(r-l)<.01){if(Math.abs(o+a)<.1&&Math.abs(e+D)<.1&&Math.abs(r+l)<.1&&Math.abs(s+n+y-3)<.1)return this.set(1,0,0,0),this;I=Math.PI;const u=(s+1)/2,G=(n+1)/2,M=(y+1)/2,x=(o+a)/4,k=(e+D)/4,S=(r+l)/4;return u>G&&u>M?u<.01?(g=0,B=.707106781,t=.707106781):(g=Math.sqrt(u),B=x/g,t=k/g):G>M?G<.01?(g=.707106781,B=0,t=.707106781):(B=Math.sqrt(G),g=x/B,t=S/B):M<.01?(g=.707106781,B=.707106781,t=0):(t=Math.sqrt(M),g=k/t,B=S/t),this.set(g,B,t,I),this}let w=Math.sqrt((l-r)*(l-r)+(e-D)*(e-D)+(a-o)*(a-o));return Math.abs(w)<.001&&(w=1),this.x=(l-r)/w,this.y=(e-D)/w,this.z=(a-o)/w,this.w=Math.acos((s+n+y-1)/2),this}setFromMatrixPosition(A){const I=A.elements;return this.x=I[12],this.y=I[13],this.z=I[14],this.w=I[15],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,I){return this.x=$(this.x,A.x,I.x),this.y=$(this.y,A.y,I.y),this.z=$(this.z,A.z,I.z),this.w=$(this.w,A.w,I.w),this}clampScalar(A,I){return this.x=$(this.x,A,I),this.y=$(this.y,A,I),this.z=$(this.z,A,I),this.w=$(this.w,A,I),this}clampLength(A,I){const g=this.length();return this.divideScalar(g||1).multiplyScalar($(g,A,I))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this.w+=(A.w-this.w)*I,this}lerpVectors(A,I,g){return this.x=A.x+(I.x-A.x)*g,this.y=A.y+(I.y-A.y)*g,this.z=A.z+(I.z-A.z)*g,this.w=A.w+(I.w-A.w)*g,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this.w=A[I+3],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A[I+3]=this.w,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this.w=A.getW(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class tC extends Hg{constructor(A=1,I=1,g={}){super(),this.isRenderTarget=!0,this.width=A,this.height=I,this.depth=1,this.scissor=new qA(0,0,A,I),this.scissorTest=!1,this.viewport=new qA(0,0,A,I);const B={width:A,height:I,depth:1};g=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:gQ,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},g);const t=new cI(B,g.mapping,g.wrapS,g.wrapT,g.magFilter,g.minFilter,g.format,g.type,g.anisotropy,g.colorSpace);t.flipY=!1,t.generateMipmaps=g.generateMipmaps,t.internalFormat=g.internalFormat,this.textures=[];const Q=g.count;for(let i=0;i<Q;i++)this.textures[i]=t.clone(),this.textures[i].isRenderTargetTexture=!0,this.textures[i].renderTarget=this;this.depthBuffer=g.depthBuffer,this.stencilBuffer=g.stencilBuffer,this.resolveDepthBuffer=g.resolveDepthBuffer,this.resolveStencilBuffer=g.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=g.depthTexture,this.samples=g.samples}get texture(){return this.textures[0]}set texture(A){this.textures[0]=A}set depthTexture(A){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),A!==null&&(A.renderTarget=this),this._depthTexture=A}get depthTexture(){return this._depthTexture}setSize(A,I,g=1){if(this.width!==A||this.height!==I||this.depth!==g){this.width=A,this.height=I,this.depth=g;for(let B=0,t=this.textures.length;B<t;B++)this.textures[B].image.width=A,this.textures[B].image.height=I,this.textures[B].image.depth=g;this.dispose()}this.viewport.set(0,0,A,I),this.scissor.set(0,0,A,I)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.scissor.copy(A.scissor),this.scissorTest=A.scissorTest,this.viewport.copy(A.viewport),this.textures.length=0;for(let g=0,B=A.textures.length;g<B;g++)this.textures[g]=A.textures[g].clone(),this.textures[g].isRenderTargetTexture=!0,this.textures[g].renderTarget=this;const I=Object.assign({},A.texture.image);return this.texture.source=new aQ(I),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,this.resolveDepthBuffer=A.resolveDepthBuffer,this.resolveStencilBuffer=A.resolveStencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class QC extends tC{constructor(A=1,I=1,g={}){super(A,I,g),this.isWebGLRenderTarget=!0}}class xI extends cI{constructor(A=null,I=1,g=1,B=1){super(null),this.isDataArrayTexture=!0,this.image={data:A,width:I,height:g,depth:B},this.magFilter=mI,this.minFilter=mI,this.wrapR=Jg,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(A){this.layerUpdates.add(A)}clearLayerUpdates(){this.layerUpdates.clear()}}class nQ extends QC{constructor(A=1,I=1,g=1,B={}){super(A,I,B),this.isWebGLArrayRenderTarget=!0,this.depth=g,this.texture=new xI(null,A,I,g),this.texture.isRenderTargetTexture=!0}}class uA{constructor(A=0,I=0,g=0,B=1){this.isQuaternion=!0,this._x=A,this._y=I,this._z=g,this._w=B}static slerpFlat(A,I,g,B,t,Q,i){let C=g[B+0],s=g[B+1],o=g[B+2],e=g[B+3];const a=t[Q+0],n=t[Q+1],r=t[Q+2],D=t[Q+3];if(i===0){A[I+0]=C,A[I+1]=s,A[I+2]=o,A[I+3]=e;return}if(i===1){A[I+0]=a,A[I+1]=n,A[I+2]=r,A[I+3]=D;return}if(e!==D||C!==a||s!==n||o!==r){let l=1-i;const y=C*a+s*n+o*r+e*D,w=y>=0?1:-1,u=1-y*y;if(u>Number.EPSILON){const M=Math.sqrt(u),x=Math.atan2(M,y*w);l=Math.sin(l*x)/M,i=Math.sin(i*x)/M}const G=i*w;if(C=C*l+a*G,s=s*l+n*G,o=o*l+r*G,e=e*l+D*G,l===1-i){const M=1/Math.sqrt(C*C+s*s+o*o+e*e);C*=M,s*=M,o*=M,e*=M}}A[I]=C,A[I+1]=s,A[I+2]=o,A[I+3]=e}static multiplyQuaternionsFlat(A,I,g,B,t,Q){const i=g[B],C=g[B+1],s=g[B+2],o=g[B+3],e=t[Q],a=t[Q+1],n=t[Q+2],r=t[Q+3];return A[I]=i*r+o*e+C*n-s*a,A[I+1]=C*r+o*a+s*e-i*n,A[I+2]=s*r+o*n+i*a-C*e,A[I+3]=o*r-i*e-C*a-s*n,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,I,g,B){return this._x=A,this._y=I,this._z=g,this._w=B,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,I=!0){const g=A._x,B=A._y,t=A._z,Q=A._order,i=Math.cos,C=Math.sin,s=i(g/2),o=i(B/2),e=i(t/2),a=C(g/2),n=C(B/2),r=C(t/2);switch(Q){case"XYZ":this._x=a*o*e+s*n*r,this._y=s*n*e-a*o*r,this._z=s*o*r+a*n*e,this._w=s*o*e-a*n*r;break;case"YXZ":this._x=a*o*e+s*n*r,this._y=s*n*e-a*o*r,this._z=s*o*r-a*n*e,this._w=s*o*e+a*n*r;break;case"ZXY":this._x=a*o*e-s*n*r,this._y=s*n*e+a*o*r,this._z=s*o*r+a*n*e,this._w=s*o*e-a*n*r;break;case"ZYX":this._x=a*o*e-s*n*r,this._y=s*n*e+a*o*r,this._z=s*o*r-a*n*e,this._w=s*o*e+a*n*r;break;case"YZX":this._x=a*o*e+s*n*r,this._y=s*n*e+a*o*r,this._z=s*o*r-a*n*e,this._w=s*o*e-a*n*r;break;case"XZY":this._x=a*o*e-s*n*r,this._y=s*n*e-a*o*r,this._z=s*o*r+a*n*e,this._w=s*o*e+a*n*r;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+Q)}return I===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,I){const g=I/2,B=Math.sin(g);return this._x=A.x*B,this._y=A.y*B,this._z=A.z*B,this._w=Math.cos(g),this._onChangeCallback(),this}setFromRotationMatrix(A){const I=A.elements,g=I[0],B=I[4],t=I[8],Q=I[1],i=I[5],C=I[9],s=I[2],o=I[6],e=I[10],a=g+i+e;if(a>0){const n=.5/Math.sqrt(a+1);this._w=.25/n,this._x=(o-C)*n,this._y=(t-s)*n,this._z=(Q-B)*n}else if(g>i&&g>e){const n=2*Math.sqrt(1+g-i-e);this._w=(o-C)/n,this._x=.25*n,this._y=(B+Q)/n,this._z=(t+s)/n}else if(i>e){const n=2*Math.sqrt(1+i-g-e);this._w=(t-s)/n,this._x=(B+Q)/n,this._y=.25*n,this._z=(C+o)/n}else{const n=2*Math.sqrt(1+e-g-i);this._w=(Q-B)/n,this._x=(t+s)/n,this._y=(C+o)/n,this._z=.25*n}return this._onChangeCallback(),this}setFromUnitVectors(A,I){let g=A.dot(I)+1;return g<Number.EPSILON?(g=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=g):(this._x=0,this._y=-A.z,this._z=A.y,this._w=g)):(this._x=A.y*I.z-A.z*I.y,this._y=A.z*I.x-A.x*I.z,this._z=A.x*I.y-A.y*I.x,this._w=g),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs($(this.dot(A),-1,1)))}rotateTowards(A,I){const g=this.angleTo(A);if(g===0)return this;const B=Math.min(1,I/g);return this.slerp(A,B),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,I){const g=A._x,B=A._y,t=A._z,Q=A._w,i=I._x,C=I._y,s=I._z,o=I._w;return this._x=g*o+Q*i+B*s-t*C,this._y=B*o+Q*C+t*i-g*s,this._z=t*o+Q*s+g*C-B*i,this._w=Q*o-g*i-B*C-t*s,this._onChangeCallback(),this}slerp(A,I){if(I===0)return this;if(I===1)return this.copy(A);const g=this._x,B=this._y,t=this._z,Q=this._w;let i=Q*A._w+g*A._x+B*A._y+t*A._z;if(i<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,i=-i):this.copy(A),i>=1)return this._w=Q,this._x=g,this._y=B,this._z=t,this;const C=1-i*i;if(C<=Number.EPSILON){const n=1-I;return this._w=n*Q+I*this._w,this._x=n*g+I*this._x,this._y=n*B+I*this._y,this._z=n*t+I*this._z,this.normalize(),this}const s=Math.sqrt(C),o=Math.atan2(s,i),e=Math.sin((1-I)*o)/s,a=Math.sin(I*o)/s;return this._w=Q*e+this._w*a,this._x=g*e+this._x*a,this._y=B*e+this._y*a,this._z=t*e+this._z*a,this._onChangeCallback(),this}slerpQuaternions(A,I,g){return this.copy(A).slerp(I,g)}random(){const A=2*Math.PI*Math.random(),I=2*Math.PI*Math.random(),g=Math.random(),B=Math.sqrt(1-g),t=Math.sqrt(g);return this.set(B*Math.sin(A),B*Math.cos(A),t*Math.sin(I),t*Math.cos(I))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,I=0){return this._x=A[I],this._y=A[I+1],this._z=A[I+2],this._w=A[I+3],this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._w,A}fromBufferAttribute(A,I){return this._x=A.getX(I),this._y=A.getY(I),this._z=A.getZ(I),this._w=A.getW(I),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class f{constructor(A=0,I=0,g=0){f.prototype.isVector3=!0,this.x=A,this.y=I,this.z=g}set(A,I,g){return g===void 0&&(g=this.z),this.x=A,this.y=I,this.z=g,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,I){return this.x=A.x*I.x,this.y=A.y*I.y,this.z=A.z*I.z,this}applyEuler(A){return this.applyQuaternion(rQ.setFromEuler(A))}applyAxisAngle(A,I){return this.applyQuaternion(rQ.setFromAxisAngle(A,I))}applyMatrix3(A){const I=this.x,g=this.y,B=this.z,t=A.elements;return this.x=t[0]*I+t[3]*g+t[6]*B,this.y=t[1]*I+t[4]*g+t[7]*B,this.z=t[2]*I+t[5]*g+t[8]*B,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const I=this.x,g=this.y,B=this.z,t=A.elements,Q=1/(t[3]*I+t[7]*g+t[11]*B+t[15]);return this.x=(t[0]*I+t[4]*g+t[8]*B+t[12])*Q,this.y=(t[1]*I+t[5]*g+t[9]*B+t[13])*Q,this.z=(t[2]*I+t[6]*g+t[10]*B+t[14])*Q,this}applyQuaternion(A){const I=this.x,g=this.y,B=this.z,t=A.x,Q=A.y,i=A.z,C=A.w,s=2*(Q*B-i*g),o=2*(i*I-t*B),e=2*(t*g-Q*I);return this.x=I+C*s+Q*e-i*o,this.y=g+C*o+i*s-t*e,this.z=B+C*e+t*o-Q*s,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const I=this.x,g=this.y,B=this.z,t=A.elements;return this.x=t[0]*I+t[4]*g+t[8]*B,this.y=t[1]*I+t[5]*g+t[9]*B,this.z=t[2]*I+t[6]*g+t[10]*B,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,I){return this.x=$(this.x,A.x,I.x),this.y=$(this.y,A.y,I.y),this.z=$(this.z,A.z,I.z),this}clampScalar(A,I){return this.x=$(this.x,A,I),this.y=$(this.y,A,I),this.z=$(this.z,A,I),this}clampLength(A,I){const g=this.length();return this.divideScalar(g||1).multiplyScalar($(g,A,I))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this}lerpVectors(A,I,g){return this.x=A.x+(I.x-A.x)*g,this.y=A.y+(I.y-A.y)*g,this.z=A.z+(I.z-A.z)*g,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,I){const g=A.x,B=A.y,t=A.z,Q=I.x,i=I.y,C=I.z;return this.x=B*C-t*i,this.y=t*Q-g*C,this.z=g*i-B*Q,this}projectOnVector(A){const I=A.lengthSq();if(I===0)return this.set(0,0,0);const g=A.dot(this)/I;return this.copy(A).multiplyScalar(g)}projectOnPlane(A){return gt.copy(this).projectOnVector(A),this.sub(gt)}reflect(A){return this.sub(gt.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const I=Math.sqrt(this.lengthSq()*A.lengthSq());if(I===0)return Math.PI/2;const g=this.dot(A)/I;return Math.acos($(g,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const I=this.x-A.x,g=this.y-A.y,B=this.z-A.z;return I*I+g*g+B*B}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,I,g){const B=Math.sin(I)*A;return this.x=B*Math.sin(g),this.y=Math.cos(I)*A,this.z=B*Math.cos(g),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,I,g){return this.x=A*Math.sin(I),this.y=g,this.z=A*Math.cos(I),this}setFromMatrixPosition(A){const I=A.elements;return this.x=I[12],this.y=I[13],this.z=I[14],this}setFromMatrixScale(A){const I=this.setFromMatrixColumn(A,0).length(),g=this.setFromMatrixColumn(A,1).length(),B=this.setFromMatrixColumn(A,2).length();return this.x=I,this.y=g,this.z=B,this}setFromMatrixColumn(A,I){return this.fromArray(A.elements,I*4)}setFromMatrix3Column(A,I){return this.fromArray(A.elements,I*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,I=Math.random()*2-1,g=Math.sqrt(1-I*I);return this.x=g*Math.cos(A),this.y=I,this.z=g*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const gt=new f,rQ=new uA;class ig{constructor(A=new f(1/0,1/0,1/0),I=new f(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=I}set(A,I){return this.min.copy(A),this.max.copy(I),this}setFromArray(A){this.makeEmpty();for(let I=0,g=A.length;I<g;I+=3)this.expandByPoint(CI.fromArray(A,I));return this}setFromBufferAttribute(A){this.makeEmpty();for(let I=0,g=A.count;I<g;I++)this.expandByPoint(CI.fromBufferAttribute(A,I));return this}setFromPoints(A){this.makeEmpty();for(let I=0,g=A.length;I<g;I++)this.expandByPoint(A[I]);return this}setFromCenterAndSize(A,I){const g=CI.copy(I).multiplyScalar(.5);return this.min.copy(A).sub(g),this.max.copy(A).add(g),this}setFromObject(A,I=!1){return this.makeEmpty(),this.expandByObject(A,I)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,I=!1){A.updateWorldMatrix(!1,!1);const g=A.geometry;if(g!==void 0){const t=g.getAttribute("position");if(I===!0&&t!==void 0&&A.isInstancedMesh!==!0)for(let Q=0,i=t.count;Q<i;Q++)A.isMesh===!0?A.getVertexPosition(Q,CI):CI.fromBufferAttribute(t,Q),CI.applyMatrix4(A.matrixWorld),this.expandByPoint(CI);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),QB.copy(A.boundingBox)):(g.boundingBox===null&&g.computeBoundingBox(),QB.copy(g.boundingBox)),QB.applyMatrix4(A.matrixWorld),this.union(QB)}const B=A.children;for(let t=0,Q=B.length;t<Q;t++)this.expandByObject(B[t],I);return this}containsPoint(A){return A.x>=this.min.x&&A.x<=this.max.x&&A.y>=this.min.y&&A.y<=this.max.y&&A.z>=this.min.z&&A.z<=this.max.z}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,I){return I.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return A.max.x>=this.min.x&&A.min.x<=this.max.x&&A.max.y>=this.min.y&&A.min.y<=this.max.y&&A.max.z>=this.min.z&&A.min.z<=this.max.z}intersectsSphere(A){return this.clampPoint(A.center,CI),CI.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let I,g;return A.normal.x>0?(I=A.normal.x*this.min.x,g=A.normal.x*this.max.x):(I=A.normal.x*this.max.x,g=A.normal.x*this.min.x),A.normal.y>0?(I+=A.normal.y*this.min.y,g+=A.normal.y*this.max.y):(I+=A.normal.y*this.max.y,g+=A.normal.y*this.min.y),A.normal.z>0?(I+=A.normal.z*this.min.z,g+=A.normal.z*this.max.z):(I+=A.normal.z*this.max.z,g+=A.normal.z*this.min.z),I<=-A.constant&&g>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(qg),iB.subVectors(this.max,qg),Cg.subVectors(A.a,qg),Eg.subVectors(A.b,qg),sg.subVectors(A.c,qg),UI.subVectors(Eg,Cg),YI.subVectors(sg,Eg),vI.subVectors(Cg,sg);let I=[0,-UI.z,UI.y,0,-YI.z,YI.y,0,-vI.z,vI.y,UI.z,0,-UI.x,YI.z,0,-YI.x,vI.z,0,-vI.x,-UI.y,UI.x,0,-YI.y,YI.x,0,-vI.y,vI.x,0];return!Bt(I,Cg,Eg,sg,iB)||(I=[1,0,0,0,1,0,0,0,1],!Bt(I,Cg,Eg,sg,iB))?!1:(CB.crossVectors(UI,YI),I=[CB.x,CB.y,CB.z],Bt(I,Cg,Eg,sg,iB))}clampPoint(A,I){return I.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,CI).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(CI).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(yI[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),yI[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),yI[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),yI[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),yI[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),yI[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),yI[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),yI[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(yI),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const yI=[new f,new f,new f,new f,new f,new f,new f,new f],CI=new f,QB=new ig,Cg=new f,Eg=new f,sg=new f,UI=new f,YI=new f,vI=new f,qg=new f,iB=new f,CB=new f,OI=new f;function Bt(E,A,I,g,B){for(let t=0,Q=E.length-3;t<=Q;t+=3){OI.fromArray(E,t);const i=B.x*Math.abs(OI.x)+B.y*Math.abs(OI.y)+B.z*Math.abs(OI.z),C=A.dot(OI),s=I.dot(OI),o=g.dot(OI);if(Math.max(-Math.max(C,s,o),Math.min(C,s,o))>i)return!1}return!0}const iC=new ig,Tg=new f,tt=new f;class hQ{constructor(A=new f,I=-1){this.isSphere=!0,this.center=A,this.radius=I}set(A,I){return this.center.copy(A),this.radius=I,this}setFromPoints(A,I){const g=this.center;I!==void 0?g.copy(I):iC.setFromPoints(A).getCenter(g);let B=0;for(let t=0,Q=A.length;t<Q;t++)B=Math.max(B,g.distanceToSquared(A[t]));return this.radius=Math.sqrt(B),this}copy(A){return this.center.copy(A.center),this.radius=A.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(A){return A.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(A){return A.distanceTo(this.center)-this.radius}intersectsSphere(A){const I=this.radius+A.radius;return A.center.distanceToSquared(this.center)<=I*I}intersectsBox(A){return A.intersectsSphere(this)}intersectsPlane(A){return Math.abs(A.distanceToPoint(this.center))<=this.radius}clampPoint(A,I){const g=this.center.distanceToSquared(A);return I.copy(A),g>this.radius*this.radius&&(I.sub(this.center).normalize(),I.multiplyScalar(this.radius).add(this.center)),I}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;Tg.subVectors(A,this.center);const I=Tg.lengthSq();if(I>this.radius*this.radius){const g=Math.sqrt(I),B=(g-this.radius)*.5;this.center.addScaledVector(Tg,B/g),this.radius+=B}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(tt.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(Tg.copy(A.center).add(tt)),this.expandByPoint(Tg.copy(A.center).sub(tt))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}}const dI=new f,Qt=new f,EB=new f,JI=new f,it=new f,sB=new f,Ct=new f;class CC{constructor(A=new f,I=new f(0,0,-1)){this.origin=A,this.direction=I}set(A,I){return this.origin.copy(A),this.direction.copy(I),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,I){return I.copy(this.origin).addScaledVector(this.direction,A)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,dI)),this}closestPointToPoint(A,I){I.subVectors(A,this.origin);const g=I.dot(this.direction);return g<0?I.copy(this.origin):I.copy(this.origin).addScaledVector(this.direction,g)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){const I=dI.subVectors(A,this.origin).dot(this.direction);return I<0?this.origin.distanceToSquared(A):(dI.copy(this.origin).addScaledVector(this.direction,I),dI.distanceToSquared(A))}distanceSqToSegment(A,I,g,B){Qt.copy(A).add(I).multiplyScalar(.5),EB.copy(I).sub(A).normalize(),JI.copy(this.origin).sub(Qt);const t=A.distanceTo(I)*.5,Q=-this.direction.dot(EB),i=JI.dot(this.direction),C=-JI.dot(EB),s=JI.lengthSq(),o=Math.abs(1-Q*Q);let e,a,n,r;if(o>0)if(e=Q*C-i,a=Q*i-C,r=t*o,e>=0)if(a>=-r)if(a<=r){const D=1/o;e*=D,a*=D,n=e*(e+Q*a+2*i)+a*(Q*e+a+2*C)+s}else a=t,e=Math.max(0,-(Q*a+i)),n=-e*e+a*(a+2*C)+s;else a=-t,e=Math.max(0,-(Q*a+i)),n=-e*e+a*(a+2*C)+s;else a<=-r?(e=Math.max(0,-(-Q*t+i)),a=e>0?-t:Math.min(Math.max(-t,-C),t),n=-e*e+a*(a+2*C)+s):a<=r?(e=0,a=Math.min(Math.max(-t,-C),t),n=a*(a+2*C)+s):(e=Math.max(0,-(Q*t+i)),a=e>0?t:Math.min(Math.max(-t,-C),t),n=-e*e+a*(a+2*C)+s);else a=Q>0?-t:t,e=Math.max(0,-(Q*a+i)),n=-e*e+a*(a+2*C)+s;return g&&g.copy(this.origin).addScaledVector(this.direction,e),B&&B.copy(Qt).addScaledVector(EB,a),n}intersectSphere(A,I){dI.subVectors(A.center,this.origin);const g=dI.dot(this.direction),B=dI.dot(dI)-g*g,t=A.radius*A.radius;if(B>t)return null;const Q=Math.sqrt(t-B),i=g-Q,C=g+Q;return C<0?null:i<0?this.at(C,I):this.at(i,I)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){const I=A.normal.dot(this.direction);if(I===0)return A.distanceToPoint(this.origin)===0?0:null;const g=-(this.origin.dot(A.normal)+A.constant)/I;return g>=0?g:null}intersectPlane(A,I){const g=this.distanceToPlane(A);return g===null?null:this.at(g,I)}intersectsPlane(A){const I=A.distanceToPoint(this.origin);return I===0||A.normal.dot(this.direction)*I<0}intersectBox(A,I){let g,B,t,Q,i,C;const s=1/this.direction.x,o=1/this.direction.y,e=1/this.direction.z,a=this.origin;return s>=0?(g=(A.min.x-a.x)*s,B=(A.max.x-a.x)*s):(g=(A.max.x-a.x)*s,B=(A.min.x-a.x)*s),o>=0?(t=(A.min.y-a.y)*o,Q=(A.max.y-a.y)*o):(t=(A.max.y-a.y)*o,Q=(A.min.y-a.y)*o),g>Q||t>B||((t>g||isNaN(g))&&(g=t),(Q<B||isNaN(B))&&(B=Q),e>=0?(i=(A.min.z-a.z)*e,C=(A.max.z-a.z)*e):(i=(A.max.z-a.z)*e,C=(A.min.z-a.z)*e),g>C||i>B)||((i>g||g!==g)&&(g=i),(C<B||B!==B)&&(B=C),B<0)?null:this.at(g>=0?g:B,I)}intersectsBox(A){return this.intersectBox(A,dI)!==null}intersectTriangle(A,I,g,B,t){it.subVectors(I,A),sB.subVectors(g,A),Ct.crossVectors(it,sB);let Q=this.direction.dot(Ct),i;if(Q>0){if(B)return null;i=1}else if(Q<0)i=-1,Q=-Q;else return null;JI.subVectors(this.origin,A);const C=i*this.direction.dot(sB.crossVectors(JI,sB));if(C<0)return null;const s=i*this.direction.dot(it.cross(JI));if(s<0||C+s>Q)return null;const o=-i*JI.dot(Ct);return o<0?null:this.at(o/Q,t)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class LA{constructor(A,I,g,B,t,Q,i,C,s,o,e,a,n,r,D,l){LA.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A!==void 0&&this.set(A,I,g,B,t,Q,i,C,s,o,e,a,n,r,D,l)}set(A,I,g,B,t,Q,i,C,s,o,e,a,n,r,D,l){const y=this.elements;return y[0]=A,y[4]=I,y[8]=g,y[12]=B,y[1]=t,y[5]=Q,y[9]=i,y[13]=C,y[2]=s,y[6]=o,y[10]=e,y[14]=a,y[3]=n,y[7]=r,y[11]=D,y[15]=l,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new LA().fromArray(this.elements)}copy(A){const I=this.elements,g=A.elements;return I[0]=g[0],I[1]=g[1],I[2]=g[2],I[3]=g[3],I[4]=g[4],I[5]=g[5],I[6]=g[6],I[7]=g[7],I[8]=g[8],I[9]=g[9],I[10]=g[10],I[11]=g[11],I[12]=g[12],I[13]=g[13],I[14]=g[14],I[15]=g[15],this}copyPosition(A){const I=this.elements,g=A.elements;return I[12]=g[12],I[13]=g[13],I[14]=g[14],this}setFromMatrix3(A){const I=A.elements;return this.set(I[0],I[3],I[6],0,I[1],I[4],I[7],0,I[2],I[5],I[8],0,0,0,0,1),this}extractBasis(A,I,g){return A.setFromMatrixColumn(this,0),I.setFromMatrixColumn(this,1),g.setFromMatrixColumn(this,2),this}makeBasis(A,I,g){return this.set(A.x,I.x,g.x,0,A.y,I.y,g.y,0,A.z,I.z,g.z,0,0,0,0,1),this}extractRotation(A){const I=this.elements,g=A.elements,B=1/eg.setFromMatrixColumn(A,0).length(),t=1/eg.setFromMatrixColumn(A,1).length(),Q=1/eg.setFromMatrixColumn(A,2).length();return I[0]=g[0]*B,I[1]=g[1]*B,I[2]=g[2]*B,I[3]=0,I[4]=g[4]*t,I[5]=g[5]*t,I[6]=g[6]*t,I[7]=0,I[8]=g[8]*Q,I[9]=g[9]*Q,I[10]=g[10]*Q,I[11]=0,I[12]=0,I[13]=0,I[14]=0,I[15]=1,this}makeRotationFromEuler(A){const I=this.elements,g=A.x,B=A.y,t=A.z,Q=Math.cos(g),i=Math.sin(g),C=Math.cos(B),s=Math.sin(B),o=Math.cos(t),e=Math.sin(t);if(A.order==="XYZ"){const a=Q*o,n=Q*e,r=i*o,D=i*e;I[0]=C*o,I[4]=-C*e,I[8]=s,I[1]=n+r*s,I[5]=a-D*s,I[9]=-i*C,I[2]=D-a*s,I[6]=r+n*s,I[10]=Q*C}else if(A.order==="YXZ"){const a=C*o,n=C*e,r=s*o,D=s*e;I[0]=a+D*i,I[4]=r*i-n,I[8]=Q*s,I[1]=Q*e,I[5]=Q*o,I[9]=-i,I[2]=n*i-r,I[6]=D+a*i,I[10]=Q*C}else if(A.order==="ZXY"){const a=C*o,n=C*e,r=s*o,D=s*e;I[0]=a-D*i,I[4]=-Q*e,I[8]=r+n*i,I[1]=n+r*i,I[5]=Q*o,I[9]=D-a*i,I[2]=-Q*s,I[6]=i,I[10]=Q*C}else if(A.order==="ZYX"){const a=Q*o,n=Q*e,r=i*o,D=i*e;I[0]=C*o,I[4]=r*s-n,I[8]=a*s+D,I[1]=C*e,I[5]=D*s+a,I[9]=n*s-r,I[2]=-s,I[6]=i*C,I[10]=Q*C}else if(A.order==="YZX"){const a=Q*C,n=Q*s,r=i*C,D=i*s;I[0]=C*o,I[4]=D-a*e,I[8]=r*e+n,I[1]=e,I[5]=Q*o,I[9]=-i*o,I[2]=-s*o,I[6]=n*e+r,I[10]=a-D*e}else if(A.order==="XZY"){const a=Q*C,n=Q*s,r=i*C,D=i*s;I[0]=C*o,I[4]=-e,I[8]=s*o,I[1]=a*e+D,I[5]=Q*o,I[9]=n*e-r,I[2]=r*e-n,I[6]=i*o,I[10]=D*e+a}return I[3]=0,I[7]=0,I[11]=0,I[12]=0,I[13]=0,I[14]=0,I[15]=1,this}makeRotationFromQuaternion(A){return this.compose(EC,A,sC)}lookAt(A,I,g){const B=this.elements;return XA.subVectors(A,I),XA.lengthSq()===0&&(XA.z=1),XA.normalize(),LI.crossVectors(g,XA),LI.lengthSq()===0&&(Math.abs(g.z)===1?XA.x+=1e-4:XA.z+=1e-4,XA.normalize(),LI.crossVectors(g,XA)),LI.normalize(),eB.crossVectors(XA,LI),B[0]=LI.x,B[4]=eB.x,B[8]=XA.x,B[1]=LI.y,B[5]=eB.y,B[9]=XA.y,B[2]=LI.z,B[6]=eB.z,B[10]=XA.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){const g=A.elements,B=I.elements,t=this.elements,Q=g[0],i=g[4],C=g[8],s=g[12],o=g[1],e=g[5],a=g[9],n=g[13],r=g[2],D=g[6],l=g[10],y=g[14],w=g[3],u=g[7],G=g[11],M=g[15],x=B[0],k=B[4],S=B[8],N=B[12],H=B[1],U=B[5],m=B[9],J=B[13],K=B[2],z=B[6],T=B[10],W=B[14],BA=B[3],AA=B[7],CA=B[11],QA=B[15];return t[0]=Q*x+i*H+C*K+s*BA,t[4]=Q*k+i*U+C*z+s*AA,t[8]=Q*S+i*m+C*T+s*CA,t[12]=Q*N+i*J+C*W+s*QA,t[1]=o*x+e*H+a*K+n*BA,t[5]=o*k+e*U+a*z+n*AA,t[9]=o*S+e*m+a*T+n*CA,t[13]=o*N+e*J+a*W+n*QA,t[2]=r*x+D*H+l*K+y*BA,t[6]=r*k+D*U+l*z+y*AA,t[10]=r*S+D*m+l*T+y*CA,t[14]=r*N+D*J+l*W+y*QA,t[3]=w*x+u*H+G*K+M*BA,t[7]=w*k+u*U+G*z+M*AA,t[11]=w*S+u*m+G*T+M*CA,t[15]=w*N+u*J+G*W+M*QA,this}multiplyScalar(A){const I=this.elements;return I[0]*=A,I[4]*=A,I[8]*=A,I[12]*=A,I[1]*=A,I[5]*=A,I[9]*=A,I[13]*=A,I[2]*=A,I[6]*=A,I[10]*=A,I[14]*=A,I[3]*=A,I[7]*=A,I[11]*=A,I[15]*=A,this}determinant(){const A=this.elements,I=A[0],g=A[4],B=A[8],t=A[12],Q=A[1],i=A[5],C=A[9],s=A[13],o=A[2],e=A[6],a=A[10],n=A[14],r=A[3],D=A[7],l=A[11],y=A[15];return r*(+t*C*e-B*s*e-t*i*a+g*s*a+B*i*n-g*C*n)+D*(+I*C*n-I*s*a+t*Q*a-B*Q*n+B*s*o-t*C*o)+l*(+I*s*e-I*i*n-t*Q*e+g*Q*n+t*i*o-g*s*o)+y*(-B*i*o-I*C*e+I*i*a+B*Q*e-g*Q*a+g*C*o)}transpose(){const A=this.elements;let I;return I=A[1],A[1]=A[4],A[4]=I,I=A[2],A[2]=A[8],A[8]=I,I=A[6],A[6]=A[9],A[9]=I,I=A[3],A[3]=A[12],A[12]=I,I=A[7],A[7]=A[13],A[13]=I,I=A[11],A[11]=A[14],A[14]=I,this}setPosition(A,I,g){const B=this.elements;return A.isVector3?(B[12]=A.x,B[13]=A.y,B[14]=A.z):(B[12]=A,B[13]=I,B[14]=g),this}invert(){const A=this.elements,I=A[0],g=A[1],B=A[2],t=A[3],Q=A[4],i=A[5],C=A[6],s=A[7],o=A[8],e=A[9],a=A[10],n=A[11],r=A[12],D=A[13],l=A[14],y=A[15],w=e*l*s-D*a*s+D*C*n-i*l*n-e*C*y+i*a*y,u=r*a*s-o*l*s-r*C*n+Q*l*n+o*C*y-Q*a*y,G=o*D*s-r*e*s+r*i*n-Q*D*n-o*i*y+Q*e*y,M=r*e*C-o*D*C-r*i*a+Q*D*a+o*i*l-Q*e*l,x=I*w+g*u+B*G+t*M;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const k=1/x;return A[0]=w*k,A[1]=(D*a*t-e*l*t-D*B*n+g*l*n+e*B*y-g*a*y)*k,A[2]=(i*l*t-D*C*t+D*B*s-g*l*s-i*B*y+g*C*y)*k,A[3]=(e*C*t-i*a*t-e*B*s+g*a*s+i*B*n-g*C*n)*k,A[4]=u*k,A[5]=(o*l*t-r*a*t+r*B*n-I*l*n-o*B*y+I*a*y)*k,A[6]=(r*C*t-Q*l*t-r*B*s+I*l*s+Q*B*y-I*C*y)*k,A[7]=(Q*a*t-o*C*t+o*B*s-I*a*s-Q*B*n+I*C*n)*k,A[8]=G*k,A[9]=(r*e*t-o*D*t-r*g*n+I*D*n+o*g*y-I*e*y)*k,A[10]=(Q*D*t-r*i*t+r*g*s-I*D*s-Q*g*y+I*i*y)*k,A[11]=(o*i*t-Q*e*t-o*g*s+I*e*s+Q*g*n-I*i*n)*k,A[12]=M*k,A[13]=(o*D*B-r*e*B+r*g*a-I*D*a-o*g*l+I*e*l)*k,A[14]=(r*i*B-Q*D*B-r*g*C+I*D*C+Q*g*l-I*i*l)*k,A[15]=(Q*e*B-o*i*B+o*g*C-I*e*C-Q*g*a+I*i*a)*k,this}scale(A){const I=this.elements,g=A.x,B=A.y,t=A.z;return I[0]*=g,I[4]*=B,I[8]*=t,I[1]*=g,I[5]*=B,I[9]*=t,I[2]*=g,I[6]*=B,I[10]*=t,I[3]*=g,I[7]*=B,I[11]*=t,this}getMaxScaleOnAxis(){const A=this.elements,I=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],g=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],B=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(I,g,B))}makeTranslation(A,I,g){return A.isVector3?this.set(1,0,0,A.x,0,1,0,A.y,0,0,1,A.z,0,0,0,1):this.set(1,0,0,A,0,1,0,I,0,0,1,g,0,0,0,1),this}makeRotationX(A){const I=Math.cos(A),g=Math.sin(A);return this.set(1,0,0,0,0,I,-g,0,0,g,I,0,0,0,0,1),this}makeRotationY(A){const I=Math.cos(A),g=Math.sin(A);return this.set(I,0,g,0,0,1,0,0,-g,0,I,0,0,0,0,1),this}makeRotationZ(A){const I=Math.cos(A),g=Math.sin(A);return this.set(I,-g,0,0,g,I,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,I){const g=Math.cos(I),B=Math.sin(I),t=1-g,Q=A.x,i=A.y,C=A.z,s=t*Q,o=t*i;return this.set(s*Q+g,s*i-B*C,s*C+B*i,0,s*i+B*C,o*i+g,o*C-B*Q,0,s*C-B*i,o*C+B*Q,t*C*C+g,0,0,0,0,1),this}makeScale(A,I,g){return this.set(A,0,0,0,0,I,0,0,0,0,g,0,0,0,0,1),this}makeShear(A,I,g,B,t,Q){return this.set(1,g,t,0,A,1,Q,0,I,B,1,0,0,0,0,1),this}compose(A,I,g){const B=this.elements,t=I._x,Q=I._y,i=I._z,C=I._w,s=t+t,o=Q+Q,e=i+i,a=t*s,n=t*o,r=t*e,D=Q*o,l=Q*e,y=i*e,w=C*s,u=C*o,G=C*e,M=g.x,x=g.y,k=g.z;return B[0]=(1-(D+y))*M,B[1]=(n+G)*M,B[2]=(r-u)*M,B[3]=0,B[4]=(n-G)*x,B[5]=(1-(a+y))*x,B[6]=(l+w)*x,B[7]=0,B[8]=(r+u)*k,B[9]=(l-w)*k,B[10]=(1-(a+D))*k,B[11]=0,B[12]=A.x,B[13]=A.y,B[14]=A.z,B[15]=1,this}decompose(A,I,g){const B=this.elements;let t=eg.set(B[0],B[1],B[2]).length();const Q=eg.set(B[4],B[5],B[6]).length(),i=eg.set(B[8],B[9],B[10]).length();this.determinant()<0&&(t=-t),A.x=B[12],A.y=B[13],A.z=B[14],EI.copy(this);const s=1/t,o=1/Q,e=1/i;return EI.elements[0]*=s,EI.elements[1]*=s,EI.elements[2]*=s,EI.elements[4]*=o,EI.elements[5]*=o,EI.elements[6]*=o,EI.elements[8]*=e,EI.elements[9]*=e,EI.elements[10]*=e,I.setFromRotationMatrix(EI),g.x=t,g.y=Q,g.z=i,this}makePerspective(A,I,g,B,t,Q,i=Lg){const C=this.elements,s=2*t/(I-A),o=2*t/(g-B),e=(I+A)/(I-A),a=(g+B)/(g-B);let n,r;if(i===Lg)n=-(Q+t)/(Q-t),r=-2*Q*t/(Q-t);else if(i===EQ)n=-Q/(Q-t),r=-Q*t/(Q-t);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+i);return C[0]=s,C[4]=0,C[8]=e,C[12]=0,C[1]=0,C[5]=o,C[9]=a,C[13]=0,C[2]=0,C[6]=0,C[10]=n,C[14]=r,C[3]=0,C[7]=0,C[11]=-1,C[15]=0,this}makeOrthographic(A,I,g,B,t,Q,i=Lg){const C=this.elements,s=1/(I-A),o=1/(g-B),e=1/(Q-t),a=(I+A)*s,n=(g+B)*o;let r,D;if(i===Lg)r=(Q+t)*e,D=-2*e;else if(i===EQ)r=t*e,D=-1*e;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+i);return C[0]=2*s,C[4]=0,C[8]=0,C[12]=-a,C[1]=0,C[5]=2*o,C[9]=0,C[13]=-n,C[2]=0,C[6]=0,C[10]=D,C[14]=-r,C[3]=0,C[7]=0,C[11]=0,C[15]=1,this}equals(A){const I=this.elements,g=A.elements;for(let B=0;B<16;B++)if(I[B]!==g[B])return!1;return!0}fromArray(A,I=0){for(let g=0;g<16;g++)this.elements[g]=A[g+I];return this}toArray(A=[],I=0){const g=this.elements;return A[I]=g[0],A[I+1]=g[1],A[I+2]=g[2],A[I+3]=g[3],A[I+4]=g[4],A[I+5]=g[5],A[I+6]=g[6],A[I+7]=g[7],A[I+8]=g[8],A[I+9]=g[9],A[I+10]=g[10],A[I+11]=g[11],A[I+12]=g[12],A[I+13]=g[13],A[I+14]=g[14],A[I+15]=g[15],A}}const eg=new f,EI=new LA,EC=new f(0,0,0),sC=new f(1,1,1),LI=new f,eB=new f,XA=new f,cQ=new LA,DQ=new uA;class VI{constructor(A=0,I=0,g=0,B=VI.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=I,this._z=g,this._order=B}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get order(){return this._order}set order(A){this._order=A,this._onChangeCallback()}set(A,I,g,B=this._order){return this._x=A,this._y=I,this._z=g,this._order=B,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,I=this._order,g=!0){const B=A.elements,t=B[0],Q=B[4],i=B[8],C=B[1],s=B[5],o=B[9],e=B[2],a=B[6],n=B[10];switch(I){case"XYZ":this._y=Math.asin($(i,-1,1)),Math.abs(i)<.9999999?(this._x=Math.atan2(-o,n),this._z=Math.atan2(-Q,t)):(this._x=Math.atan2(a,s),this._z=0);break;case"YXZ":this._x=Math.asin(-$(o,-1,1)),Math.abs(o)<.9999999?(this._y=Math.atan2(i,n),this._z=Math.atan2(C,s)):(this._y=Math.atan2(-e,t),this._z=0);break;case"ZXY":this._x=Math.asin($(a,-1,1)),Math.abs(a)<.9999999?(this._y=Math.atan2(-e,n),this._z=Math.atan2(-Q,s)):(this._y=0,this._z=Math.atan2(C,t));break;case"ZYX":this._y=Math.asin(-$(e,-1,1)),Math.abs(e)<.9999999?(this._x=Math.atan2(a,n),this._z=Math.atan2(C,t)):(this._x=0,this._z=Math.atan2(-Q,s));break;case"YZX":this._z=Math.asin($(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(-o,s),this._y=Math.atan2(-e,t)):(this._x=0,this._y=Math.atan2(i,n));break;case"XZY":this._z=Math.asin(-$(Q,-1,1)),Math.abs(Q)<.9999999?(this._x=Math.atan2(a,s),this._y=Math.atan2(i,t)):(this._x=Math.atan2(-o,n),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+I)}return this._order=I,g===!0&&this._onChangeCallback(),this}setFromQuaternion(A,I,g){return cQ.makeRotationFromQuaternion(A),this.setFromRotationMatrix(cQ,I,g)}setFromVector3(A,I=this._order){return this.set(A.x,A.y,A.z,I)}reorder(A){return DQ.setFromEuler(this),this.setFromQuaternion(DQ,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}VI.DEFAULT_ORDER="XYZ";class eC{constructor(){this.mask=1}set(A){this.mask=(1<<A|0)>>>0}enable(A){this.mask|=1<<A|0}enableAll(){this.mask=-1}toggle(A){this.mask^=1<<A|0}disable(A){this.mask&=~(1<<A|0)}disableAll(){this.mask=0}test(A){return(this.mask&A.mask)!==0}isEnabled(A){return(this.mask&(1<<A|0))!==0}}let oC=0;const lQ=new f,og=new uA,wI=new LA,oB=new f,Zg=new f,aC=new f,nC=new uA,yQ=new f(1,0,0),dQ=new f(0,1,0),wQ=new f(0,0,1),uQ={type:"added"},rC={type:"removed"},ag={type:"childadded",child:null},Et={type:"childremoved",child:null};class WA extends Hg{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:oC++}),this.uuid=bg(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=WA.DEFAULT_UP.clone();const A=new f,I=new VI,g=new uA,B=new f(1,1,1);function t(){g.setFromEuler(I,!1)}function Q(){I.setFromQuaternion(g,void 0,!1)}I._onChange(t),g._onChange(Q),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:A},rotation:{configurable:!0,enumerable:!0,value:I},quaternion:{configurable:!0,enumerable:!0,value:g},scale:{configurable:!0,enumerable:!0,value:B},modelViewMatrix:{value:new LA},normalMatrix:{value:new hI}}),this.matrix=new LA,this.matrixWorld=new LA,this.matrixAutoUpdate=WA.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=WA.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new eC,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(A){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(A),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(A){return this.quaternion.premultiply(A),this}setRotationFromAxisAngle(A,I){this.quaternion.setFromAxisAngle(A,I)}setRotationFromEuler(A){this.quaternion.setFromEuler(A,!0)}setRotationFromMatrix(A){this.quaternion.setFromRotationMatrix(A)}setRotationFromQuaternion(A){this.quaternion.copy(A)}rotateOnAxis(A,I){return og.setFromAxisAngle(A,I),this.quaternion.multiply(og),this}rotateOnWorldAxis(A,I){return og.setFromAxisAngle(A,I),this.quaternion.premultiply(og),this}rotateX(A){return this.rotateOnAxis(yQ,A)}rotateY(A){return this.rotateOnAxis(dQ,A)}rotateZ(A){return this.rotateOnAxis(wQ,A)}translateOnAxis(A,I){return lQ.copy(A).applyQuaternion(this.quaternion),this.position.add(lQ.multiplyScalar(I)),this}translateX(A){return this.translateOnAxis(yQ,A)}translateY(A){return this.translateOnAxis(dQ,A)}translateZ(A){return this.translateOnAxis(wQ,A)}localToWorld(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(this.matrixWorld)}worldToLocal(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(wI.copy(this.matrixWorld).invert())}lookAt(A,I,g){A.isVector3?oB.copy(A):oB.set(A,I,g);const B=this.parent;this.updateWorldMatrix(!0,!1),Zg.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?wI.lookAt(Zg,oB,this.up):wI.lookAt(oB,Zg,this.up),this.quaternion.setFromRotationMatrix(wI),B&&(wI.extractRotation(B.matrixWorld),og.setFromRotationMatrix(wI),this.quaternion.premultiply(og.invert()))}add(A){if(arguments.length>1){for(let I=0;I<arguments.length;I++)this.add(arguments[I]);return this}return A===this?(console.error("THREE.Object3D.add: object can\'t be added as a child of itself.",A),this):(A&&A.isObject3D?(A.removeFromParent(),A.parent=this,this.children.push(A),A.dispatchEvent(uQ),ag.child=A,this.dispatchEvent(ag),ag.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",A),this)}remove(A){if(arguments.length>1){for(let g=0;g<arguments.length;g++)this.remove(arguments[g]);return this}const I=this.children.indexOf(A);return I!==-1&&(A.parent=null,this.children.splice(I,1),A.dispatchEvent(rC),Et.child=A,this.dispatchEvent(Et),Et.child=null),this}removeFromParent(){const A=this.parent;return A!==null&&A.remove(this),this}clear(){return this.remove(...this.children)}attach(A){return this.updateWorldMatrix(!0,!1),wI.copy(this.matrixWorld).invert(),A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),wI.multiply(A.parent.matrixWorld)),A.applyMatrix4(wI),A.removeFromParent(),A.parent=this,this.children.push(A),A.updateWorldMatrix(!1,!0),A.dispatchEvent(uQ),ag.child=A,this.dispatchEvent(ag),ag.child=null,this}getObjectById(A){return this.getObjectByProperty("id",A)}getObjectByName(A){return this.getObjectByProperty("name",A)}getObjectByProperty(A,I){if(this[A]===I)return this;for(let g=0,B=this.children.length;g<B;g++){const Q=this.children[g].getObjectByProperty(A,I);if(Q!==void 0)return Q}}getObjectsByProperty(A,I,g=[]){this[A]===I&&g.push(this);const B=this.children;for(let t=0,Q=B.length;t<Q;t++)B[t].getObjectsByProperty(A,I,g);return g}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Zg,A,aC),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Zg,nC,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);const I=this.matrixWorld.elements;return A.set(I[8],I[9],I[10]).normalize()}raycast(){}traverse(A){A(this);const I=this.children;for(let g=0,B=I.length;g<B;g++)I[g].traverse(A)}traverseVisible(A){if(this.visible===!1)return;A(this);const I=this.children;for(let g=0,B=I.length;g<B;g++)I[g].traverseVisible(A)}traverseAncestors(A){const I=this.parent;I!==null&&(A(I),I.traverseAncestors(A))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,A=!0);const I=this.children;for(let g=0,B=I.length;g<B;g++)I[g].updateMatrixWorld(A)}updateWorldMatrix(A,I){const g=this.parent;if(A===!0&&g!==null&&g.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),I===!0){const B=this.children;for(let t=0,Q=B.length;t<Q;t++)B[t].updateWorldMatrix(!1,!0)}}toJSON(A){const I=A===void 0||typeof A=="string",g={};I&&(A={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},g.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const B={};B.uuid=this.uuid,B.type=this.type,this.name!==""&&(B.name=this.name),this.castShadow===!0&&(B.castShadow=!0),this.receiveShadow===!0&&(B.receiveShadow=!0),this.visible===!1&&(B.visible=!1),this.frustumCulled===!1&&(B.frustumCulled=!1),this.renderOrder!==0&&(B.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(B.userData=this.userData),B.layers=this.layers.mask,B.matrix=this.matrix.toArray(),B.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(B.matrixAutoUpdate=!1),this.isInstancedMesh&&(B.type="InstancedMesh",B.count=this.count,B.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(B.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(B.type="BatchedMesh",B.perObjectFrustumCulled=this.perObjectFrustumCulled,B.sortObjects=this.sortObjects,B.drawRanges=this._drawRanges,B.reservedRanges=this._reservedRanges,B.visibility=this._visibility,B.active=this._active,B.bounds=this._bounds.map(i=>({boxInitialized:i.boxInitialized,boxMin:i.box.min.toArray(),boxMax:i.box.max.toArray(),sphereInitialized:i.sphereInitialized,sphereRadius:i.sphere.radius,sphereCenter:i.sphere.center.toArray()})),B.maxInstanceCount=this._maxInstanceCount,B.maxVertexCount=this._maxVertexCount,B.maxIndexCount=this._maxIndexCount,B.geometryInitialized=this._geometryInitialized,B.geometryCount=this._geometryCount,B.matricesTexture=this._matricesTexture.toJSON(A),this._colorsTexture!==null&&(B.colorsTexture=this._colorsTexture.toJSON(A)),this.boundingSphere!==null&&(B.boundingSphere={center:B.boundingSphere.center.toArray(),radius:B.boundingSphere.radius}),this.boundingBox!==null&&(B.boundingBox={min:B.boundingBox.min.toArray(),max:B.boundingBox.max.toArray()}));function t(i,C){return i[C.uuid]===void 0&&(i[C.uuid]=C.toJSON(A)),C.uuid}if(this.isScene)this.background&&(this.background.isColor?B.background=this.background.toJSON():this.background.isTexture&&(B.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(B.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){B.geometry=t(A.geometries,this.geometry);const i=this.geometry.parameters;if(i!==void 0&&i.shapes!==void 0){const C=i.shapes;if(Array.isArray(C))for(let s=0,o=C.length;s<o;s++){const e=C[s];t(A.shapes,e)}else t(A.shapes,C)}}if(this.isSkinnedMesh&&(B.bindMode=this.bindMode,B.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(t(A.skeletons,this.skeleton),B.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const i=[];for(let C=0,s=this.material.length;C<s;C++)i.push(t(A.materials,this.material[C]));B.material=i}else B.material=t(A.materials,this.material);if(this.children.length>0){B.children=[];for(let i=0;i<this.children.length;i++)B.children.push(this.children[i].toJSON(A).object)}if(this.animations.length>0){B.animations=[];for(let i=0;i<this.animations.length;i++){const C=this.animations[i];B.animations.push(t(A.animations,C))}}if(I){const i=Q(A.geometries),C=Q(A.materials),s=Q(A.textures),o=Q(A.images),e=Q(A.shapes),a=Q(A.skeletons),n=Q(A.animations),r=Q(A.nodes);i.length>0&&(g.geometries=i),C.length>0&&(g.materials=C),s.length>0&&(g.textures=s),o.length>0&&(g.images=o),e.length>0&&(g.shapes=e),a.length>0&&(g.skeletons=a),n.length>0&&(g.animations=n),r.length>0&&(g.nodes=r)}return g.object=B,g;function Q(i){const C=[];for(const s in i){const o=i[s];delete o.metadata,C.push(o)}return C}}clone(A){return new this.constructor().copy(this,A)}copy(A,I=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.animations=A.animations.slice(),this.userData=JSON.parse(JSON.stringify(A.userData)),I===!0)for(let g=0;g<A.children.length;g++){const B=A.children[g];this.add(B.clone())}return this}}WA.DEFAULT_UP=new f(0,1,0),WA.DEFAULT_MATRIX_AUTO_UPDATE=!0,WA.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const sI=new f,uI=new f,st=new f,fI=new f,ng=new f,rg=new f,fQ=new f,et=new f,ot=new f,at=new f,nt=new qA,rt=new qA,ht=new qA;class eI{constructor(A=new f,I=new f,g=new f){this.a=A,this.b=I,this.c=g}static getNormal(A,I,g,B){B.subVectors(g,I),sI.subVectors(A,I),B.cross(sI);const t=B.lengthSq();return t>0?B.multiplyScalar(1/Math.sqrt(t)):B.set(0,0,0)}static getBarycoord(A,I,g,B,t){sI.subVectors(B,I),uI.subVectors(g,I),st.subVectors(A,I);const Q=sI.dot(sI),i=sI.dot(uI),C=sI.dot(st),s=uI.dot(uI),o=uI.dot(st),e=Q*s-i*i;if(e===0)return t.set(0,0,0),null;const a=1/e,n=(s*C-i*o)*a,r=(Q*o-i*C)*a;return t.set(1-n-r,r,n)}static containsPoint(A,I,g,B){return this.getBarycoord(A,I,g,B,fI)===null?!1:fI.x>=0&&fI.y>=0&&fI.x+fI.y<=1}static getInterpolation(A,I,g,B,t,Q,i,C){return this.getBarycoord(A,I,g,B,fI)===null?(C.x=0,C.y=0,"z"in C&&(C.z=0),"w"in C&&(C.w=0),null):(C.setScalar(0),C.addScaledVector(t,fI.x),C.addScaledVector(Q,fI.y),C.addScaledVector(i,fI.z),C)}static getInterpolatedAttribute(A,I,g,B,t,Q){return nt.setScalar(0),rt.setScalar(0),ht.setScalar(0),nt.fromBufferAttribute(A,I),rt.fromBufferAttribute(A,g),ht.fromBufferAttribute(A,B),Q.setScalar(0),Q.addScaledVector(nt,t.x),Q.addScaledVector(rt,t.y),Q.addScaledVector(ht,t.z),Q}static isFrontFacing(A,I,g,B){return sI.subVectors(g,I),uI.subVectors(A,I),sI.cross(uI).dot(B)<0}set(A,I,g){return this.a.copy(A),this.b.copy(I),this.c.copy(g),this}setFromPointsAndIndices(A,I,g,B){return this.a.copy(A[I]),this.b.copy(A[g]),this.c.copy(A[B]),this}setFromAttributeAndIndices(A,I,g,B){return this.a.fromBufferAttribute(A,I),this.b.fromBufferAttribute(A,g),this.c.fromBufferAttribute(A,B),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return sI.subVectors(this.c,this.b),uI.subVectors(this.a,this.b),sI.cross(uI).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return eI.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,I){return eI.getBarycoord(A,this.a,this.b,this.c,I)}getInterpolation(A,I,g,B,t){return eI.getInterpolation(A,this.a,this.b,this.c,I,g,B,t)}containsPoint(A){return eI.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return eI.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,I){const g=this.a,B=this.b,t=this.c;let Q,i;ng.subVectors(B,g),rg.subVectors(t,g),et.subVectors(A,g);const C=ng.dot(et),s=rg.dot(et);if(C<=0&&s<=0)return I.copy(g);ot.subVectors(A,B);const o=ng.dot(ot),e=rg.dot(ot);if(o>=0&&e<=o)return I.copy(B);const a=C*e-o*s;if(a<=0&&C>=0&&o<=0)return Q=C/(C-o),I.copy(g).addScaledVector(ng,Q);at.subVectors(A,t);const n=ng.dot(at),r=rg.dot(at);if(r>=0&&n<=r)return I.copy(t);const D=n*s-C*r;if(D<=0&&s>=0&&r<=0)return i=s/(s-r),I.copy(g).addScaledVector(rg,i);const l=o*r-n*e;if(l<=0&&e-o>=0&&n-r>=0)return fQ.subVectors(t,B),i=(e-o)/(e-o+(n-r)),I.copy(B).addScaledVector(fQ,i);const y=1/(l+D+a);return Q=D*y,i=a*y,I.copy(g).addScaledVector(ng,Q).addScaledVector(rg,i)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}}const GQ={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},HI={h:0,s:0,l:0},aB={h:0,s:0,l:0};function ct(E,A,I){return I<0&&(I+=1),I>1&&(I-=1),I<1/6?E+(A-E)*6*I:I<1/2?A:I<2/3?E+(A-E)*6*(2/3-I):E}class XI{constructor(A,I,g){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,I,g)}set(A,I,g){if(I===void 0&&g===void 0){const B=A;B&&B.isColor?this.copy(B):typeof B=="number"?this.setHex(B):typeof B=="string"&&this.setStyle(B)}else this.setRGB(A,I,g);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,I=QI){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,iI.toWorkingColorSpace(this,I),this}setRGB(A,I,g,B=iI.workingColorSpace){return this.r=A,this.g=I,this.b=g,iI.toWorkingColorSpace(this,B),this}setHSL(A,I,g,B=iI.workingColorSpace){if(A=_i(A,1),I=$(I,0,1),g=$(g,0,1),I===0)this.r=this.g=this.b=g;else{const t=g<=.5?g*(1+I):g+I-g*I,Q=2*g-t;this.r=ct(Q,t,A+1/3),this.g=ct(Q,t,A),this.b=ct(Q,t,A-1/3)}return iI.toWorkingColorSpace(this,B),this}setStyle(A,I=QI){function g(t){t!==void 0&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let B;if(B=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let t;const Q=B[1],i=B[2];switch(Q){case"rgb":case"rgba":if(t=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(i))return g(t[4]),this.setRGB(Math.min(255,parseInt(t[1],10))/255,Math.min(255,parseInt(t[2],10))/255,Math.min(255,parseInt(t[3],10))/255,I);if(t=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(i))return g(t[4]),this.setRGB(Math.min(100,parseInt(t[1],10))/100,Math.min(100,parseInt(t[2],10))/100,Math.min(100,parseInt(t[3],10))/100,I);break;case"hsl":case"hsla":if(t=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(i))return g(t[4]),this.setHSL(parseFloat(t[1])/360,parseFloat(t[2])/100,parseFloat(t[3])/100,I);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(B=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const t=B[1],Q=t.length;if(Q===3)return this.setRGB(parseInt(t.charAt(0),16)/15,parseInt(t.charAt(1),16)/15,parseInt(t.charAt(2),16)/15,I);if(Q===6)return this.setHex(parseInt(t,16),I);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,I);return this}setColorName(A,I=QI){const g=GQ[A.toLowerCase()];return g!==void 0?this.setHex(g,I):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=lI(A.r),this.g=lI(A.g),this.b=lI(A.b),this}copyLinearToSRGB(A){return this.r=tg(A.r),this.g=tg(A.g),this.b=tg(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=QI){return iI.fromWorkingColorSpace(HA.copy(this),A),Math.round($(HA.r*255,0,255))*65536+Math.round($(HA.g*255,0,255))*256+Math.round($(HA.b*255,0,255))}getHexString(A=QI){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,I=iI.workingColorSpace){iI.fromWorkingColorSpace(HA.copy(this),I);const g=HA.r,B=HA.g,t=HA.b,Q=Math.max(g,B,t),i=Math.min(g,B,t);let C,s;const o=(i+Q)/2;if(i===Q)C=0,s=0;else{const e=Q-i;switch(s=o<=.5?e/(Q+i):e/(2-Q-i),Q){case g:C=(B-t)/e+(B<t?6:0);break;case B:C=(t-g)/e+2;break;case t:C=(g-B)/e+4;break}C/=6}return A.h=C,A.s=s,A.l=o,A}getRGB(A,I=iI.workingColorSpace){return iI.fromWorkingColorSpace(HA.copy(this),I),A.r=HA.r,A.g=HA.g,A.b=HA.b,A}getStyle(A=QI){iI.fromWorkingColorSpace(HA.copy(this),A);const I=HA.r,g=HA.g,B=HA.b;return A!==QI?`color(${A} ${I.toFixed(3)} ${g.toFixed(3)} ${B.toFixed(3)})`:`rgb(${Math.round(I*255)},${Math.round(g*255)},${Math.round(B*255)})`}offsetHSL(A,I,g){return this.getHSL(HI),this.setHSL(HI.h+A,HI.s+I,HI.l+g)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,I){return this.r=A.r+I.r,this.g=A.g+I.g,this.b=A.b+I.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,I){return this.r+=(A.r-this.r)*I,this.g+=(A.g-this.g)*I,this.b+=(A.b-this.b)*I,this}lerpColors(A,I,g){return this.r=A.r+(I.r-A.r)*g,this.g=A.g+(I.g-A.g)*g,this.b=A.b+(I.b-A.b)*g,this}lerpHSL(A,I){this.getHSL(HI),A.getHSL(aB);const g=$B(HI.h,aB.h,I),B=$B(HI.s,aB.s,I),t=$B(HI.l,aB.l,I);return this.setHSL(g,B,t),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const I=this.r,g=this.g,B=this.b,t=A.elements;return this.r=t[0]*I+t[3]*g+t[6]*B,this.g=t[1]*I+t[4]*g+t[7]*B,this.b=t[2]*I+t[5]*g+t[8]*B,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,I=0){return this.r=A[I],this.g=A[I+1],this.b=A[I+2],this}toArray(A=[],I=0){return A[I]=this.r,A[I+1]=this.g,A[I+2]=this.b,A}fromBufferAttribute(A,I){return this.r=A.getX(I),this.g=A.getY(I),this.b=A.getZ(I),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const HA=new XI;XI.NAMES=GQ;let hC=0;class FQ extends Hg{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:hC++}),this.uuid=bg(),this.name="",this.type="Material",this.blending=Vt,this.side=jB,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=Pt,this.blendDst=jt,this.blendEquation=Xt,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new XI(0,0,0),this.blendAlpha=0,this.depthFunc=_t,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=iQ,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Bg,this.stencilZFail=Bg,this.stencilZPass=Bg,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(A){this._alphaTest>0!=A>0&&this.version++,this._alphaTest=A}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(A){if(A!==void 0)for(const I in A){const g=A[I];if(g===void 0){console.warn(`THREE.Material: parameter \'${I}\' has value of undefined.`);continue}const B=this[I];if(B===void 0){console.warn(`THREE.Material: \'${I}\' is not a property of THREE.${this.type}.`);continue}B&&B.isColor?B.set(g):B&&B.isVector3&&g&&g.isVector3?B.copy(g):this[I]=g}}toJSON(A){const I=A===void 0||typeof A=="string";I&&(A={textures:{},images:{}});const g={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};g.uuid=this.uuid,g.type=this.type,this.name!==""&&(g.name=this.name),this.color&&this.color.isColor&&(g.color=this.color.getHex()),this.roughness!==void 0&&(g.roughness=this.roughness),this.metalness!==void 0&&(g.metalness=this.metalness),this.sheen!==void 0&&(g.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(g.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(g.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(g.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(g.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(g.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(g.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(g.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(g.shininess=this.shininess),this.clearcoat!==void 0&&(g.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(g.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(g.clearcoatMap=this.clearcoatMap.toJSON(A).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(g.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(A).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(g.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(A).uuid,g.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(g.dispersion=this.dispersion),this.iridescence!==void 0&&(g.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(g.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(g.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(g.iridescenceMap=this.iridescenceMap.toJSON(A).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(g.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(A).uuid),this.anisotropy!==void 0&&(g.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(g.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(g.anisotropyMap=this.anisotropyMap.toJSON(A).uuid),this.map&&this.map.isTexture&&(g.map=this.map.toJSON(A).uuid),this.matcap&&this.matcap.isTexture&&(g.matcap=this.matcap.toJSON(A).uuid),this.alphaMap&&this.alphaMap.isTexture&&(g.alphaMap=this.alphaMap.toJSON(A).uuid),this.lightMap&&this.lightMap.isTexture&&(g.lightMap=this.lightMap.toJSON(A).uuid,g.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(g.aoMap=this.aoMap.toJSON(A).uuid,g.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(g.bumpMap=this.bumpMap.toJSON(A).uuid,g.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(g.normalMap=this.normalMap.toJSON(A).uuid,g.normalMapType=this.normalMapType,g.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(g.displacementMap=this.displacementMap.toJSON(A).uuid,g.displacementScale=this.displacementScale,g.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(g.roughnessMap=this.roughnessMap.toJSON(A).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(g.metalnessMap=this.metalnessMap.toJSON(A).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(g.emissiveMap=this.emissiveMap.toJSON(A).uuid),this.specularMap&&this.specularMap.isTexture&&(g.specularMap=this.specularMap.toJSON(A).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(g.specularIntensityMap=this.specularIntensityMap.toJSON(A).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(g.specularColorMap=this.specularColorMap.toJSON(A).uuid),this.envMap&&this.envMap.isTexture&&(g.envMap=this.envMap.toJSON(A).uuid,this.combine!==void 0&&(g.combine=this.combine)),this.envMapRotation!==void 0&&(g.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(g.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(g.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(g.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(g.gradientMap=this.gradientMap.toJSON(A).uuid),this.transmission!==void 0&&(g.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(g.transmissionMap=this.transmissionMap.toJSON(A).uuid),this.thickness!==void 0&&(g.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(g.thicknessMap=this.thicknessMap.toJSON(A).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(g.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(g.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(g.size=this.size),this.shadowSide!==null&&(g.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(g.sizeAttenuation=this.sizeAttenuation),this.blending!==Vt&&(g.blending=this.blending),this.side!==jB&&(g.side=this.side),this.vertexColors===!0&&(g.vertexColors=!0),this.opacity<1&&(g.opacity=this.opacity),this.transparent===!0&&(g.transparent=!0),this.blendSrc!==Pt&&(g.blendSrc=this.blendSrc),this.blendDst!==jt&&(g.blendDst=this.blendDst),this.blendEquation!==Xt&&(g.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(g.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(g.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(g.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(g.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(g.blendAlpha=this.blendAlpha),this.depthFunc!==_t&&(g.depthFunc=this.depthFunc),this.depthTest===!1&&(g.depthTest=this.depthTest),this.depthWrite===!1&&(g.depthWrite=this.depthWrite),this.colorWrite===!1&&(g.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(g.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==iQ&&(g.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(g.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(g.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Bg&&(g.stencilFail=this.stencilFail),this.stencilZFail!==Bg&&(g.stencilZFail=this.stencilZFail),this.stencilZPass!==Bg&&(g.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(g.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(g.rotation=this.rotation),this.polygonOffset===!0&&(g.polygonOffset=!0),this.polygonOffsetFactor!==0&&(g.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(g.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(g.linewidth=this.linewidth),this.dashSize!==void 0&&(g.dashSize=this.dashSize),this.gapSize!==void 0&&(g.gapSize=this.gapSize),this.scale!==void 0&&(g.scale=this.scale),this.dithering===!0&&(g.dithering=!0),this.alphaTest>0&&(g.alphaTest=this.alphaTest),this.alphaHash===!0&&(g.alphaHash=!0),this.alphaToCoverage===!0&&(g.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(g.premultipliedAlpha=!0),this.forceSinglePass===!0&&(g.forceSinglePass=!0),this.wireframe===!0&&(g.wireframe=!0),this.wireframeLinewidth>1&&(g.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(g.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(g.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(g.flatShading=!0),this.visible===!1&&(g.visible=!1),this.toneMapped===!1&&(g.toneMapped=!1),this.fog===!1&&(g.fog=!1),Object.keys(this.userData).length>0&&(g.userData=this.userData);function B(t){const Q=[];for(const i in t){const C=t[i];delete C.metadata,Q.push(C)}return Q}if(I){const t=B(A.textures),Q=B(A.images);t.length>0&&(g.textures=t),Q.length>0&&(g.images=Q)}return g}clone(){return new this.constructor().copy(this)}copy(A){this.name=A.name,this.blending=A.blending,this.side=A.side,this.vertexColors=A.vertexColors,this.opacity=A.opacity,this.transparent=A.transparent,this.blendSrc=A.blendSrc,this.blendDst=A.blendDst,this.blendEquation=A.blendEquation,this.blendSrcAlpha=A.blendSrcAlpha,this.blendDstAlpha=A.blendDstAlpha,this.blendEquationAlpha=A.blendEquationAlpha,this.blendColor.copy(A.blendColor),this.blendAlpha=A.blendAlpha,this.depthFunc=A.depthFunc,this.depthTest=A.depthTest,this.depthWrite=A.depthWrite,this.stencilWriteMask=A.stencilWriteMask,this.stencilFunc=A.stencilFunc,this.stencilRef=A.stencilRef,this.stencilFuncMask=A.stencilFuncMask,this.stencilFail=A.stencilFail,this.stencilZFail=A.stencilZFail,this.stencilZPass=A.stencilZPass,this.stencilWrite=A.stencilWrite;const I=A.clippingPlanes;let g=null;if(I!==null){const B=I.length;g=new Array(B);for(let t=0;t!==B;++t)g[t]=I[t].clone()}return this.clippingPlanes=g,this.clipIntersection=A.clipIntersection,this.clipShadows=A.clipShadows,this.shadowSide=A.shadowSide,this.colorWrite=A.colorWrite,this.precision=A.precision,this.polygonOffset=A.polygonOffset,this.polygonOffsetFactor=A.polygonOffsetFactor,this.polygonOffsetUnits=A.polygonOffsetUnits,this.dithering=A.dithering,this.alphaTest=A.alphaTest,this.alphaHash=A.alphaHash,this.alphaToCoverage=A.alphaToCoverage,this.premultipliedAlpha=A.premultipliedAlpha,this.forceSinglePass=A.forceSinglePass,this.visible=A.visible,this.toneMapped=A.toneMapped,this.userData=JSON.parse(JSON.stringify(A.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(A){A===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class cC extends FQ{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new XI(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new VI,this.combine=Oi,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}}const cA=new f,nB=new zA;class hg{constructor(A,I,g=!1){if(Array.isArray(A))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=A,this.itemSize=I,this.count=A!==void 0?A.length/I:0,this.normalized=g,this.usage=CQ,this.updateRanges=[],this.gpuType=Xi,this.version=0}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}setUsage(A){return this.usage=A,this}addUpdateRange(A,I){this.updateRanges.push({start:A,count:I})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.name=A.name,this.array=new A.array.constructor(A.array),this.itemSize=A.itemSize,this.count=A.count,this.normalized=A.normalized,this.usage=A.usage,this.gpuType=A.gpuType,this}copyAt(A,I,g){A*=this.itemSize,g*=I.itemSize;for(let B=0,t=this.itemSize;B<t;B++)this.array[A+B]=I.array[g+B];return this}copyArray(A){return this.array.set(A),this}applyMatrix3(A){if(this.itemSize===2)for(let I=0,g=this.count;I<g;I++)nB.fromBufferAttribute(this,I),nB.applyMatrix3(A),this.setXY(I,nB.x,nB.y);else if(this.itemSize===3)for(let I=0,g=this.count;I<g;I++)cA.fromBufferAttribute(this,I),cA.applyMatrix3(A),this.setXYZ(I,cA.x,cA.y,cA.z);return this}applyMatrix4(A){for(let I=0,g=this.count;I<g;I++)cA.fromBufferAttribute(this,I),cA.applyMatrix4(A),this.setXYZ(I,cA.x,cA.y,cA.z);return this}applyNormalMatrix(A){for(let I=0,g=this.count;I<g;I++)cA.fromBufferAttribute(this,I),cA.applyNormalMatrix(A),this.setXYZ(I,cA.x,cA.y,cA.z);return this}transformDirection(A){for(let I=0,g=this.count;I<g;I++)cA.fromBufferAttribute(this,I),cA.transformDirection(A),this.setXYZ(I,cA.x,cA.y,cA.z);return this}set(A,I=0){return this.array.set(A,I),this}getComponent(A,I){let g=this.array[A*this.itemSize+I];return this.normalized&&(g=Kg(g,this.array)),g}setComponent(A,I,g){return this.normalized&&(g=ZA(g,this.array)),this.array[A*this.itemSize+I]=g,this}getX(A){let I=this.array[A*this.itemSize];return this.normalized&&(I=Kg(I,this.array)),I}setX(A,I){return this.normalized&&(I=ZA(I,this.array)),this.array[A*this.itemSize]=I,this}getY(A){let I=this.array[A*this.itemSize+1];return this.normalized&&(I=Kg(I,this.array)),I}setY(A,I){return this.normalized&&(I=ZA(I,this.array)),this.array[A*this.itemSize+1]=I,this}getZ(A){let I=this.array[A*this.itemSize+2];return this.normalized&&(I=Kg(I,this.array)),I}setZ(A,I){return this.normalized&&(I=ZA(I,this.array)),this.array[A*this.itemSize+2]=I,this}getW(A){let I=this.array[A*this.itemSize+3];return this.normalized&&(I=Kg(I,this.array)),I}setW(A,I){return this.normalized&&(I=ZA(I,this.array)),this.array[A*this.itemSize+3]=I,this}setXY(A,I,g){return A*=this.itemSize,this.normalized&&(I=ZA(I,this.array),g=ZA(g,this.array)),this.array[A+0]=I,this.array[A+1]=g,this}setXYZ(A,I,g,B){return A*=this.itemSize,this.normalized&&(I=ZA(I,this.array),g=ZA(g,this.array),B=ZA(B,this.array)),this.array[A+0]=I,this.array[A+1]=g,this.array[A+2]=B,this}setXYZW(A,I,g,B,t){return A*=this.itemSize,this.normalized&&(I=ZA(I,this.array),g=ZA(g,this.array),B=ZA(B,this.array),t=ZA(t,this.array)),this.array[A+0]=I,this.array[A+1]=g,this.array[A+2]=B,this.array[A+3]=t,this}onUpload(A){return this.onUploadCallback=A,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const A={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(A.name=this.name),this.usage!==CQ&&(A.usage=this.usage),A}}class DC extends hg{constructor(A,I,g){super(new Uint16Array(A),I,g)}}class lC extends hg{constructor(A,I,g){super(new Uint32Array(A),I,g)}}class rB extends hg{constructor(A,I,g){super(new Float32Array(A),I,g)}}let yC=0;const II=new LA,Dt=new WA,cg=new f,PA=new ig,zg=new ig,fA=new f;class hB extends Hg{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:yC++}),this.uuid=bg(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(A){return Array.isArray(A)?this.index=new($i(A)?lC:DC)(A,1):this.index=A,this}setIndirect(A){return this.indirect=A,this}getIndirect(){return this.indirect}getAttribute(A){return this.attributes[A]}setAttribute(A,I){return this.attributes[A]=I,this}deleteAttribute(A){return delete this.attributes[A],this}hasAttribute(A){return this.attributes[A]!==void 0}addGroup(A,I,g=0){this.groups.push({start:A,count:I,materialIndex:g})}clearGroups(){this.groups=[]}setDrawRange(A,I){this.drawRange.start=A,this.drawRange.count=I}applyMatrix4(A){const I=this.attributes.position;I!==void 0&&(I.applyMatrix4(A),I.needsUpdate=!0);const g=this.attributes.normal;if(g!==void 0){const t=new hI().getNormalMatrix(A);g.applyNormalMatrix(t),g.needsUpdate=!0}const B=this.attributes.tangent;return B!==void 0&&(B.transformDirection(A),B.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(A){return II.makeRotationFromQuaternion(A),this.applyMatrix4(II),this}rotateX(A){return II.makeRotationX(A),this.applyMatrix4(II),this}rotateY(A){return II.makeRotationY(A),this.applyMatrix4(II),this}rotateZ(A){return II.makeRotationZ(A),this.applyMatrix4(II),this}translate(A,I,g){return II.makeTranslation(A,I,g),this.applyMatrix4(II),this}scale(A,I,g){return II.makeScale(A,I,g),this.applyMatrix4(II),this}lookAt(A){return Dt.lookAt(A),Dt.updateMatrix(),this.applyMatrix4(Dt.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(cg).negate(),this.translate(cg.x,cg.y,cg.z),this}setFromPoints(A){const I=this.getAttribute("position");if(I===void 0){const g=[];for(let B=0,t=A.length;B<t;B++){const Q=A[B];g.push(Q.x,Q.y,Q.z||0)}this.setAttribute("position",new rB(g,3))}else{const g=Math.min(A.length,I.count);for(let B=0;B<g;B++){const t=A[B];I.setXYZ(B,t.x,t.y,t.z||0)}A.length>I.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),I.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ig);const A=this.attributes.position,I=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new f(-1/0,-1/0,-1/0),new f(1/0,1/0,1/0));return}if(A!==void 0){if(this.boundingBox.setFromBufferAttribute(A),I)for(let g=0,B=I.length;g<B;g++){const t=I[g];PA.setFromBufferAttribute(t),this.morphTargetsRelative?(fA.addVectors(this.boundingBox.min,PA.min),this.boundingBox.expandByPoint(fA),fA.addVectors(this.boundingBox.max,PA.max),this.boundingBox.expandByPoint(fA)):(this.boundingBox.expandByPoint(PA.min),this.boundingBox.expandByPoint(PA.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error(\'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.\',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new hQ);const A=this.attributes.position,I=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new f,1/0);return}if(A){const g=this.boundingSphere.center;if(PA.setFromBufferAttribute(A),I)for(let t=0,Q=I.length;t<Q;t++){const i=I[t];zg.setFromBufferAttribute(i),this.morphTargetsRelative?(fA.addVectors(PA.min,zg.min),PA.expandByPoint(fA),fA.addVectors(PA.max,zg.max),PA.expandByPoint(fA)):(PA.expandByPoint(zg.min),PA.expandByPoint(zg.max))}PA.getCenter(g);let B=0;for(let t=0,Q=A.count;t<Q;t++)fA.fromBufferAttribute(A,t),B=Math.max(B,g.distanceToSquared(fA));if(I)for(let t=0,Q=I.length;t<Q;t++){const i=I[t],C=this.morphTargetsRelative;for(let s=0,o=i.count;s<o;s++)fA.fromBufferAttribute(i,s),C&&(cg.fromBufferAttribute(A,s),fA.add(cg)),B=Math.max(B,g.distanceToSquared(fA))}this.boundingSphere.radius=Math.sqrt(B),isNaN(this.boundingSphere.radius)&&console.error(\'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.\',this)}}computeTangents(){const A=this.index,I=this.attributes;if(A===null||I.position===void 0||I.normal===void 0||I.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const g=I.position,B=I.normal,t=I.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new hg(new Float32Array(4*g.count),4));const Q=this.getAttribute("tangent"),i=[],C=[];for(let S=0;S<g.count;S++)i[S]=new f,C[S]=new f;const s=new f,o=new f,e=new f,a=new zA,n=new zA,r=new zA,D=new f,l=new f;function y(S,N,H){s.fromBufferAttribute(g,S),o.fromBufferAttribute(g,N),e.fromBufferAttribute(g,H),a.fromBufferAttribute(t,S),n.fromBufferAttribute(t,N),r.fromBufferAttribute(t,H),o.sub(s),e.sub(s),n.sub(a),r.sub(a);const U=1/(n.x*r.y-r.x*n.y);isFinite(U)&&(D.copy(o).multiplyScalar(r.y).addScaledVector(e,-n.y).multiplyScalar(U),l.copy(e).multiplyScalar(n.x).addScaledVector(o,-r.x).multiplyScalar(U),i[S].add(D),i[N].add(D),i[H].add(D),C[S].add(l),C[N].add(l),C[H].add(l))}let w=this.groups;w.length===0&&(w=[{start:0,count:A.count}]);for(let S=0,N=w.length;S<N;++S){const H=w[S],U=H.start,m=H.count;for(let J=U,K=U+m;J<K;J+=3)y(A.getX(J+0),A.getX(J+1),A.getX(J+2))}const u=new f,G=new f,M=new f,x=new f;function k(S){M.fromBufferAttribute(B,S),x.copy(M);const N=i[S];u.copy(N),u.sub(M.multiplyScalar(M.dot(N))).normalize(),G.crossVectors(x,N);const U=G.dot(C[S])<0?-1:1;Q.setXYZW(S,u.x,u.y,u.z,U)}for(let S=0,N=w.length;S<N;++S){const H=w[S],U=H.start,m=H.count;for(let J=U,K=U+m;J<K;J+=3)k(A.getX(J+0)),k(A.getX(J+1)),k(A.getX(J+2))}}computeVertexNormals(){const A=this.index,I=this.getAttribute("position");if(I!==void 0){let g=this.getAttribute("normal");if(g===void 0)g=new hg(new Float32Array(I.count*3),3),this.setAttribute("normal",g);else for(let a=0,n=g.count;a<n;a++)g.setXYZ(a,0,0,0);const B=new f,t=new f,Q=new f,i=new f,C=new f,s=new f,o=new f,e=new f;if(A)for(let a=0,n=A.count;a<n;a+=3){const r=A.getX(a+0),D=A.getX(a+1),l=A.getX(a+2);B.fromBufferAttribute(I,r),t.fromBufferAttribute(I,D),Q.fromBufferAttribute(I,l),o.subVectors(Q,t),e.subVectors(B,t),o.cross(e),i.fromBufferAttribute(g,r),C.fromBufferAttribute(g,D),s.fromBufferAttribute(g,l),i.add(o),C.add(o),s.add(o),g.setXYZ(r,i.x,i.y,i.z),g.setXYZ(D,C.x,C.y,C.z),g.setXYZ(l,s.x,s.y,s.z)}else for(let a=0,n=I.count;a<n;a+=3)B.fromBufferAttribute(I,a+0),t.fromBufferAttribute(I,a+1),Q.fromBufferAttribute(I,a+2),o.subVectors(Q,t),e.subVectors(B,t),o.cross(e),g.setXYZ(a+0,o.x,o.y,o.z),g.setXYZ(a+1,o.x,o.y,o.z),g.setXYZ(a+2,o.x,o.y,o.z);this.normalizeNormals(),g.needsUpdate=!0}}normalizeNormals(){const A=this.attributes.normal;for(let I=0,g=A.count;I<g;I++)fA.fromBufferAttribute(A,I),fA.normalize(),A.setXYZ(I,fA.x,fA.y,fA.z)}toNonIndexed(){function A(i,C){const s=i.array,o=i.itemSize,e=i.normalized,a=new s.constructor(C.length*o);let n=0,r=0;for(let D=0,l=C.length;D<l;D++){i.isInterleavedBufferAttribute?n=C[D]*i.data.stride+i.offset:n=C[D]*o;for(let y=0;y<o;y++)a[r++]=s[n++]}return new hg(a,o,e)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const I=new hB,g=this.index.array,B=this.attributes;for(const i in B){const C=B[i],s=A(C,g);I.setAttribute(i,s)}const t=this.morphAttributes;for(const i in t){const C=[],s=t[i];for(let o=0,e=s.length;o<e;o++){const a=s[o],n=A(a,g);C.push(n)}I.morphAttributes[i]=C}I.morphTargetsRelative=this.morphTargetsRelative;const Q=this.groups;for(let i=0,C=Q.length;i<C;i++){const s=Q[i];I.addGroup(s.start,s.count,s.materialIndex)}return I}toJSON(){const A={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(A.uuid=this.uuid,A.type=this.type,this.name!==""&&(A.name=this.name),Object.keys(this.userData).length>0&&(A.userData=this.userData),this.parameters!==void 0){const C=this.parameters;for(const s in C)C[s]!==void 0&&(A[s]=C[s]);return A}A.data={attributes:{}};const I=this.index;I!==null&&(A.data.index={type:I.array.constructor.name,array:Array.prototype.slice.call(I.array)});const g=this.attributes;for(const C in g){const s=g[C];A.data.attributes[C]=s.toJSON(A.data)}const B={};let t=!1;for(const C in this.morphAttributes){const s=this.morphAttributes[C],o=[];for(let e=0,a=s.length;e<a;e++){const n=s[e];o.push(n.toJSON(A.data))}o.length>0&&(B[C]=o,t=!0)}t&&(A.data.morphAttributes=B,A.data.morphTargetsRelative=this.morphTargetsRelative);const Q=this.groups;Q.length>0&&(A.data.groups=JSON.parse(JSON.stringify(Q)));const i=this.boundingSphere;return i!==null&&(A.data.boundingSphere={center:i.center.toArray(),radius:i.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const I={};this.name=A.name;const g=A.index;g!==null&&this.setIndex(g.clone(I));const B=A.attributes;for(const s in B){const o=B[s];this.setAttribute(s,o.clone(I))}const t=A.morphAttributes;for(const s in t){const o=[],e=t[s];for(let a=0,n=e.length;a<n;a++)o.push(e[a].clone(I));this.morphAttributes[s]=o}this.morphTargetsRelative=A.morphTargetsRelative;const Q=A.groups;for(let s=0,o=Q.length;s<o;s++){const e=Q[s];this.addGroup(e.start,e.count,e.materialIndex)}const i=A.boundingBox;i!==null&&(this.boundingBox=i.clone());const C=A.boundingSphere;return C!==null&&(this.boundingSphere=C.clone()),this.drawRange.start=A.drawRange.start,this.drawRange.count=A.drawRange.count,this.userData=A.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const SQ=new LA,PI=new CC,cB=new hQ,NQ=new f,DB=new f,lB=new f,yB=new f,lt=new f,dB=new f,pQ=new f,wB=new f;class MQ extends WA{constructor(A=new hB,I=new cC){super(),this.isMesh=!0,this.type="Mesh",this.geometry=A,this.material=I,this.updateMorphTargets()}copy(A,I){return super.copy(A,I),A.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=A.morphTargetInfluences.slice()),A.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},A.morphTargetDictionary)),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}updateMorphTargets(){const I=this.geometry.morphAttributes,g=Object.keys(I);if(g.length>0){const B=I[g[0]];if(B!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,Q=B.length;t<Q;t++){const i=B[t].name||String(t);this.morphTargetInfluences.push(0),this.morphTargetDictionary[i]=t}}}}getVertexPosition(A,I){const g=this.geometry,B=g.attributes.position,t=g.morphAttributes.position,Q=g.morphTargetsRelative;I.fromBufferAttribute(B,A);const i=this.morphTargetInfluences;if(t&&i){dB.set(0,0,0);for(let C=0,s=t.length;C<s;C++){const o=i[C],e=t[C];o!==0&&(lt.fromBufferAttribute(e,A),Q?dB.addScaledVector(lt,o):dB.addScaledVector(lt.sub(I),o))}I.add(dB)}return I}raycast(A,I){const g=this.geometry,B=this.material,t=this.matrixWorld;B!==void 0&&(g.boundingSphere===null&&g.computeBoundingSphere(),cB.copy(g.boundingSphere),cB.applyMatrix4(t),PI.copy(A.ray).recast(A.near),!(cB.containsPoint(PI.origin)===!1&&(PI.intersectSphere(cB,NQ)===null||PI.origin.distanceToSquared(NQ)>(A.far-A.near)**2))&&(SQ.copy(t).invert(),PI.copy(A.ray).applyMatrix4(SQ),!(g.boundingBox!==null&&PI.intersectsBox(g.boundingBox)===!1)&&this._computeIntersections(A,I,PI)))}_computeIntersections(A,I,g){let B;const t=this.geometry,Q=this.material,i=t.index,C=t.attributes.position,s=t.attributes.uv,o=t.attributes.uv1,e=t.attributes.normal,a=t.groups,n=t.drawRange;if(i!==null)if(Array.isArray(Q))for(let r=0,D=a.length;r<D;r++){const l=a[r],y=Q[l.materialIndex],w=Math.max(l.start,n.start),u=Math.min(i.count,Math.min(l.start+l.count,n.start+n.count));for(let G=w,M=u;G<M;G+=3){const x=i.getX(G),k=i.getX(G+1),S=i.getX(G+2);B=uB(this,y,A,g,s,o,e,x,k,S),B&&(B.faceIndex=Math.floor(G/3),B.face.materialIndex=l.materialIndex,I.push(B))}}else{const r=Math.max(0,n.start),D=Math.min(i.count,n.start+n.count);for(let l=r,y=D;l<y;l+=3){const w=i.getX(l),u=i.getX(l+1),G=i.getX(l+2);B=uB(this,Q,A,g,s,o,e,w,u,G),B&&(B.faceIndex=Math.floor(l/3),I.push(B))}}else if(C!==void 0)if(Array.isArray(Q))for(let r=0,D=a.length;r<D;r++){const l=a[r],y=Q[l.materialIndex],w=Math.max(l.start,n.start),u=Math.min(C.count,Math.min(l.start+l.count,n.start+n.count));for(let G=w,M=u;G<M;G+=3){const x=G,k=G+1,S=G+2;B=uB(this,y,A,g,s,o,e,x,k,S),B&&(B.faceIndex=Math.floor(G/3),B.face.materialIndex=l.materialIndex,I.push(B))}}else{const r=Math.max(0,n.start),D=Math.min(C.count,n.start+n.count);for(let l=r,y=D;l<y;l+=3){const w=l,u=l+1,G=l+2;B=uB(this,Q,A,g,s,o,e,w,u,G),B&&(B.faceIndex=Math.floor(l/3),I.push(B))}}}}function dC(E,A,I,g,B,t,Q,i){let C;if(A.side===vi?C=g.intersectTriangle(Q,t,B,!0,i):C=g.intersectTriangle(B,t,Q,A.side===jB,i),C===null)return null;wB.copy(i),wB.applyMatrix4(E.matrixWorld);const s=I.ray.origin.distanceTo(wB);return s<I.near||s>I.far?null:{distance:s,point:wB.clone(),object:E}}function uB(E,A,I,g,B,t,Q,i,C,s){E.getVertexPosition(i,DB),E.getVertexPosition(C,lB),E.getVertexPosition(s,yB);const o=dC(E,A,I,g,DB,lB,yB,pQ);if(o){const e=new f;eI.getBarycoord(pQ,DB,lB,yB,e),B&&(o.uv=eI.getInterpolatedAttribute(B,i,C,s,e,new zA)),t&&(o.uv1=eI.getInterpolatedAttribute(t,i,C,s,e,new zA)),Q&&(o.normal=eI.getInterpolatedAttribute(Q,i,C,s,e,new f),o.normal.dot(g.direction)>0&&o.normal.multiplyScalar(-1));const a={a:i,b:C,c:s,normal:new f,materialIndex:0};eI.getNormal(DB,lB,yB,a.normal),o.face=a,o.barycoord=e}return o}function wC(E){const A={};for(const I in E){A[I]={};for(const g in E[I]){const B=E[I][g];B&&(B.isColor||B.isMatrix3||B.isMatrix4||B.isVector2||B.isVector3||B.isVector4||B.isTexture||B.isQuaternion)?B.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),A[I][g]=null):A[I][g]=B.clone():Array.isArray(B)?A[I][g]=B.slice():A[I][g]=B}}return A}function uC(E){const A=[];for(let I=0;I<E.length;I++)A.push(E[I].clone());return A}var fC=`void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}`,GC=`void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}`;class FC extends FQ{constructor(A){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=fC,this.fragmentShader=GC,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,A!==void 0&&this.setValues(A)}copy(A){return super.copy(A),this.fragmentShader=A.fragmentShader,this.vertexShader=A.vertexShader,this.uniforms=wC(A.uniforms),this.uniformsGroups=uC(A.uniformsGroups),this.defines=Object.assign({},A.defines),this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.fog=A.fog,this.lights=A.lights,this.clipping=A.clipping,this.extensions=Object.assign({},A.extensions),this.glslVersion=A.glslVersion,this}toJSON(A){const I=super.toJSON(A);I.glslVersion=this.glslVersion,I.uniforms={};for(const B in this.uniforms){const Q=this.uniforms[B].value;Q&&Q.isTexture?I.uniforms[B]={type:"t",value:Q.toJSON(A).uuid}:Q&&Q.isColor?I.uniforms[B]={type:"c",value:Q.getHex()}:Q&&Q.isVector2?I.uniforms[B]={type:"v2",value:Q.toArray()}:Q&&Q.isVector3?I.uniforms[B]={type:"v3",value:Q.toArray()}:Q&&Q.isVector4?I.uniforms[B]={type:"v4",value:Q.toArray()}:Q&&Q.isMatrix3?I.uniforms[B]={type:"m3",value:Q.toArray()}:Q&&Q.isMatrix4?I.uniforms[B]={type:"m4",value:Q.toArray()}:I.uniforms[B]={value:Q}}Object.keys(this.defines).length>0&&(I.defines=this.defines),I.vertexShader=this.vertexShader,I.fragmentShader=this.fragmentShader,I.lights=this.lights,I.clipping=this.clipping;const g={};for(const B in this.extensions)this.extensions[B]===!0&&(g[B]=!0);return Object.keys(g).length>0&&(I.extensions=g),I}}class kQ extends WA{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new LA,this.projectionMatrix=new LA,this.projectionMatrixInverse=new LA,this.coordinateSystem=Lg}copy(A,I){return super.copy(A,I),this.matrixWorldInverse.copy(A.matrixWorldInverse),this.projectionMatrix.copy(A.projectionMatrix),this.projectionMatrixInverse.copy(A.projectionMatrixInverse),this.coordinateSystem=A.coordinateSystem,this}getWorldDirection(A){return super.getWorldDirection(A).negate()}updateMatrixWorld(A){super.updateMatrixWorld(A),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(A,I){super.updateWorldMatrix(A,I),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class RQ extends WA{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new VI,this.environmentIntensity=1,this.environmentRotation=new VI,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(A,I){return super.copy(A,I),A.background!==null&&(this.background=A.background.clone()),A.environment!==null&&(this.environment=A.environment.clone()),A.fog!==null&&(this.fog=A.fog.clone()),this.backgroundBlurriness=A.backgroundBlurriness,this.backgroundIntensity=A.backgroundIntensity,this.backgroundRotation.copy(A.backgroundRotation),this.environmentIntensity=A.environmentIntensity,this.environmentRotation.copy(A.environmentRotation),A.overrideMaterial!==null&&(this.overrideMaterial=A.overrideMaterial.clone()),this.matrixAutoUpdate=A.matrixAutoUpdate,this}toJSON(A){const I=super.toJSON(A);return this.fog!==null&&(I.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(I.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(I.object.backgroundIntensity=this.backgroundIntensity),I.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(I.object.environmentIntensity=this.environmentIntensity),I.object.environmentRotation=this.environmentRotation.toArray(),I}}class SC extends cI{constructor(A=null,I=1,g=1,B,t,Q,i,C,s=mI,o=mI,e,a){super(null,Q,i,C,s,o,B,t,e,a),this.isDataTexture=!0,this.image={data:A,width:I,height:g},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class fB extends hB{constructor(A=1,I=1,g=1,B=1){super(),this.type="PlaneGeometry",this.parameters={width:A,height:I,widthSegments:g,heightSegments:B};const t=A/2,Q=I/2,i=Math.floor(g),C=Math.floor(B),s=i+1,o=C+1,e=A/i,a=I/C,n=[],r=[],D=[],l=[];for(let y=0;y<o;y++){const w=y*a-Q;for(let u=0;u<s;u++){const G=u*e-t;r.push(G,-w,0),D.push(0,0,1),l.push(u/i),l.push(1-y/C)}}for(let y=0;y<C;y++)for(let w=0;w<i;w++){const u=w+s*y,G=w+s*(y+1),M=w+1+s*(y+1),x=w+1+s*y;n.push(u,G,x),n.push(G,M,x)}this.setIndex(n),this.setAttribute("position",new rB(r,3)),this.setAttribute("normal",new rB(D,3)),this.setAttribute("uv",new rB(l,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new fB(A.width,A.height,A.widthSegments,A.heightSegments)}}class yt extends FC{constructor(A){super(A),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}const mQ={enabled:!1,files:{},add:function(E,A){this.enabled!==!1&&(this.files[E]=A)},get:function(E){if(this.enabled!==!1)return this.files[E]},remove:function(E){delete this.files[E]},clear:function(){this.files={}}};class NC{constructor(A,I,g){const B=this;let t=!1,Q=0,i=0,C;const s=[];this.onStart=void 0,this.onLoad=A,this.onProgress=I,this.onError=g,this.itemStart=function(o){i++,t===!1&&B.onStart!==void 0&&B.onStart(o,Q,i),t=!0},this.itemEnd=function(o){Q++,B.onProgress!==void 0&&B.onProgress(o,Q,i),Q===i&&(t=!1,B.onLoad!==void 0&&B.onLoad())},this.itemError=function(o){B.onError!==void 0&&B.onError(o)},this.resolveURL=function(o){return C?C(o):o},this.setURLModifier=function(o){return C=o,this},this.addHandler=function(o,e){return s.push(o,e),this},this.removeHandler=function(o){const e=s.indexOf(o);return e!==-1&&s.splice(e,2),this},this.getHandler=function(o){for(let e=0,a=s.length;e<a;e+=2){const n=s[e],r=s[e+1];if(n.global&&(n.lastIndex=0),n.test(o))return r}return null}}}const pC=new NC;class dt{constructor(A){this.manager=A!==void 0?A:pC,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(A,I){const g=this;return new Promise(function(B,t){g.load(A,B,I,t)})}parse(){}setCrossOrigin(A){return this.crossOrigin=A,this}setWithCredentials(A){return this.withCredentials=A,this}setPath(A){return this.path=A,this}setResourcePath(A){return this.resourcePath=A,this}setRequestHeader(A){return this.requestHeader=A,this}}dt.DEFAULT_MATERIAL_NAME="__DEFAULT";const GI={};class MC extends Error{constructor(A,I){super(A),this.response=I}}class kC extends dt{constructor(A){super(A)}load(A,I,g,B){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const t=mQ.get(A);if(t!==void 0)return this.manager.itemStart(A),setTimeout(()=>{I&&I(t),this.manager.itemEnd(A)},0),t;if(GI[A]!==void 0){GI[A].push({onLoad:I,onProgress:g,onError:B});return}GI[A]=[],GI[A].push({onLoad:I,onProgress:g,onError:B});const Q=new Request(A,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),i=this.mimeType,C=this.responseType;fetch(Q).then(s=>{if(s.status===200||s.status===0){if(s.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||s.body===void 0||s.body.getReader===void 0)return s;const o=GI[A],e=s.body.getReader(),a=s.headers.get("X-File-Size")||s.headers.get("Content-Length"),n=a?parseInt(a):0,r=n!==0;let D=0;const l=new ReadableStream({start(y){w();function w(){e.read().then(({done:u,value:G})=>{if(u)y.close();else{D+=G.byteLength;const M=new ProgressEvent("progress",{lengthComputable:r,loaded:D,total:n});for(let x=0,k=o.length;x<k;x++){const S=o[x];S.onProgress&&S.onProgress(M)}y.enqueue(G),w()}},u=>{y.error(u)})}}});return new Response(l)}else throw new MC(`fetch for "${s.url}" responded with ${s.status}: ${s.statusText}`,s)}).then(s=>{switch(C){case"arraybuffer":return s.arrayBuffer();case"blob":return s.blob();case"document":return s.text().then(o=>new DOMParser().parseFromString(o,i));case"json":return s.json();default:if(i===void 0)return s.text();{const e=/charset="?([^;"\\s]*)"?/i.exec(i),a=e&&e[1]?e[1].toLowerCase():void 0,n=new TextDecoder(a);return s.arrayBuffer().then(r=>n.decode(r))}}}).then(s=>{mQ.add(A,s);const o=GI[A];delete GI[A];for(let e=0,a=o.length;e<a;e++){const n=o[e];n.onLoad&&n.onLoad(s)}}).catch(s=>{const o=GI[A];if(o===void 0)throw this.manager.itemError(A),s;delete GI[A];for(let e=0,a=o.length;e<a;e++){const n=o[e];n.onError&&n.onError(s)}this.manager.itemError(A)}).finally(()=>{this.manager.itemEnd(A)}),this.manager.itemStart(A)}setResponseType(A){return this.responseType=A,this}setMimeType(A){return this.mimeType=A,this}}class wt{constructor(A,I,g,B){wt.prototype.isMatrix2=!0,this.elements=[1,0,0,1],A!==void 0&&this.set(A,I,g,B)}identity(){return this.set(1,0,0,1),this}fromArray(A,I=0){for(let g=0;g<4;g++)this.elements[g]=A[g+I];return this}set(A,I,g,B){const t=this.elements;return t[0]=A,t[2]=I,t[1]=g,t[3]=B,this}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Ot}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Ot);const oI=-9,FI=(9-oI)/254,ut=Math.exp(oI),RC=11,mC=11,tA=1<<RC,bI=1<<mC,xQ=1,xC=!0;function Dg(E){return E==="int"||E==="ivec2"||E==="ivec3"||E==="ivec4"}function lg(E){return E==="uint"||E==="uvec2"||E==="uvec3"||E==="uvec4"}function UC(E){return E==="float"||E==="vec2"||E==="vec3"||E==="vec4"}function YC(E){return E==="mat2"||E==="mat2x2"||E==="mat2x3"||E==="mat2x4"||E==="mat3"||E==="mat3x2"||E==="mat3x3"||E==="mat3x4"||E==="mat4"||E==="mat4x2"||E==="mat4x3"||E==="mat4x4"}function GB(E){return UC(E)||YC(E)}function yg(E){return E==="mat2"||E==="mat2x2"}function dg(E){return E==="mat3"||E==="mat3x3"}function wg(E){return E==="mat4"||E==="mat4x4"}function yA(E){return Math.trunc(E).toString()}function dA(E){return`${Math.max(0,Math.trunc(E)).toString()}u`}function gA(E){return E===Number.POSITIVE_INFINITY?"INFINITY":E===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(E)?E.toFixed(1):E.toString()}function jI(E){return E instanceof _I?E.type:E.dynoOut().type}class _I{constructor(A){this.__isDynoValue=!0,this.type=A}}class jA extends _I{constructor(A,I){super(A.outTypes[I]),this.dyno=A,this.key=I}}class FB extends _I{constructor(A,I){super(A),this.literal=I}getLiteral(){return this.literal}}class JC extends FB{constructor(A,I){super(A,""),this.value=I}getLiteral(){const{type:A,value:I}=this;switch(A){case"bool":return I?"true":"false";case"uint":return dA(I);case"int":return yA(I);case"float":return gA(I);case"bvec2":{const g=I;return`bvec2(${g[0]}, ${g[1]})`}case"uvec2":{if(I instanceof zA)return`uvec2(${dA(I.x)}, ${dA(I.y)})`;const g=I;return`uvec2(${dA(g[0])}, ${dA(g[1])})`}case"ivec2":{if(I instanceof zA)return`ivec2(${yA(I.x)}, ${yA(I.y)})`;const g=I;return`ivec2(${yA(g[0])}, ${yA(g[1])})`}case"vec2":{if(I instanceof zA)return`vec2(${gA(I.x)}, ${gA(I.y)})`;const g=I;return`vec2(${gA(g[0])}, ${gA(g[1])})`}case"bvec3":{const g=I;return`bvec3(${g[0]}, ${g[1]}, ${g[2]})`}case"uvec3":{if(I instanceof f)return`uvec3(${dA(I.x)}, ${dA(I.y)}, ${dA(I.z)})`;const g=I;return`uvec3(${dA(g[0])}, ${dA(g[1])}, ${dA(g[2])})`}case"ivec3":{if(I instanceof f)return`ivec3(${yA(I.x)}, ${yA(I.y)}, ${yA(I.z)})`;const g=I;return`ivec3(${yA(g[0])}, ${yA(g[1])}, ${yA(g[2])})`}case"vec3":{if(I instanceof f)return`vec3(${gA(I.x)}, ${gA(I.y)}, ${gA(I.z)})`;const g=I;return`vec3(${gA(g[0])}, ${gA(g[1])}, ${gA(g[2])})`}case"bvec4":{const g=I;return`bvec4(${g[0]}, ${g[1]}, ${g[2]}, ${g[3]})`}case"uvec4":{if(I instanceof qA)return`uvec4(${dA(I.x)}, ${dA(I.y)}, ${dA(I.z)}, ${dA(I.w)})`;const g=I;return`uvec4(${dA(g[0])}, ${dA(g[1])}, ${dA(g[2])}, ${dA(g[3])})`}case"ivec4":{if(I instanceof qA)return`ivec4(${yA(I.x)}, ${yA(I.y)}, ${yA(I.z)}, ${yA(I.w)})`;const g=I;return`ivec4(${yA(g[0])}, ${yA(g[1])}, ${yA(g[2])}, ${yA(g[3])})`}case"vec4":{if(I instanceof qA)return`vec4(${gA(I.x)}, ${gA(I.y)}, ${gA(I.z)}, ${gA(I.w)})`;if(I instanceof uA)return`vec4(${gA(I.x)}, ${gA(I.y)}, ${gA(I.z)}, ${gA(I.w)})`;const g=I;return`vec4(${gA(g[0])}, ${gA(g[1])}, ${gA(g[2])}, ${gA(g[3])})`}case"mat2":case"mat2x2":{const g=I,B=g instanceof wt?g.elements:I,t=new Array(4).fill(0).map((Q,i)=>gA(B[i]));return`${A}(${t.join(", ")})`}case"mat2x3":{const g=I,B=new Array(6).fill(0).map((t,Q)=>gA(g[Q]));return`${A}(${B.join(", ")})`}case"mat2x4":{const g=I,B=new Array(8).fill(0).map((t,Q)=>gA(g[Q]));return`${A}(${B.join(", ")})`}case"mat3":case"mat3x3":{const g=I,B=g instanceof hI?g.elements:I,t=new Array(9).fill(0).map((Q,i)=>gA(B[i]));return`${A}(${t.join(", ")})`}case"mat3x2":{const g=I,B=new Array(6).fill(0).map((t,Q)=>gA(g[Q]));return`${A}(${B.join(", ")})`}case"mat3x4":{const g=I,B=new Array(12).fill(0).map((t,Q)=>gA(g[Q]));return`${A}(${B.join(", ")})`}case"mat4":case"mat4x4":{const g=I,B=g instanceof LA?g.elements:I,t=new Array(16).fill(0).map((Q,i)=>gA(B[i]));return`${A}(${t.join(", ")})`}case"mat4x2":{const g=I,B=new Array(8).fill(0).map((t,Q)=>gA(g[Q]));return`${A}(${B.join(", ")})`}case"mat4x3":{const g=I,B=new Array(12).fill(0).map((t,Q)=>gA(g[Q]));return`${A}(${B.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function LC(E,A){return new JC(E,A)}const UQ=" ";class HC{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=UQ,this.indent=A??UQ}nextSequence(){return this.sequence++}}class bA{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:t,statements:Q,generate:i}){this.inTypes=A??{},this.outTypes=I??{},this.inputs=g??{},this.update=B,this.globals=t,this.statements=Q,this.generate=i??(({inputs:C,outputs:s,compile:o})=>{var e,a;return{globals:(e=this.globals)==null?void 0:e.call(this,{inputs:C,outputs:s,compile:o}),statements:(a=this.statements)==null?void 0:a.call(this,{inputs:C,outputs:s,compile:o})}})}get outputs(){const A={};for(const I in this.outTypes)A[I]=new jA(this,I);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:I,compile:g}){const B=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(I).join(", ")})`],t=[];for(const s in I){const o=I[s];o&&!g.declares.has(o)&&(g.declares.add(o),t.push(s))}const{globals:Q,statements:i,uniforms:C}=this.generate({inputs:A,outputs:I,compile:g});for(const s of Q??[])g.globals.add(s);for(const s in C)g.uniforms[s]=C[s];this.update&&g.updaters.push(this.update);for(const s of t){const o=I[s];o&&(g.uniforms[o]||B.push(`${YQ(o,this.outTypes[s])};`))}return i!=null&&i.length&&(B.push("{"),B.push(...i.map(s=>g.indent+s)),B.push("}")),B}}class bC extends bA{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:t,construct:Q}){super({inTypes:A,outTypes:I,inputs:g,update:B,globals:t,generate:i=>this.generateBlock(i)}),this.construct=Q}generateBlock({inputs:A,outputs:I,compile:g}){var r,D;const B={},t={};for(const l in A)A[l]!=null&&(B[l]=new FB(this.inTypes[l],A[l]));for(const l in I)I[l]!=null&&(t[l]=new _I(this.outTypes[l]));const Q={roots:[]},i=this.construct(B,t,Q);for(const l of((r=this.globals)==null?void 0:r.call(this,{inputs:A,outputs:I,compile:g}))??[])g.globals.add(l);const C=[],s=new Map;function o(l,y,w){let u=s.get(l);if(!u){u={sequence:g.nextSequence(),outNames:new Map,newOuts:new Set},s.set(l,u);for(const G in l.inputs){let M=l.inputs[G];for(;M;){if(M instanceof _I){M instanceof jA&&o(M.dyno,M.key);break}M=M.dynoOut()}}C.push(l)}y&&(w||u.newOuts.add(y),u.outNames.set(y,w??`${y}_${u.sequence}`))}for(const l of Q.roots)o(l);for(const l in t){let y=(i==null?void 0:i[l])??t[l];for(;y;){if(y instanceof _I){y instanceof jA&&o(y.dyno,y.key,I[l]);break}y=y.dynoOut()}t[l]=y}const e=[];for(const l of C){const y={},w={};for(const M in l.inputs){let x=l.inputs[M];for(;x;){if(x instanceof _I){if(x instanceof FB)y[M]=x.getLiteral();else if(x instanceof jA){const k=(D=s.get(x.dyno))==null?void 0:D.outNames.get(x.key);if(!k)throw new Error(`Source not found for ${x.dyno.constructor.name}.${x.key}`);y[M]=k}break}x=x.dynoOut()}}const u=s.get(l)??{outNames:new Map};for(const[M,x]of u.outNames.entries())w[M]=x;const G=l.compile({inputs:y,outputs:w,compile:g});e.push(G)}const a=[];for(const l in I)t[l]instanceof FB&&a.push(`${I[l]} = ${t[l].getLiteral()};`);return a.length>0&&e.push(a),{statements:e.flatMap((l,y)=>y===0?l:["",...l])}}}function SB(E,A,I,{update:g,globals:B}={}){return new bC({inTypes:E,outTypes:A,construct:I,update:g,globals:B})}function ft({inTypes:E,outTypes:A,inputs:I,update:g,globals:B,statements:t,generate:Q}){return new bA({inTypes:E,outTypes:A,inputs:I,update:g,globals:B,statements:t,generate:Q})}function YQ(E,A,I){const g=typeof A=="string"?A:A.type;if(!g)throw new Error(`Invalid DynoType: ${String(A)}`);return`${g} ${E}${I!=null?`[${I}]`:""}`}function SI(E){var t;let A=!1;const I=E.split(`\n`).map(Q=>{const i=Q.trimEnd();return A?i:i.length>0?(A=!0,i):null}).filter(Q=>Q!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(t=I[0].match(/^\\s*/))==null?void 0:t[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(Q=>Q.replace(B,""))}function aI(E){return SI(E).join(`\n`)}class KC extends bA{constructor({a:A,outKey:I,outTypeFunc:g}){const B={a:jI(A)},t=g(jI(A)),Q={[I]:t};super({inTypes:B,outTypes:Q,inputs:{a:A}}),this.outKey=I}dynoOut(){return new jA(this,this.outKey)}}class NB extends bA{constructor({a:A,b:I,outKey:g,outTypeFunc:B}){const t={a:jI(A),b:jI(I)},Q=B(jI(A),jI(I)),i={[g]:Q};super({inTypes:t,outTypes:i,inputs:{a:A,b:I}}),this.outKey=g}dynoOut(){return new jA(this,this.outKey)}}const Gt=new Float32Array(1),JQ=new Uint32Array(Gt.buffer);function ug(E){Gt[0]=E;const A=JQ[0],I=A>>31&1,g=A>>23&255,B=A&8388607,t=I<<15;if(g===255)return B!==0?t|32767:t|31744;const Q=g-127+15;if(Q>=31)return t|31744;if(Q<=0){if(Q<-10)return t;const C=(B|8388608)>>1-Q+13;return t|C}const i=B>>13;return t|Q<<10|i}function aA(E){const A=E>>15&1,I=E>>10&31,g=E&1023;let B;if(I===0)if(g===0)B=A<<31;else{let t=g,Q=-14;for(;(t&1024)===0;)t<<=1,Q--;t&=1023;const i=Q+127,C=t<<13;B=A<<31|i<<23|C}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const t=I-15+127,Q=g<<13;B=A<<31|t<<23|Q}return JQ[0]=B,Gt[0]}function gI(E){return Math.max(0,Math.min(255,Math.round(E*255)))}function LQ(E){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(E),A}function Wg(E,A,I,g,B,t,Q,i,C,s,o,e,a,n,r,D){const l=gI(n),y=gI(r),w=gI(D),u=gI(a),G=TQ(new uA(C,s,o,e)),M=G&255,x=G>>>8&255,k=G>>>16&255,S=t===0?0:Math.min(255,Math.max(0,Math.round((Math.log(t)-oI)/FI)+1)),N=Q===0?0:Math.min(255,Math.max(0,Math.round((Math.log(Q)-oI)/FI)+1)),H=i===0?0:Math.min(255,Math.max(0,Math.round((Math.log(i)-oI)/FI)+1)),U=ug(I),m=ug(g),J=ug(B),K=A*4;E[K]=l|y<<8|w<<16|u<<24,E[K+1]=U|m<<16,E[K+2]=J|M<<16|x<<24,E[K+3]=S|N<<8|H<<16|k<<24}function HQ(E,A,I,g,B){const t=ug(I),Q=ug(g),i=ug(B),C=A*4;E[C+1]=t|Q<<16,E[C+2]=i|E[C+2]&4294901760}function bQ(E,A,I,g,B){const t=I===0?0:Math.min(255,Math.max(0,Math.round((Math.log(I)-oI)/FI)+1)),Q=g===0?0:Math.min(255,Math.max(0,Math.round((Math.log(g)-oI)/FI)+1)),i=B===0?0:Math.min(255,Math.max(0,Math.round((Math.log(B)-oI)/FI)+1)),C=A*4;E[C+3]=t|Q<<8|i<<16|E[C+3]&4278190080}function KQ(E,A,I,g,B,t){const Q=TQ(new uA(I,g,B,t)),i=Q&255,C=Q>>>8&255,s=Q>>>16&255,o=A*4;E[o+2]=E[o+2]&65535|i<<16|C<<24,E[o+3]=E[o+3]&16777215|s<<24}function qC(E,A,I,g,B,t){const Q=gI(I),i=gI(g),C=gI(B),s=gI(t),o=A*4;E[o]=Q|i<<8|C<<16|s<<24}function TC(E,A,I,g,B){const t=gI(I),Q=gI(g),i=gI(B),C=A*4;E[C]=t|Q<<8|i<<16|E[C]&4278190080}function ZC(E,A,I){const g=gI(I),B=A*4;E[B]=E[B]&16777215|g<<24}const zC=new f,WC=new f,vC=new uA,OC=new XI,VC={center:zC,scales:WC,quaternion:vC,color:OC,opacity:0};function qQ(E,A){const I=VC,g=A*4,B=E[g],t=E[g+1],Q=E[g+2],i=E[g+3];I.color.set((B&255)/255,(B>>>8&255)/255,(B>>>16&255)/255),I.opacity=(B>>>24&255)/255,I.center.set(aA(t&65535),aA(t>>>16&65535),aA(Q&65535));const C=i&255;I.scales.x=C===0?0:Math.exp(oI+(C-1)*FI);const s=i>>>8&255;I.scales.y=s===0?0:Math.exp(oI+(s-1)*FI);const o=i>>>16&255;I.scales.z=o===0?0:Math.exp(oI+(o-1)*FI);const e=Q>>>16&65535|i>>>8&16711680;return PC(e,I.quaternion),I}function _A(E){const A=tA,I=Math.max(xQ,Math.min(bI,Math.ceil(E/A))),g=Math.ceil(E/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function pB(E){const A=tA,I=Math.max(xQ,Math.min(bI,Math.ceil(E/A))),g=Math.ceil(E/(A*I));return A*I*g}const XC=aI(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);function TQ(E){const A=E.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?new f(1,0,0):new f(A.x,A.y,A.z).divideScalar(g),t=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let Q=B.x/t,i=B.y/t;if(B.z<0){const n=Q;Q=(1-Math.abs(i))*(Q>=0?1:-1),i=(1-Math.abs(n))*(i>=0?1:-1)}const C=Q*.5+.5,s=i*.5+.5,o=Math.round(C*255),e=Math.round(s*255);return Math.round(I*(255/Math.PI))<<16|e<<8|o}function PC(E,A){const I=E&255,g=E>>>8&255,B=E>>>16&255,t=I/255,Q=g/255;let i=(t-.5)*2,C=(Q-.5)*2;const s=1-(Math.abs(i)+Math.abs(C)),o=Math.max(-s,0);i+=i>=0?-o:o,C+=C>=0?-o:o;const e=new f(i,C,s).normalize(),n=B/255*Math.PI*.5,r=Math.sin(n),D=Math.cos(n);return A.set(e.x*r,e.y*r,e.z*r,D),A}function MB(E,A,I,g){const B=Math.max(-127,Math.min(127,E*127)),t=Math.max(-127,Math.min(127,A*127)),Q=Math.max(-127,Math.min(127,I*127)),i=Math.max(-127,Math.min(127,g*127));return B&255|(t&255)<<8|(Q&255)<<16|(i&255)<<24}function kB(E,A,I){const g=A*2;for(let B=0;B<9;++B){const t=Math.max(-63,Math.min(63,I[B]*63))&127,Q=B*7,i=Q+7,C=Math.floor(Q/32),s=Q-C*32,o=t<<s&4294967295;if(E[g+C]|=o,i>C*32+32){const e=t>>>32-s&4294967295;E[g+C+1]|=e}}}function RB(E,A,I){E[A*4+0]=MB(I[0],I[1],I[2],I[3]),E[A*4+1]=MB(I[4],I[5],I[6],I[7]),E[A*4+2]=MB(I[8],I[9],I[10],I[11]),E[A*4+3]=MB(I[12],I[13],I[14],0)}function mB(E,A,I){const g=A*4;for(let B=0;B<21;++B){const t=Math.max(-31,Math.min(31,I[B]*31))&63,Q=B*6,i=Q+6,C=Math.floor(Q/32),s=Q-C*32,o=t<<s&4294967295;if(E[g+C]|=o,i>C*32+32){const e=t>>>32-s&4294967295;E[g+C+1]|=e}}}function jC(E,A){const I=[];let g=0,B=null;const t=new vt((C,s)=>{if(I.push(C),g+=C.length,s||g>=A){const o=new Uint8Array(g);let e=0;for(const a of I)o.set(a,e),e+=a.length;B=o.slice(0,A)}}),Q=1024;let i=0;for(;B==null&&i<E.length;){const C=E.slice(i,i+Q);t.push(C,!1),i+=Q}if(B==null&&(t.push(new Uint8Array,!0),B==null))throw new Error("Failed to decompress partial gzip");return B}class _C{constructor({fileBytes:A,chunkBytes:I=64*1024}){this.fileBytes=A,this.chunkBytes=I,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new vt((g,B)=>{this.chunks.push(g),this.totalBytes+=g.length})}read(A){for(;this.totalBytes<A&&this.offset<this.fileBytes.length;){const t=Math.min(this.offset+this.chunkBytes,this.fileBytes.length);this.gunzip.push(this.fileBytes.subarray(this.offset,t),!1),this.offset=t}if(this.totalBytes<A&&this.offset>=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes<A)throw new Error(`Unexpected EOF: needed ${A}, got ${this.totalBytes}`);const I=new Uint8Array(this.totalBytes);let g=0;for(const t of this.chunks)I.set(t,g),g+=t.length;const B=I.subarray(0,A);return this.chunks=[I.subarray(A)],this.totalBytes-=A,B}}function ZQ(E,A,I){const g=Math.floor(E.length/32);if(g*32!==E.length)throw new Error("Invalid .splat file size");A(g);const B=new Float32Array(E.buffer);for(let t=0;t<g;++t){const Q=t*32,i=t*8,C=B[i+0],s=B[i+1],o=B[i+2],e=B[i+3],a=B[i+4],n=B[i+5],r=E[Q+24]/255,D=E[Q+25]/255,l=E[Q+26]/255,y=E[Q+27]/255,w=(E[Q+28]-128)/128,u=(E[Q+29]-128)/128,G=(E[Q+30]-128)/128,M=(E[Q+31]-128)/128;I(t,C,s,o,e,a,n,u,G,M,w,y,r,D,l)}}function $C(E){let A=0,I=0,g=new Uint32Array(0);return ZQ(E,B=>{A=B,I=pB(A),g=new Uint32Array(I*4)},(B,t,Q,i,C,s,o,e,a,n,r,D,l,y,w)=>{Wg(g,B,t,Q,i,C,s,o,e,a,n,r,D,l,y,w)}),{packedArray:g,numSplats:A}}const xB={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},zQ={0:0,1:9,2:24,3:45};function AE(E,A,I,g){var D;let Q=0;const i=new DataView(E.buffer,Q,4096);Q+=4096;const C=i.getUint8(0),s=i.getUint8(1);if(C!==0||s<1)throw new Error(`Unsupported .ksplat version: ${C}.${s}`);const o=i.getUint32(4,!0);i.getUint32(16,!0);const e=i.getUint16(20,!0);if(e<0||e>2)throw new Error(`Invalid .ksplat compression level: ${e}`);const a=i.getFloat32(36,!0)||-1.5,n=i.getFloat32(40,!0)||1.5;let r=4096+o*1024;for(let l=0;l<o;++l){let y=function(hA,P){if(e===0)return X.getFloat32(hA+O+P*4,!0);if(e===1)return aA(X.getUint16(hA+O+P*2,!0));const sA=X.getUint8(hA+O+P)/255;return a+sA*(n-a)};const w=new DataView(E.buffer,Q,1024);Q+=1024;const u=w.getUint32(0,!0),G=w.getUint32(4,!0),M=w.getUint32(8,!0),x=w.getUint32(12,!0),k=w.getFloat32(16,!0),S=w.getUint16(20,!0),N=(w.getUint32(24,!0)||((D=xB[e])==null?void 0:D.scaleRange))??1,H=w.getUint32(32,!0),U=H*M,m=w.getUint32(36,!0),J=m*4,K=S*x+J,z=w.getUint16(40,!0),T=zQ[z],{bytesPerCenter:W,bytesPerScale:BA,bytesPerRotation:AA,bytesPerColor:CA,bytesPerSphericalHarmonicsComponent:QA,scaleOffsetBytes:EA,rotationOffsetBytes:IA,colorOffsetBytes:_,sphericalHarmonicsOffsetBytes:O}=xB[e],v=W+BA+AA+CA+T*QA,Z=v*G,RA=Z+K,SA=[0,3,6,1,4,7,2,5,8],NA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],mA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],xA=z>=1?new Float32Array(3*3):void 0,nA=z>=2?new Float32Array(5*3):void 0,OA=z>=3?new Float32Array(7*3):void 0,KA=k/2/N,TA=r+J,VA=r+K,X=new DataView(E.buffer,VA,Z),rA=new Float32Array(E.buffer,TA,x*3),V=new Uint32Array(E.buffer,r,m);let nI=H,TI=U;for(let hA=0;hA<u;++hA){const P=hA*v;let sA;if(hA<U)sA=Math.floor(hA/M);else{const lA=V[nI-H];hA>=TI+lA&&(nI+=1,TI+=lA),sA=nI}const q=e===0?X.getFloat32(P+0,!0):(X.getUint16(P+0,!0)-N)*KA+rA[3*sA+0],pA=e===0?X.getFloat32(P+4,!0):(X.getUint16(P+2,!0)-N)*KA+rA[3*sA+1],$A=e===0?X.getFloat32(P+8,!0):(X.getUint16(P+4,!0)-N)*KA+rA[3*sA+2],DI=e===0?X.getFloat32(P+EA+0,!0):aA(X.getUint16(P+EA+0,!0)),$I=e===0?X.getFloat32(P+EA+4,!0):aA(X.getUint16(P+EA+2,!0)),jg=e===0?X.getFloat32(P+EA+8,!0):aA(X.getUint16(P+EA+4,!0)),_g=e===0?X.getFloat32(P+IA+0,!0):aA(X.getUint16(P+IA+0,!0)),$g=e===0?X.getFloat32(P+IA+4,!0):aA(X.getUint16(P+IA+2,!0)),Ag=e===0?X.getFloat32(P+IA+8,!0):aA(X.getUint16(P+IA+4,!0)),pg=e===0?X.getFloat32(P+IA+12,!0):aA(X.getUint16(P+IA+6,!0)),UA=X.getUint8(P+_+0)/255,Mg=X.getUint8(P+_+1)/255,kg=X.getUint8(P+_+2)/255,AB=X.getUint8(P+_+3)/255;if(I(hA,q,pA,$A,DI,$I,jg,$g,Ag,pg,_g,AB,UA,Mg,kg),z>=1&&xA){for(const[lA,MI]of SA.entries())xA[lA]=y(P,MI);if(nA)for(const[lA,MI]of NA.entries())nA[lA]=y(P,MI);if(OA)for(const[lA,MI]of mA.entries())OA[lA]=y(P,MI);g==null||g(hA,xA,nA,OA)}}r+=RA}}function IE(E){var y;let g=0;const B=new DataView(E.buffer,g,4096);g+=4096;const t=B.getUint8(0),Q=B.getUint8(1);if(t!==0||Q<1)throw new Error(`Unsupported .ksplat version: ${t}.${Q}`);const i=B.getUint32(4,!0),C=B.getUint32(16,!0),s=B.getUint16(20,!0);if(s<0||s>2)throw new Error(`Invalid .ksplat compression level: ${s}`);const o=B.getFloat32(36,!0)||-1.5,e=B.getFloat32(40,!0)||1.5,a=C,n=pB(a),r=new Uint32Array(n*4),D={};let l=4096+i*1024;for(let w=0;w<i;++w){let u=function(sA,q){if(s===0)return V.getFloat32(sA+Z+q*4,!0);if(s===1)return aA(V.getUint16(sA+Z+q*2,!0));const pA=V.getUint8(sA+Z+q)/255;return o+pA*(e-o)};const G=new DataView(E.buffer,g,1024);g+=1024;const M=G.getUint32(0,!0),x=G.getUint32(4,!0),k=G.getUint32(8,!0),S=G.getUint32(12,!0),N=G.getFloat32(16,!0),H=G.getUint16(20,!0),U=(G.getUint32(24,!0)||((y=xB[s])==null?void 0:y.scaleRange))??1,m=G.getUint32(32,!0),J=m*k,K=G.getUint32(36,!0),z=K*4,T=H*S+z,W=G.getUint16(40,!0),BA=zQ[W],{bytesPerCenter:AA,bytesPerScale:CA,bytesPerRotation:QA,bytesPerColor:EA,bytesPerSphericalHarmonicsComponent:IA,scaleOffsetBytes:_,rotationOffsetBytes:O,colorOffsetBytes:v,sphericalHarmonicsOffsetBytes:Z}=xB[s],RA=AA+CA+QA+EA+BA*IA,SA=RA*x,NA=SA+T,mA=[0,3,6,1,4,7,2,5,8],xA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],nA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],OA=W>=1?new Float32Array(3*3):void 0,KA=W>=2?new Float32Array(5*3):void 0,TA=W>=3?new Float32Array(7*3):void 0,VA=N/2/U,X=l+z,rA=l+T,V=new DataView(E.buffer,rA,SA),nI=new Float32Array(E.buffer,X,S*3),TI=new Uint32Array(E.buffer,l,K);let hA=m,P=J;for(let sA=0;sA<M;++sA){const q=sA*RA;let pA;if(sA<J)pA=Math.floor(sA/k);else{const BI=TI[hA-m];sA>=P+BI&&(hA+=1,P+=BI),pA=hA}const $A=s===0?V.getFloat32(q+0,!0):(V.getUint16(q+0,!0)-U)*VA+nI[3*pA+0],DI=s===0?V.getFloat32(q+4,!0):(V.getUint16(q+2,!0)-U)*VA+nI[3*pA+1],$I=s===0?V.getFloat32(q+8,!0):(V.getUint16(q+4,!0)-U)*VA+nI[3*pA+2],jg=s===0?V.getFloat32(q+_+0,!0):aA(V.getUint16(q+_+0,!0)),_g=s===0?V.getFloat32(q+_+4,!0):aA(V.getUint16(q+_+2,!0)),$g=s===0?V.getFloat32(q+_+8,!0):aA(V.getUint16(q+_+4,!0)),Ag=s===0?V.getFloat32(q+O+0,!0):aA(V.getUint16(q+O+0,!0)),pg=s===0?V.getFloat32(q+O+4,!0):aA(V.getUint16(q+O+2,!0)),UA=s===0?V.getFloat32(q+O+8,!0):aA(V.getUint16(q+O+4,!0)),Mg=s===0?V.getFloat32(q+O+12,!0):aA(V.getUint16(q+O+6,!0)),kg=V.getUint8(q+v+0)/255,AB=V.getUint8(q+v+1)/255,lA=V.getUint8(q+v+2)/255,MI=V.getUint8(q+v+3)/255;if(Wg(r,sA,$A,DI,$I,jg,_g,$g,pg,UA,Mg,Ag,MI,kg,AB,lA),W>=1){if(OA){D.sh1||(D.sh1=new Uint32Array(a*2));for(const[BI,YA]of mA.entries())OA[BI]=u(q,YA);kB(D.sh1,sA,OA)}if(KA){D.sh2||(D.sh2=new Uint32Array(a*4));for(const[BI,YA]of xA.entries())KA[BI]=u(q,YA);RB(D.sh2,sA,KA)}if(TA){D.sh3||(D.sh3=new Uint32Array(a*4));for(const[BI,YA]of nA.entries())TA[BI]=u(q,YA);mB(D.sh3,sA,TA)}}}l+=NA}return{packedArray:r,numSplats:a,extra:D}}function gE(E,A,I={}){let g;return A&&(g=(B,t)=>{const Q=new WebAssembly.Instance(A,B);return t(Q),Q.exports}),E({noInitialRun:!0,instantiateWasm:g,...I})}var BE=(()=>{var E=self.location.href;return function(I={}){var I=typeof I<"u"?I:{},g,B;I.ready=new Promise(function(h,c){g=h,B=c});const Q=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,i=typeof process=="object"&&process.release&&process.release.name==="node";(Q||i)&&(globalThis.ImageData||(globalThis.ImageData=class{constructor(c,d,F){this.data=c,this.width=d,this.height=F}}),self.location.href===void 0&&(self.location.href="https://localhost"),typeof self<"u"&&self.location===void 0&&(self.location={href:""}));var C=Object.assign({},I),s=typeof window=="object",o=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var e="";function a(h){return I.locateFile?I.locateFile(h,e):e+h}var n;(s||o)&&(o?e=self.location.href:typeof document<"u"&&document.currentScript&&(e=document.currentScript.src),E&&(e=E),e.indexOf("blob:")!==0?e=e.substr(0,e.replace(/[?#].*/,"").lastIndexOf("/")+1):e="",o&&(n=h=>{var c=new XMLHttpRequest;return c.open("GET",h,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)})),I.print||console.log.bind(console);var r=I.printErr||console.warn.bind(console);Object.assign(I,C),C=null,I.arguments&&I.arguments,I.thisProgram&&I.thisProgram,I.quit&&I.quit;var D;I.wasmBinary&&(D=I.wasmBinary),I.noExitRuntime,typeof WebAssembly!="object"&&NA("no native wasm support detected");var l,y=!1;function w(h,c,d){for(var F=c+d,p="";!(c>=F);){var R=h[c++];if(!R)return p;if(!(R&128)){p+=String.fromCharCode(R);continue}var L=h[c++]&63;if((R&224)==192){p+=String.fromCharCode((R&31)<<6|L);continue}var Y=h[c++]&63;if((R&240)==224?R=(R&15)<<12|L<<6|Y:R=(R&7)<<18|L<<12|Y<<6|h[c++]&63,R<65536)p+=String.fromCharCode(R);else{var b=R-65536;p+=String.fromCharCode(55296|b>>10,56320|b&1023)}}return p}function u(h,c){return h?w(S,h,c):""}function G(h,c,d,F){if(!(F>0))return 0;for(var p=d,R=d+F-1,L=0;L<h.length;++L){var Y=h.charCodeAt(L);if(Y>=55296&&Y<=57343){var b=h.charCodeAt(++L);Y=65536+((Y&1023)<<10)|b&1023}if(Y<=127){if(d>=R)break;c[d++]=Y}else if(Y<=2047){if(d+1>=R)break;c[d++]=192|Y>>6,c[d++]=128|Y&63}else if(Y<=65535){if(d+2>=R)break;c[d++]=224|Y>>12,c[d++]=128|Y>>6&63,c[d++]=128|Y&63}else{if(d+3>=R)break;c[d++]=240|Y>>18,c[d++]=128|Y>>12&63,c[d++]=128|Y>>6&63,c[d++]=128|Y&63}}return c[d]=0,d-p}function M(h,c,d){return G(h,S,c,d)}function x(h){for(var c=0,d=0;d<h.length;++d){var F=h.charCodeAt(d);F<=127?c++:F<=2047?c+=2:F>=55296&&F<=57343?(c+=4,++d):c+=3}return c}var k,S,N,H,U,m,J,K;function z(){var h=l.buffer;I.HEAP8=k=new Int8Array(h),I.HEAP16=N=new Int16Array(h),I.HEAP32=U=new Int32Array(h),I.HEAPU8=S=new Uint8Array(h),I.HEAPU16=H=new Uint16Array(h),I.HEAPU32=m=new Uint32Array(h),I.HEAPF32=J=new Float32Array(h),I.HEAPF64=K=new Float64Array(h)}var T,W=[],BA=[],AA=[];function CA(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)IA(I.preRun.shift());rA(W)}function QA(){rA(BA)}function EA(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)O(I.postRun.shift());rA(AA)}function IA(h){W.unshift(h)}function _(h){BA.unshift(h)}function O(h){AA.unshift(h)}var v=0,Z=null;function RA(h){v++,I.monitorRunDependencies&&I.monitorRunDependencies(v)}function SA(h){if(v--,I.monitorRunDependencies&&I.monitorRunDependencies(v),v==0&&Z){var c=Z;Z=null,c()}}function NA(h){I.onAbort&&I.onAbort(h),h="Aborted("+h+")",r(h),y=!0,h+=". Build with -sASSERTIONS for more info.";var c=new WebAssembly.RuntimeError(h);throw B(c),c}var mA="data:application/octet-stream;base64,";function xA(h){return h.startsWith(mA)}var nA;I.locateFile?(nA="webp_dec.wasm",xA(nA)||(nA=a(nA))):nA=new URL("data:application/wasm;base64,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AiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAuXKQELfyMAQRBrIgskAAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQaDbACgCACIGQRAgAEELakF4cSAAQQtJGyIFQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQcjbAGoiACABQdDbAGooAgAiASgCCCIERgRAQaDbACAGQX4gAndxNgIADAELIAQgADYCDCAAIAQ2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgC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A39BBCECAn8gACABckEDcUUEQEEAIAAoAgAgASgCAEYNARoLAkADQCAALQAAIgMgAS0AACIERw0BIAFBAWohASAAQQFqIQAgAkEBayICDQALQQAPCyADIARrCwt0AQF/IAJFBEAgACgCBCABKAIERg8LIAAgAUYEQEEBDwsgASgCBCICLQAAIQECQCAAKAIEIgMtAAAiAEUNACAAIAFHDQADQCACLQABIQEgAy0AASIARQ0BIAJBAWohAiADQQFqIQMgACABRg0ACwsgACABRgv/AwERfyABQQNsIQ5BACABayEPIAFBfWwhEEEAIAFBAnRrIRFBACABQQF0IhJrIRMgBEEBdEEBciEUA0AgAyEEAkAgACATaiIKLQAAIgggACABaiIMLQAAIgtrIhVB78kAai0AACAAIA9qIg0tAAAiAyAALQAAIglrQe/JAGotAABBAnRqIBRKDQAgACARai0AACAAIBBqLQAAIgdrQe/JAGotAAAgBUoNACAHIAhrQe/JAGotAAAgBUoNACAIIANrQe/JAGotAAAiFiAFSg0AIAAgDmotAAAgACASai0AACIHa0HvyQBqLQAAIAVKDQAgByALa0HvyQBqLQAAIAVKDQAgCyAJa0HvyQBqLQAAIhcgBUoNACAJIANrQQNsIQcCfyAGIBZOIAYgF05xRQRAIA0gAyAHIBVB/DdqLAAAaiIDQQNqQQN1QfDAAGosAABqQe/DAGotAAA6AAAgACEMIAkgA0EEakEDdUHwwABqLAAAawwBCyAKIAggB0EEakEDdUHwwABqLAAAIghBAWpBAXUiCmpB78MAai0AADoAACANIAdBA2pBA3VB8MAAaiwAACADakHvwwBqLQAAOgAAIAAgCSAIa0HvwwBqLQAAOgAAIAsgCmsLIQMgDCADQe/DAGotAAA6AAALIARBAWshAyAAIAJqIQAgBEEBSw0ACwv0AQEHfwJAIAFBAEwNACAAQUBrIQYDQCAGKAIAIAAoAjhIBEAgACgCGEEATA0CCyAAKAIEBEAgACAAKQJMQiCJNwJMCyAAIAJBhOEAQYDhACAAKAIAGygCABEDAAJAIAAoAgQNACAAKAI0IAAoAghsQQBMDQAgACgCTCEHIAAoAlAhCEEAIQUDQCAHIAVBAnQiCWoiCiAKKAIAIAggCWooAgBqNgIAIAVBAWoiBSAAKAI0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akG0AWogBSANIAogBhAnIANBAUYNAQNAIAAgAkEBayIDQRRsakG0AWogBSANIAYgBhAnIAJBAUshBCADIQIgBA0ACwwBCyAGIApGDQAgBiAKIAggCWxBAnQQFBoLIA8gEGohAwJAIA5BAEwNAEEAIQlBACECIA5BBE8EQCAOQXxxIQ8DQCACIANqIAYgAkECdGooAgBBCHY6AAAgAyACQQFyIgRqIAYgBEECdGooAgBBCHY6AAAgAyACQQJyIgRqIAYgBEECdGooAgBBCHY6AAAgAyACQQNyIgRqIAYgBEECdGooAgBBCHY6AAAgAkEEaiICIA9HDQALCyAOQQNxIgRFDQADQCACIANqIAYgAkECdGooAgBBCHY6AAAgAkEBaiECIAlBAWoiCSAERw0ACwsgCygCDCIEBEAgCygCjAEhAiAIQQFxBH8gAiADIAMgByAEQQJ0QbDgAGooAgARAQAgBUEBaiEFIAMiAiAHagUgAwshBCAIQQFHBEADQCACIAQgBCAHIAsoAgxBAnRBsOAAaigCABEBACAEIAQgB2oiAiACIAcgCygCDEECdEGw4ABqKAIAEQEAIAIgB2ohBCACIQMgBUECaiIFIA1HDQALCyALIAM2AowBCyAKIAAoAmQiCSAIbEECdGohCiANIQUgDCAIayIMQQBKDQALCyAAIAE2AmwgACABNgJ0C+IBAQR/IAAEfyAALQAABUEACyEAAkAgA0EATA0AIANBA3EhBQJAIANBBEkEQEEAIQMMAQsgA0F8cSEHQQAhAwNAIAIgA2ogASADai0AACAAaiIAOgAAIAIgA0EBciIEaiABIARqLQAAIABqIgA6AAAgAiADQQJyIgRqIAEgBGotAAAgAGoiADoAACACIANBA3IiBGogASAEai0AACAAaiIAOgAAIANBBGoiAyAHRw0ACwsgBUUNAANAIAIgA2ogASADai0AACAAaiIAOgAAIANBAWohAyAGQQFqIgYgBUcNAAsLC88CAQR/AkAgAARAIANBAEwNASADQQFHBEAgA0EBcSEFIANBfnEhBwNAIAIgBGogASAEai0AACAAIARqLQAAajoAACACIARBAXIiA2ogASADai0AACAAIANqLQAAajoAACAEQQJqIgQgB0cNAAsgBUUNAgsgAiAEaiABIARqLQAAIAAgBGotAABqOgAADwsgA0EA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AigCGCACKAIcajYCGCACIAIoAkQgAigCSGo2AkQgAiACKAJAQQFqNgJAIAEoAhwiAigCGEEATARAQYjhACEDAkACQCACKAIEDQBBjOEAIQMgAigCFA0AIAIoAjQgAigCCGxBAEwNASACKAJMIQRBACEDA0AgAigCRCADaiAEIANBAnQiCGooAgA6AAAgAigCTCIEIAhqQQA2AgAgA0EBaiIDIAIoAjQgAigCCGxIDQALDAELIAIgAygCABEAAAsgAiACKAIYIAIoAhxqNgIYIAIgAigCRCACKAJIajYCRCACIAIoAkBBAWo2AkALIAEoAiAiAigCGEEATARAQYjhACEDAkACQCACKAIEDQBBjOEAIQMgAigCFA0AIAIoAjQgAigCCGxBAEwNASACKAJMIQRBACEDA0AgAigCRCADaiAEIANBAnQiCGooAgA6AAAgAigCTCIEIAhqQQA2AgAgA0EBaiIDIAIoAjQgAigCCGxIDQALDAELIAIgAygCABEAAAsgAiACKAIYIAIoAhxqNgIYIAIgAigCRCACKAJIajYCRCACIAIoAkBBAWo2AkAgASgCICECCyABKAIYIgMoAkQgASgCHCgCRCACKAJEIAwgAygCNCAOEQIAIAZBAWohBiAMIAsoAhRqIQwgASgCGCICQUBrKAIAIAIoAjhIDQALCyAGIAlqIQkgByAKSA0ACyAJC+kCAQl/IAEoAgAiBCgCHCIGIAQoAiwiAyABKAIQIghsaiEFAkAgACgCaCIHBEAgACgCECICQQBMDQEgBCgCICEJIAEoAiQhAyAAKAIAIQYgBCgCECEKQQAhAANAIAcgAyACIAcgBhAbIgsgBmxqIQcgAxAkIABqIQAgAiALayICQQBKDQALIABBAEwNASAKIAggCWxqIAQoAiAgBSAEKAIsIAEoAiQoAjQgAEEBEDFBAA8LIAZFDQAgAkEATA0AIAAoAmAhASACQQhPBEAgAkF4cSEEQQAhAANAIAVB/wEgARAVIANqQf8BIAEQFSADakH/ASABEBUgA2pB/wEgARAVIANqQf8BIAEQFSADakH/ASABEBUgA2pB/wEgARAVIANqQf8BIAEQFSADaiEFIABBCGoiACAERw0ACwsgAkEHcSICRQ0AQQAhAANAIAVB/wEgARAVIANqIQUgAEEBaiIAIAJHDQALC0EAC7MCAQd/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6OcAKAIAIgAEQEHo5wAgACgCCDYCACAAKAIEIAAoAgARAAAgABASDAELC0Hh5wBBADoAAAsGAEGAggQLJAEBf0HE4gAoAgAiAARAA0AgACgCABEKACAAKAIEIgANAAsLC4UBAQN/AkAgACgCBCICIgBBA3EEQANAIAAtAABFDQIgAEEBaiIAQQNxDQALCwNAIAAiAUEEaiEAIAEoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALA0AgASIAQQFqIQEgAC0AAA0ACwsgACACa0EBaiIAEBYiAQR/IAEgAiAAEBQFQQALC9MBAQF+IAAgAC0A3wEgAEEZay0AACAALQC/ASAAQRprLQAAIAAtAJ8BIABBG2stAAAgAC0AfyAAQRxrLQAAIAAtAF8gAEEday0AACAALQA/IABBHmstAAAgAC0AHyAAQR9rLQAAIABBIGstAAAgAEEBay0AAGpqampqampqampqampqakEIakEEdq1C/wGDQoGChIiQoMCAAX4iATcA4AEgACABNwDAASAAIAE3AKABIAAgATcAgAEgACABNwBgIAAgATcAQCAAIAE3ACAgACABNwAAC9cIARJ/IABB78MAIABBIWstAABrIgIgAEEBay0AAGoiASAAQSBrIgstAAAiA2otAAA6AAAgACABIABBH2siDC0AACIEai0AADoAASAAIAEgAEEeayINLQAAIgVqLQAAOgACIAAgASAAQR1rIg4tAAAiBmotAAA6AAMgACABIABBHGsiDy0AACIHai0AADoABCAAIAEgAEEbayIQLQAAIghqLQAAOgAFIAAgASAAQRprIhEtAAAiCWotAAA6AAYgACABIABBGWsiEi0AACIKai0AADoAByAAIAogAiAALQAfaiIBai0AADoAJyAAIAEgCWotAAA6ACYgACABIAhqLQAAOgAlIAAgASAHai0AADoAJCAAIAEgBmotAAA6ACMgACABIAVqLQAAOgAiIAAgASAEai0AADoAISAAIAEgA2otAAA6ACAgACAKIAIgAC0AP2oiAWotAAA6AEcgACABIAlqLQAAOgBGIAAgASAIai0AADoARSAAIAEgB2otAAA6AEQgACABIAZqLQAAOgBDIAAgASAFai0AADoAQiAAIAEgBGotAAA6AEEgACABIANqLQAAOgBAIAAgAiAALQBfaiIBIAstAAAiA2otAAA6AGAgACABIAwtAAAiBGotAAA6AGEgACABIA0tAAAiBWotAAA6AGIgACABIA4tAAAiBmotAAA6AGMgACABIA8tAAAiB2otAAA6AGQgACABIBAtAAAiCGotAAA6AGUgACABIBEtAAAiCWotAAA6AGYgACABIBItAAAiCmotAAA6AGcgACAKIAIgAC0Af2oiAWotAAA6AIcBIAAgASAJai0AADoAhgEgACABIAhqLQAAOgCFASAAIAEgB2otAAA6AIQBIAAgASAGai0AADoAgwEgACABIAVqLQAAOgCCASAAIAEgBGotAAA6AIEBIAAgASADai0AADoAgAEgACAKIAIgAC0AnwFqIgFqLQAAOgCnASAAIAEgCWotAAA6AKYBIAAgASAIai0AADoApQEgACABIAdqLQAAOgCkASAAIAEgBmotAAA6AKMBIAAgASAFai0AADoAogEgACABIARqLQAAOgChASAAIAEgA2otAAA6AKABIAAgAiAALQC/AWoiASALLQAAIgtqLQAAOgDAASAAIAEgDC0AACIDai0AADoAwQEgACABIA0tAAAiDGotAAA6AMIBIAAgASAOLQAAIgRqLQAAOgDDASAAIAEgDy0AACINai0AADoAxAEgACABIBAtAAAiBWotAAA6AMUBIAAgASARLQAAIg5qLQAAOgDGASAAIAEgEi0AACIGai0AADoAxwEgACAGIAIgAC0A3wFqIgJqLQAAOgDnASAAIAIgDmotAAA6AOYBIAAgAiAFai0AADoA5QEgACACIA1qLQAAOgDkASAAIAIgBGotAAA6AOMBIAAgAiAMai0AADoA4gEgACACIANqLQAAOgDhASAAIAIgC2otAAA6AOABC0gBAX4gACAAQSBrKQAAIgE3AOABIAAgATcAwAEgACABNwCgASAAIAE3AIABIAAgATcAYCAAIAE3AEAgACABNwAgIAAgATcAAAu0AQAgACAAMQAfQoGChIiQoMCAAX43ACAgACAAMQA/QoGChIiQoMCAAX43AEAgACAAMQBfQoGChIiQoMCAAX43AGAgACAAMQB/QoGChIiQoMCAAX43AIABIAAgADEAnwFCgYKEiJCgwIABfjcAoAEgACAAMQC/AUKBgoSIkKDAgAF+NwDAASAAIAAxAN8BQoGChIiQoMCAAX43AOABIAAgAEEBazEAAEKBgoSIkKDAgAF+NwAAC4sBAQF+IAAgAC0A3wEgAC0AvwEgAC0AnwEgAC0AfyAALQBfIAAtAD8gAEEBay0AACAALQAfampqampqakEEakEDdq1C/wGDQoGChIiQoMCAAX4iATcA4AEgACABNwDAASAAIAE3AKABIAAgATcAgAEgACABNwBgIAAgATcAQCAAIAE3ACAgACABNwAAC50BAQF+IAAgAEEZay0AACAAQRprLQAAIABBG2stAAAgAEEcay0AACAAQR1rLQAAIABBHmstAAAgAEEgay0AACAAQR9rLQAAampqampqakEEakEDdq1C/wGDQoGChIiQoMCAAX4iATcA4AEgACABNwDAASAAIAE3AKABIAAgATcAgAEgACABNwBgIAAgATcAQCAAIAE3ACAgACABNwAACwcAIAARDwALhgEAIABCgIGChIiQoMCAfzcA4AEgAEKAgYKEiJCgwIB/NwDAASAAQoCBgoSIkKDAgH83AKABIABCgIGChIiQoMCAfzcAgAEgAEKAgYKEiJCgwIB/NwBgIABCgIGChIiQoMCAfzcAQCAAQoCBgoSIkKDAgH83ACAgAEKAgYKEiJCgwIB/NwAAC48EAQF+IAAgAEERay0AACAALQDfAyAAQRJrLQAAIAAtAL8DIABBE2stAAAgAC0AnwMgAEEUay0AACAALQD/AiAAQRVrLQAAIAAtAN8CIABBFmstAAAgAC0AvwIgAEEXay0AACAALQCfAiAAQRhrLQAAIAAtAP8BIABBGWstAAAgAC0A3wEgAEEaay0AACAALQC/ASAAQRtrLQAAIAAtAJ8BIABBHGstAAAgAC0AfyAAQR1rLQAAIAAtAF8gAEEeay0AACAALQA/IABBH2stAAAgAC0AHyAAQQFrLQAAIABBIGstAABqampqampqampqampqampqampqampqampqampqampqQRBqQQV2rUL/AYNCgYKEiJCgwIABfiIBNwAIIAAgATcAACAAIAE3ACAgACABNwAoIAAgATcAQCAAIAE3AEggACABNwBgIAAgATcAaCAAIAE3AIABIAAgATcAiAEgACABNwCgASAAIAE3AKgBIAAgATcAwAEgACABNwDIASAAIAE3AOgBIAAgATcA4AEgACABNwCIAiAAIAE3AIACIAAgATcAqAIgACABNwCgAiAAIAE3AMgCIAAgATcAwAIgACABNwDoAiAAIAE3AOACIAAgATcAiAMgACABNwCAAyAAIAE3AKgDIAAgATcAoAMgACABNwDIAyAAIAE3AMADIAAgATcA6AMgACABNwDgAwukAwETfyAAQRFrIQMgAEESayEEIABBE2shBSAAQRRrIQYgAEEVayEHIABBFmshCCAAQRdrIQkgAEEYayEKIABBGWshCyAAQRprIQwgAEEbayENIABBHGshDiAAQR1rIQ8gAEEeayEQIABBH2shESAAQSBrIRJB78MAIABBIWstAABrIRMDQCAAIBMgAEEBay0AAGoiASASLQAAai0AADoAACAAIAEgES0AAGotAAA6AAEgACABIBAtAABqLQAAOgACIAAgASAPLQAAai0AADoAAyAAIAEgDi0AAGotAAA6AAQgACABIA0tAABqLQAAOgAFIAAgASAMLQAAai0AADoABiAAIAEgCy0AAGotAAA6AAcgACABIAotAABqLQAAOgAIIAAgASAJLQAAai0AADoACSAAIAEgCC0AAGotAAA6AAogACABIActAABqLQAAOgALIAAgASAGLQAAai0AADoADCAAIAEgBS0AAGotAAA6AA0gACABIAQtAABqLQAAOgAOIAAgASADLQAAai0AADoADyAAQSBqIQAgAkEBaiICQRBHDQALC5cCAgJ+AX8gACAAQSBrIgMpAAAiATcAACAAIAE3ACAgACABNwBAIAAgATcAYCAAIAE3AIABIAAgATcAoAEgACABNwDAASAAIAE3AOABIAAgAykACCIBNwAIIAAgATcAKCAAIAE3AEggACABNwBoIAAgATcAiAEgACABNwCoASAAIAE3AMgBIAAgATcA6AEgACADKQAIIgE3AIgCIAAgAykAACICNwCAAiAAIAE3AKgCIAAgAjcAoAIgACABNwDIAiAAIAI3AMACIAAgATcA6AIgACACNwDgAiAAIAI3AIADIAAgATcAiAMgACABNwCoAyAAIAI3AKADIAAgAjcAwAMgACABNwDIAyAAIAE3AOgDIAAgAjcA4AMLigQBAX4gACAAMQAfQoGChIiQoMCAAX4iATcAICAAIAE3ACggACAAMQA/QoGChIiQoMCAAX4iATcAQCAAIAE3AEggACAAMQBfQoGChIiQoMCAAX4iATcAYCAAIAE3AGggACAAMQB/QoGChIiQoMCAAX4iATcAgAEgACABNwCIASAAIAAxAJ8BQoGChIiQoMCAAX4iATcAqAEgACABNwCgASAAIABBAWsxAABCgYKEiJCgwIABfiIBNwAAIAAgATcACCAAIAAxAL8BQoGChIiQoMCAAX4iATcAyAEgACABNwDAASAAIAAxAN8BQoGChIiQoMCAAX4iATcA6AEgACABNwDgASAAIAAxAP8BQoGChIiQoMCAAX4iATcAiAIgACABNwCAAiAAIAAxAJ8CQoGChIiQoMCAAX4iATcAqAIgACABNwCgAiAAIAAxAL8CQoGChIiQoMCAAX4iATcAyAIgACABNwDAAiAAIAAxAN8CQoGChIiQoMCAAX4iATcA6AIgACABNwDgAiAAIAAxAP8CQoGChIiQoMCAAX4iATcAiAMgACABNwCAAyAAIAAxAJ8DQoGChIiQoMCAAX4iATcAqAMgACABNwCgAyAAIAAxAL8DQoGChIiQoMCAAX4iATcAyAMgACABNwDAAyAAIAAxAN8DQoGChIiQoMCAAX4iATcA6AMgACABNwDgAwv/AgEBfiAAIAAtAN8DIAAtAL8DIAAtAJ8DIAAtAP8CIAAtAN8CIAAtAL8CIAAtAJ8CIAAtAP8BIAAtAN8BIAAtAL8BIAAtAJ8BIAAtAH8gAC0AXyAALQA/IABBAWstAAAgAC0AH2pqampqampqampqampqakEIakEEdq1C/wGDQoGChIiQoMCAAX4iATcAACAAIAE3AAggACABNwAoIAAgATcAICAAIAE3AEggACABNwBAIAAgATcAaCAAIAE3AGAgACABNwCIASAAIAE3AIABIAAgATcAqAEgACABNwCgASAAIAE3AMgBIAAgATcAwAEgACABNwDoASAAIAE3AOABIAAgATcAiAIgACABNwCAAiAAIAE3AKgCIAAgATcAoAIgACABNwDIAiAAIAE3AMACIAAgATcA6AIgACABNwDgAiAAIAE3AIgDIAAgATcAgAMgACABNwCoAyAAIAE3AKADIAAgATcAyAMgACABNwDAAyAAIAE3AOgDIAAgATcA4AMLoQMBAX4gACAAQRFrLQAAIABBEmstAAAgAEETay0AACAAQRRrLQAAIABBFWstAAAgAEEWay0AACAAQRdrLQAAIABBGGstAAAgAEEZay0AACAAQRprLQAAIABBG2stAAAgAEEcay0AACAAQR1rLQAAIABBHmstAAAgAEEgay0AACAAQR9rLQAAampqampqampqampqampqQQhqQQR2rUL/AYNCgYKEiJCgwIABfiIBNwAAIAAgATcACCAAIAE3ACggACABNwAgIAAgATcASCAAIAE3AEAgACABNwBoIAAgATcAYCAAIAE3AIgBIAAgATcAgAEgACABNwCoASAAIAE3AKABIAAgATcAyAEgACABNwDAASAAIAE3AOgBIAAgATcA4AEgACABNwCIAiAAIAE3AIACIAAgATcAqAIgACABNwCgAiAAIAE3AMgCIAAgATcAwAIgACABNwDoAiAAIAE3AOACIAAgATcAiAMgACABNwCAAyAAIAE3AKgDIAAgATcAoAMgACABNwDIAyAAIAE3AMADIAAgATcA6AMgACABNwDgAwuaBAAgAEKAgYKEiJCgwIB/NwAAIABCgIGChIiQoMCAfzcAICAAQoCBgoSIkKDAgH83AEAgAEKAgYKEiJCgwIB/NwBgIABCgIGChIiQoMCAfzcAgAEgAEKAgYKEiJCgwIB/NwCgASAAQoCBgoSIkKDAgH83AMABIABCgIGChIiQoMCAfzcA4AEgAEKAgYKEiJCgwIB/NwCAAiAAQoCBgoSIkKDAgH83AAggAEKAgYKEiJCgwIB/NwAoIABCgIGChIiQoMCAfzcASCAAQoCBgoSIkKDAgH83AGggAEKAgYKEiJCgwIB/NwCIASAAQoCBgoSIkKDAgH83AKgBIABCgIGChIiQoMCAfzcAyAEgAEKAgYKEiJCgwIB/NwDoASAAQoCBgoSIkKDAgH83AIgCIABCgIGChIiQoMCAfzcAqAIgAEKAgYKEiJCgwIB/NwCgAiAAQoCBgoSIkKDAgH83AMgCIABCgIGChIiQoMCAfzcAwAIgAEKAgYKEiJCgwIB/NwDoAiAAQoCBgoSIkKDAgH83AOACIABCgIGChIiQoMCAfzcAiAMgAEKAgYKEiJCgwIB/NwCAAyAAQoCBgoSIkKDAgH83AKgDIABCgIGChIiQoMCAfzcAoAMgAEKAgYKEiJCgwIB/NwDIAyAAQoCBgoSIkKDAgH83AMADIABCgIGChIiQoMCAfzcA6AMgAEKAgYKEiJCgwIB/NwDgAwuPAQEFfyAAIAAtAD8iAkECaiIDIAAtAF8iAWogAUEBdGpBAnZBgYKECGw2AGAgACABIAAtAB8iBEECaiIFIAJBAXRqakECdkGBgoQIbDYAQCAAIAMgAEEBay0AACIBaiAEQQF0akECdkGBgoQIbDYAICAAIAUgAEEhay0AAGogAUEBdGpBAnZBgYKECGw2AAALswIBCH8gACAAQSBrLQAAIgJBAWoiAyAAQSFrLQAAIgFqQQF2IgQ6AEEgACADIABBH2stAAAiBWpBAXYiBjoAQiAAIAQ6AAAgACAFIABBHmstAAAiA2pBAWpBAXYiBDoAQyAAIAY6AAEgACADIABBHWstAAAiBmpBAWpBAXY6AAMgACAEOgACIAAgAEEBay0AACIEQQJqIgcgAC0AP2ogAC0AHyIIQQF0akECdjoAYCAAIAIgByABQQF0ampBAnYiBzoAYSAAIAggAUECaiIBaiAEQQF0akECdjoAQCAAIAUgASACQQF0ampBAnYiAToAYiAAIAc6ACAgACADIAIgBUEBdGpqQQJqQQJ2IgI6AGMgACABOgAhIAAgBiAFIANBAXRqakECakECdjoAIyAAIAI6ACILm30CNH8DfiMAQcABayIMJAAgASgCACEEIAEoAgQhBiABLQALIQMgDEEMakEAQdAAEBUaIAxBADYClAEgDEIANwKMASAMQgA3AoQBIAxCADcCfCAMQgA3AnQgDEIANwJsIAxCADcCZCAMQQE2AgggDCAMQQhqNgJgAkACQCAEIAEgA8BBAEgiBBsiAUUNACAMQgA3A7gBIAxCADcDsAEgDEGoAWoiCEIANwMAIAxBoAFqIgpCADcDACAMQgA3A5gBIAEgBiADIAQbIgMgDEGYAWoiBCAEQQRyIAogDEGkAWogCEEAEDQNACAMIAwoApgBIio2AgwgDCAMKAKcASIrNgIQIAxB4ABqIQQjAEGwAWsiCSQAIAlBATYCCCAJIAM2AgQgCSABNgIAIAlBADYCkAEgCSABIANBAEEAQQAgCUGQAWpBACAJEDQ2AiQCQAJAIAkoAiQEQCAJKAIkQQdHDQIgCSgCkAENAQwCCyAJKAKQAUUNAQsgCUEENgIkCwJAIAkoAiQiAQ0AIAlBJGpBAEHsABAVGiAJQQg2AlggCUEJNgJUIAlBCjYCUCAJIAQ2AkwgCSAJKAIMIgEgCSgCAGoiBzYCZCAJIAkoAgQgAWsiBTYCYAJAAkACQAJAAkACQAJAAkACQAJAAkAgCSgCIEUEQEEBIQFBAUHIEhAeIgJFDQwgAkIANwJ8IAJBlgs2AgggAkIANwIAIAJBADYCuAIgAkIANwKEASACQgA3AowBQfTaACgCAEELRwRAQaTfAEEMNgIAQfTaAEELNgIACyACIAkoAhA2AqwSIAIgCSgCFDYCsBIgAiAJQSRqEC1FDQggCSgCJCAJKAIoIAwoAnQgDCgCYBA+IgENCiACQQA2ApQBAkAgDCgCdCIDRQ0AAkAgAygCLCIBQQBIDQBB/wEhByABQeQATQRAIAFB/wFsQf//A3FB5ABuIQcgAUH//wNxRQ0BCwJAIAIoAqAGIgFBDE4EQCACKAKkBiEFDAELIAIgByABQQAgAUEAShtBwC1qLQAAbEEDdiIFNgKkBgsCQCACKALABiIBQQxOBEAgAigCxAYhBAwBCyACIAcgAUEAIAFBAEobQcAtai0AAGxBA3YiBDYCxAYLIAQgBXIhBgJAIAIoAuAGIgFBDE4EQCACKALkBiEEDAELIAIgByABQQAgAUEAShtBwC1qLQAAbEEDdiIENgLkBgsgBCAGciEEAkAgAigCgAciAUEMTgRAIAIoAoQHIQcMAQsgAiAHIAFBACABQQBKG0HALWotAABsQQN2Igc2AoQHCyAEIAdyRQ0AIAJBqARqQeDMAEHcARAUGiACQYACNgKEBiACQR82AqQEIAJCATcCnAQLIAIgAygCNCIBNgLEEiACIAFB5ABMBH8gAUEATg0BQQAFQeQACzYCxBILIAIoAgRFBEAgAiAJQSRqEC1FDQkLAkAgCSgCVCIBRQ0AIAlBJGogAREEAA0AIAIoAgANCCACQeoKNgIIIAJCBjcCAAwICwJ/IAkoAmgEQEEAIQEgAkEANgKEEkEADAELQQIhCCACKAKEEiIDQcwtai0AACEBIANBAkYNAiADCyEIIAIgCSgCcCABayIDQQR1NgKoAiACIAkoAnggAWsiBEEEdTYCrAIgA0EASARAIAJBADYCqAILIARBAE4NBgwFC0EBIQFBAUGQAhAeIgJFDQsgAkECNgIEQYTbACgCAEELRwRAQfzgAEENNgIAQfjgAEENNgIAQfTgAEEONgIAQfDgAEEPNgIAQezgAEEQNgIAQejgAEERNgIAQeTgAEESNgIAQeDgAEETNgIAQdzgAEEUNgIAQdjgAEEVNgIAQdTgAEEWNgIAQdDgAEEXNgIAQczgAEEYNgIAQcjgAEEZNgIAQcTgAEEaNgIAQcDgAEENNgIAQYTbAEELNgIACyACQQA2AgAgAiAFNgIkIAJCADcCLCACQgA3AxggAiAJQSRqNgIIQQghAyACAn5CAEEIIAUgBUEITxsiAUUNABogBzEAACI3IAFBAUYNABogBzEAAUIIhiA3hCI3IAFBAkYNABogBzEAAkIQhiA3hCI3IAFBA0YNABogBzEAA0IYhiA3hCI3IAFBBEYNABogBzEABEIghiA3hCI3IAFBBUYNABogBzEABUIohiA3hCI3IAFBBkYNABogBzEABkIwhiA3hCI3IAFBB0YNABogBzEAB0I4hiA3hAsiNjcDGCACIAE2AiggAkEINgIsIAIgBzYCICA2ITcgBSIEQQlPBEAgAiA2QgiIIjc3AxggASAHajEAACE4IAJBADYCLCACIAFBAWoiBDYCKCACIDhCOIYgN4QiNzcDGEEAIQMLAkACQCA2Qv8Bg0IvUg0AIAIgA0EOaiIINgIsIAQgBSAEIAVLGyEBAkAgBCAFTwRAIDchNgwBCyACIDdCCIgiNjcDGCAEIAdqMQAAITggAiADQQZyIgg2AiwgAiAEQQFqIgY2AiggAiA4QjiGIDaEIjY3AxggBUEISwRAIAYhAQwBCyABIAZGDQAgAiA2QgiIIjY3AxggBiAHajEAACE4IAIgA0ECayIINgIsIAIgBEECaiIBNgIoIAIgOEI4hiA2hCI2NwMYCyACIAhBDmoiCzYCLCABIAUgASAFSxshCiA2IAhBP3GtiKdB//8AcSENAkACQCABIAVPDQAgAiA2QgiIIjY3AxggASAHajEAACE4IAIgCEEGaiILNgIsIAIgAUEBaiIGNgIoIAIgOEI4hiA2hCI2NwMYAkAgCEECSA0AIAYgCkYNASACIDZCCIgiNjcDGCAGIAdqMQAAITggAiAIQQJrIgs2AiwgAiABQQJqIgY2AiggAiA4QjiGIDaEIjY3AxggCEEKSA0AIAYgCkYNASACIDZCCIgiNjcDGCAGIAdqMQAAITggAiAIQQprIgs2AiwgAiABQQNqIgY2AiggAiA4QjiGIDaEIjY3AxggCEESSA0AIAYgCkYNASACIDZCCIgiNjcDGCAGIAdqMQAAITggAiAIQRFrIgQ2AiwgAiABQQRqIgo2AiggAiA4QjiGIDaEIjY3AxggDUEBaiEIDAILIAIgC0EBaiIENgIsIA1BAWohCCALQQdIBEAgBiEKDAILIAUgBk0EQCAGIAUgBSAGSRshCgwCCyACIDZCCIgiNjcDGCAGIAdqMQAAITggAiALQQdrIgQ2AiwgAiAGQQFqIgo2AiggAiA4QjiGIDaEIjY3AxgMAQsgAiALQQFqIgQ2AiwgDUEBaiEICyACIARBA2o2AiwgNiAEQT9xrYinQQdxIQ0CQCAEQQVIDQAgBSAKTQ0AIAIgNkIIiCI2NwMYIAcgCmoxAAAhOCACIARBBWs2AiwgAiAKQQFqIgY2AiggAiA4QjiGIDaEIjY3AxggBEENSA0AIAYgCiAFIAUgCkkbIgFGDQAgAiA2QgiIIjY3AxggBiAHajEAACE4IAIgBEENazYCLCACIApBAmoiBjYCKCACIDhCOIYgNoQiNjcDGCAEQRVIDQAgASAGRg0AIAIgNkIIiCI2NwMYIAYgB2oxAAAhOCACIARBFWs2AiwgAiAKQQNqIgY2AiggAiA4QjiGIDaEIjY3AxggBEEdSA0AIAEgBkYNACACIDZCCIgiNjcDGCAGIAdqMQAAITggAiAEQR1rNgIsIAIgCkEEaiIGNgIoIAIgOEI4hiA2hCI2NwMYIARBJUgNACABIAZGDQAgAiA2QgiIIjY3AxggBiAHajEAACE4IAIgBEElazYCLCACIApBBWo2AiggAiA4QjiGIDaENwMYCyANDQAMAQsgAkEDNgIADAMLIAJBAjYCBCAJIAg2AiggCSA3IAOtiKdB//8AcUEBaiIBNgIkIAEgCEEBIAJBABAjRQ0CIAkoAiQgCSgCKCAMKAJ0IAwoAmAQPiIBDQMgAigCCCIFKAIoIRECQCACKAIERQRAIAIoAmghBCACKAJkIQMgAigCECEHDAELIAIgESgCADYCDCARKAIUIAVBAxAyRQRAIAJBAjYCAAwECwJAAkACQCACKAJoIgSsIAIoAmQiA6x+IjYgBSgCACIBrEIEhiABQf//A3EiAa18fCI3UA0AIDdCgICAgPz///8/g1AgN0KBgP//AVRxDQAgAkEANgIQDAELIAIgN6dBAnQQFiIHNgIQIAcNAQsgAkEANgIUIAJBATYCAAwECyACIAcgNqdBAnRqIAFBAnRqNgIUAkACQCAFKAJcBEACQCAFKAJgIg2sIjdCBYYiNiA3QgKGfELUAHwiN0KAgPz/B1gEQCAFKAJkIRQgBSgCECEGIAUoAgwhASA3pxAWIggNAQsgAkEBNgIADAcLIAIgCDYCjAIgAiAINgKIAiAIQQA2AkggCEIANwI8IAggFDYCOCAIIA02AjQgCCAGNgIwIAggATYCLCAIIAYgFEgiCzYCBCAIIAEgDUgiCjYCACAIQQQ2AgggCCAIQdQAaiISIDanajYCRCAIIAFBAWsgDSAKGyIQNgIoIAggDUEBayABIAobIgE2AiQgCkUEQCAIQoCAgIAQIBCsgD4CDAsgCCAUIAtrIgo2AiAgCCAGIAtrIgY2AhwCQCALBEAgCiEGIAEhCgwBCyAIQoCAgIAQIBStQiCGIAEgBmysgCI3IDdCgICAgBBaGz4CFAsgCCASNgJMIAggBjYCGCAIIBIgDUEEdGo2AlAgCEKAgICAECAKrIA+AhAgEkEAIA1BBXQQFRpBiNsAKAIAQQtHBEBBjOEAQRs2AgBBiOEAQRw2AgBBhOEAQR02AgBBgOEAQR42AgBBiNsAQQs2AgALIAUoAlwNAQsgAigCDCILKAIAIghBC2tBfEkNAQtB+NoAKAIAQQtHBEBB+NoAQQs2AgALIAIoAgwiCygCACEICwJAIAhBC0kNAEGY2wAoAgBBC0cEQEGY2wBBCzYCAAsgCygCHEUNAEH42gAoAgBBC0YNAEH42gBBCzYCAAsCQCACKAI4RQ0AIAIoAnhBAEwNACACKAKIAQ0AQQEgAigChAEiAXQiBqxCgICAgPz///8/g1AgAUEdSXFFBEAgAkEANgKIAQwECyACIAZBBBAeIgY2AogBIAZFDQMgAiABNgKQASACQSAgAWs2AowBCyACQQA2AgQLIAIgByADIAQgBSgCWEEfECpFDQIgESACKAJ0NgIQQQAhAQwDCyACQQA2AqgCDAMLIAJBATYCAAsgAhAdIAIoAgAhAQsgAhAdDAYLIAJBADYCrAILIAIgAUEPaiIBIAkoAnxqQQR1IgM2ArQCIAIgASAJKAJ0akEEdSIBIAIoAqACIgogASAKSBs2ArACIAIoAqQCIgEgA0gEQCACIAE2ArQCC0EBIQsCQCAIQQBMDQAgAigCaCEBAkACQCACKAJERQRAQT8CfyABBEAgAiwAeCIDIAIoAnANARogAigCPCADagwBCyACKAI8CyIDIANBP04bIgNBAEoiBEUEQCACQQA6AIgSIAJBjBJqQQA6AAAgAkGKEmpBADoAAAwCC0ECIANBACAEGyIGQQ5LIAZBJ0sbIQQgBkEBdCEFIAIoAkAiB0EATARAIAJBixJqIAQ6AAAgAiADIAVqIgY6AIgSIAJBiRJqIAM6AAAgAkGNEmogAzoAACACQYoSakEAOgAAIAJBjxJqIAQ6AAAgAkGMEmogBjoAAAwCCyACQYsSaiAEOgAAIAJBihJqQQA6AAAgAkGPEmogBDoAACACQYkSakEBIAZBAkEBIAdBBEsbdiIDQQkgB2siBCADIARIGyIDIANBAUwbIgM6AAAgAkGNEmogAzoAACACIAMgBWoiAzoAiBIgAkGMEmogAzoAAAwBCyACKAJIIQYgAUUEQEE/IAIoAjwgBmoiAyADQT9OGyIGQQAgBkEASiIEGyEBAkAgBARAIAEhBCACKAJAIgVBAEoEQCABQQJBASAFQQRLG3YiBEEJIAVrIgUgBCAFSBshBAsgAkGLEmpBAiABQQ5LIAFBJ0sbOgAAIAJBiRJqQQEgBCAEQQFMGyIEOgAAIAIgBCABQQF0ajoAiBIMAQsgAkEAOgCIEgsgAkGKEmpBADoAAEE/IAIoAlggA2oiAyADQT9OGyIFQQAgBUEASiIDGyEEAkAgAwRAIAQhAyACKAJAIgdBAEoEQCAEQQJBASAHQQRLG3YiA0EJIAdrIgcgAyAHSBshAwsgAkGPEmpBAiAEQQ5LIARBJ0sbOgAAIAJBjRJqQQEgAyADQQFMGyIDOgAAIAIgAyAEQQF0ajoAjBIMAQsgAkEAOgCMEgsgAkGOEmpBAToAAAJAIAZBAEoEQCABIQMgAigCQCIHQQBKBEAgAUECQQEgB0EESxt2IgNBCSAHayIHIAMgB0gbIQMLIAJBkxJqQQIgAUEOSyABQSdLGzoAACACQZESakEBIAMgA0EBTBsiAzoAACACIAMgAUEBdGo6AJASDAELIAJBADoAkBILIAJBkhJqQQA6AAACQCAFQQBKBEAgBCEDIAIoAkAiB0EASgRAIARBAkEBIAdBBEsbdiIDQQkgB2siByADIAdIGyEDCyACQZcSakECIARBDksgBEEnSxs6AAAgAkGVEmpBASADIANBAUwbIgM6AAAgAiADIARBAXRqOgCUEgwBCyACQQA6AJQSCyACQZYSakEBOgAAAkAgBkEASgRAIAEhAyACKAJAIgdBAEoEQCABQQJBASAHQQRLG3YiA0EJIAdrIgcgAyAHSBshAwsgAkGbEmpBAiABQQ5LIAFBJ0sbOgAAIAJBmRJqQQEgAyADQQFMGyIDOgAAIAIgAyABQQF0ajoAmBIMAQsgAkEAOgCYEgsgAkGaEmpBADoAAAJAIAVBAEoEQCAEIQMgAigCQCIHQQBKBEAgBEECQQEgB0EESxt2IgNBCSAHayIHIAMgB0gbIQMLIAJBnxJqQQIgBEEOSyAEQSdLGzoAACACQZ0SakEBIAMgA0EBTBsiAzoAACACIAMgBEEBdGo6AJwSDAELIAJBADoAnBILIAJBnhJqQQE6AAACQCAGQQBKBEAgASEHIAIoAkAiA0EASgRAIAFBAkEBIANBBEsbdiIGQQkgA2siAyADIAZKGyEHCyACQaMSakECIAFBDksgAUEnSxs6AAAgAkGhEmpBASAHIAdBAUwbIgM6AAAgAiADIAFBAXRqOgCgEgwBCyACQQA6AKASCyACQaISakEAOgAAIAVBAEoEQCAEIQEgAigCQCIDQQBKBEAgBEECQQEgA0EESxt2IgFBCSADayIDIAEgA0gbIQELIAJBpxJqQQIgBEEOSyAEQSdLGzoAACACQaUSakEBIAEgAUEBTBsiAToAACACIAEgBEEBdGo6AKQSDAMLIAJBADoApBIMAgsgAigCWCERIAIoAnAhEkEAIQUDQCACIAVqLAB4IQMgAiAFQQN0aiIBQYgSaiEHAkBBPyASBH8gAwUgAigCPCADagsgBmoiDSANQT9OGyIDQQBKBEAgA0EAIANBAEobIgQhAyACKAJAIhRBAEoEQCAEQQJBASAUQQRLG3YiA0EJIBRrIhQgAyAUSBshAwsgAUGJEmpBASADIANBAUwbIgM6AAAgByADIARBAXRqOgAAIAFBixJqQQIgBEEOSyAEQSdLGzoAAAwBCyAHQQA6AAALIAFBihJqQQA6AAAgAUGMEmohBwJAQT8gDSARaiIDIANBP04bIgNBAEoEQCADQQAgA0EAShsiAyEEIAIoAkAiDUEASgRAIANBAkEBIA1BBEsbdiIEQQkgDWsiDSAEIA1IGyEECyABQY0SakEBIAQgBEEBTBsiBDoAACAHIAQgA0EBdGo6AAAgAUGPEmpBAiADQQ5LIANBJ0sbOgAADAELIAdBADoAAAsgAUGOEmpBAToAACAFQQFqIgVBBEcNAAsMAgsgAkGOEmpBAToAAAJAQT8CfyABBEAgAiwAeSIDIAIoAnANARogAigCPCADagwBCyACKAI8CyIDIANBP04bIgNBAEoEQEECIANBACADQQBKGyIGQQ5LIAZBJ0sbIQQgBkEBdCEFIAIoAkAiB0EATARAIAJBkxJqIAQ6AAAgAkGQEmogAyAFaiIGOgAAIAJBkRJqIAM6AAAgAkGVEmogAzoAACACQZISakEAOgAAIAJBlxJqIAQ6AAAgAkGUEmogBjoAAAwCCyACQZMSaiAEOgAAIAJBkhJqQQA6AAAgAkGXEmogBDoAACACQZESakEBIAZBAkEBIAdBBEsbdiIDQQkgB2siBCADIARIGyIDIANBAUwbIgM6AAAgAkGVEmogAzoAACACQZASaiADIAVqIgM6AAAgAkGUEmogAzoAAAwBCyACQZQSakEAOgAAIAJBkhJqQQA6AAAgAkGQEmpBADoAAAsgAkGWEmpBAToAAAJAQT8CfyABBEAgAiwAeiIDIAIoAnANARogAigCPCADagwBCyACKAI8CyIDIANBP04bIgNBAEoEQEECIANBACADQQBKGyIGQQ5LIAZBJ0sbIQQgBkEBdCEFIAIoAkAiB0EATARAIAJBmxJqIAQ6AAAgAkGYEmogAyAFaiIGOgAAIAJBmRJqIAM6AAAgAkGdEmogAzoAACACQZoSakEAOgAAIAJBnxJqIAQ6AAAgAkGcEmogBjoAAAwCCyACQZsSaiAEOgAAIAJBmhJqQQA6AAAgAkGfEmogBDoAACACQZkSakEBIAZBAkEBIAdBBEsbdiIDQQkgB2siBCADIARIGyIDIANBAUwbIgM6AAAgAkGdEmogAzoAACACQZgSaiADIAVqIgM6AAAgAkGcEmogAzoAAAwBCyACQZwSakEAOgAAIAJBmhJqQQA6AAAgAkGYEmpBADoAAAsgAkGeEmpBAToAAAJAQT8CfyABBEAgAiwAeyIBIAIoAnANARogAigCPCABagwBCyACKAI8CyIBIAFBP04bIgFBAEoEQEECIAFBACABQQBKGyIEQQ5LIARBJ0sbIQMgBEEBdCEGIAIoAkAiBUEASg0BIAJBoxJqIAM6AAAgAkGgEmogASAGaiIEOgAAIAJBoRJqIAE6AAAgAkGlEmogAToAACACQaISakEAOgAAIAJBpxJqIAM6AAAgAkGkEmogBDoAAAwCCyACQaQSakEAOgAAIAJBohJqQQA6AAAgAkGgEmpBADoAAAwBCyACQaMSaiADOgAAIAJBohJqQQA6AAAgAkGnEmogAzoAACACQaESakEBIARBAkEBIAVBBEsbdiIBQQkgBWsiAyABIANIGyIBIAFBAUwbIgE6AAAgAkGlEmogAToAACACQaASaiABIAZqIgE6AAAgAkGkEmogAToAAAsgAkGmEmpBAToAAAsgAkEANgKYASACKAKUASIBQQBKBEAgAkEANgKQASACKAKAAUUEQCACQQE2AoABCyACIAJBtAFqNgKMASACIAI2AogBIAJBIDYChAFBA0ECIAhBAEobIQsLIAIgCzYCnAEgCkECdCIEQQFBAiABQQBMG2xBACAIQQBKGyEGIApBBXQiByALQQR0IhEgCEHMLWotAABqQQNsQQF2bCENIApBAXRBAmohBSAKQQJBASABQQJGG2xBoAZsIRRBACEDAkAgAigCrBIEfiACMwEyIAIzATB+BUIACyI3IA2tIAatIBStIAWtIAetIAStfHx8fHx8IjZCwAZ8IjhC4P///w9WDQAgAigC8BEhAwJAIDZC3wZ8IjYgAjUC9BFWBEAgAxASIAJBADYC9BEgOELi//v/B1oEQCACQQA2AvARDAILIAIgNqciARAWIgM2AvARIANFDQEgAiABNgL0ESACKAKEEiEIIAIoApQBIQELIAIgAzYCxBEgAkEANgKgASACIAMgBGoiAzYCzBEgAiADIAdqIgNBAmoiEjYC0BEgAiADIAVqIgdBACAGGyIDNgLUESACIAM2AqwBIAYgB2ohBgJAIAhBAEoEQCABQQBMBEAgAiAGQR9qQWBxIgc2AtgRIAIgB0HABmoiBjYCgBIMAgsgAiADIApBAnRqNgKsAQsgAiAGQR9qQWBxIgc2AtgRIAIgB0HABmoiAzYCgBIgAyAKQQAgAUECRhtBoAZsaiEGCyACQQA2ApgBIAIgCkEDdCIBNgLsESACIApBBHQiAzYC6BEgAiAGNgKwASACIAcgFGpBwAZqIgYgAyAIQcwtai0AACIIbGoiCjYC3BEgAkEAIAYgDWogN1AbNgK8EiACIAhBAXYgAWwiBiAKIAMgEWxqaiIDNgLgESACIAMgASALbEEDdGogBmo2AuQRIBJBAmtBACAFEBUaIAIoAtARQQJrQQA7AAAgAkEANgL4ESACQQA2AsgRIAIoAsQRQQAgBBAVGiAJQQA2AiwgCSACKALcETYCOCAJIAIoAuARNgI8IAkgAigC5BE2AkAgCSACKALoETYCRCACKALsESEBIAlBADYCjAEgCSABNgJIQfzaACgCAEELRwRAQaDgAEEhNgIAQZzgAEEiNgIAQejfAEEjNgIAQeDfAEEkNgIAQdjfAEElNgIAQdTfAEEmNgIAQdDfAEEnNgIAQfTfAEEoNgIAQfDfAEEpNgIAQezfAEEqNgIAQeTfAEErNgIAQdzfAEEsNgIAQcjfAEEtNgIAQcTfAEEuNgIAQcDfAEEvNgIAQbzfAEEwNgIAQbjfAEExNgIAQbTfAEEyNgIAQbDfAEEzNgIAQZjgAEE0NgIAQZTgAEE1NgIAQZDgAEE2NgIAQYzgAEE3NgIAQYjgAEE4NgIAQYTgAEE5NgIAQYDgAEE6NgIAQfzaAEELNgIACyACQQA2AvwRAkAgAigCtAJBAEoEQCACQaABaiEsIAJByBFqIS0gAkG0AWohLiACQbQQaiERIAJB8A9qIS8gAkH4EGohDSACQawPaiEUA0AgAigCuAIhHEEAIRAgAigCoAIiAUEASgRAA0AgAigCxBEhCCACKAKAEiEKAkAgAigCbEUEQEEAIQUMAQsgAigCECEGIAItAIgHIQcCQCACKAIUIgNBAE4EQCADIQEMAQsgAigCGCIEIAIoAiBJBEAgBCgAACEBIAIgBEEDajYCGCACIAIoAgxBGHQgAUEIdkGA/gNxIAFBGHQgAUGA/gNxQQh0cnJBCHZyNgIMIANBGGohAQwBCyACKAIcIARLBEAgAiADQQhqIgE2AhQgAiAEQQFqNgIYIAIgBC0AACACKAIMQQh0cjYCDAwBC0EAIQEgAigCJA0AIAIgAigCDEEIdDYCDCACQQE2AiQgA0EIaiEBCyACIAECfyACKAIMIgUgAXYiCyAGIAdsQQh2IgNLBEAgAiADQX9zIAF0IAVqIgU2AgwgBiADawwBCyADQQFqCyIEZ0EYcyIGayIBNgIUIAIgBCAGdEEBayIENgIQAn8gAyALTwRAIAItAIkHIQcCQCABQQBODQAgAigCGCIDIAIoAiBJBEAgAygAACEGIAIgA0EDajYCGCACIAVBGHQgBkEIdkGA/gNxIAZBGHQgBkGA/gNxQQh0cnJBCHZyIgU2AgwgAUEYaiEBDAELIAIoAhwgA0sEQCACIAFBCGoiATYCFCACIANBAWo2AhggAiADLQAAIAVBCHRyIgU2AgwMAQsgAigCJEUEQCACIAVBCHQiBTYCDCACIAFBCGoiATYCFCACQQE2AiQMAQtBACEBIAJBADYCFAsCfyAFIAF2IgYgBCAHbEEIdiIDSwRAIAIgA0F/cyABdCAFajYCDCAEIANrDAELIANBAWoLIQQgAyAGSSEFIAEgBGdBGHMiA2shASAEIAN0DAELIAItAIoHIQcCQCABQQBODQAgAigCGCIDIAIoAiBJBEAgAygAACEGIAIgA0EDajYCGCACIAVBGHQgBkEIdkGA/gNxIAZBGHQgBkGA/gNxQQh0cnJBCHZyIgU2AgwgAUEYaiEBDAELIAIoAhwgA0sEQCACIAFBCGoiATYCFCACIANBAWo2AhggAiADLQAAIAVBCHRyIgU2AgwMAQsgAigCJEUEQCACIAVBCHQiBTYCDCACIAFBCGoiATYCFCACQQE2AiQMAQtBACEBIAJBADYCFAsCfyAEIAdsQQh2IgMgBSABdkkEQCACIANBf3MgAXQgBWo2AgwgBCADayEHQQMMAQsgA0EBaiEHQQILIQUgASAHZ0EYcyIDayEBIAcgA3QLIQMgAiABNgIUIAIgA0EBazYCEAsgCiAQQaAGbGoiCyAFOgCeBgJAIAIoArwRRQRAIAIoAhQhASACKAIQIQMMAQsgAigCECEGIAItAMARIQoCQCACKAIUIgNBAE4EQCADIQEMAQsgAigCGCIEIAIoAiBJBEAgBCgAACEBIAIgBEEDajYCGCACIAIoAgxBGHQgAUEIdkGA/gNxIAFBGHQgAUGA/gNxQQh0cnJBCHZyNgIMIANBGGohAQwBCyACKAIcIARLBEAgAiADQQhqIgE2AhQgAiAEQQFqNgIYIAIgBC0AACACKAIMQQh0cjYCDAwBC0EAIQEgAigCJA0AIAIgAigCDEEIdDYCDCACQQE2AiQgA0EIaiEBCyACIAECfyACKAIMIgMgAXYiBSAGIApsQQh2IgRLBEAgAiAEQX9zIAF0IANqNgIMIAYgBGsMAQsgBEEBagsiA2dBGHMiBmsiATYCFCACIAMgBnRBAWsiAzYCECALIAQgBUk6AJ0GCwJAIAFBAE4NACACKAIYIgQgAigCIEkEQCAEKAAAIQYgAiAEQQNqNgIYIAIgAigCDEEYdCAGQQh2QYD+A3EgBkEYdCAGQYD+A3FBCHRyckEIdnI2AgwgAUEYaiEBDAELIAIoAhwgBEsEQCACIAFBCGoiATYCFCACIARBAWo2AhggAiAELQAAIAIoAgxBCHRyNgIMDAELIAIoAiRFBEAgAiACKAIMQQh0NgIMIAJBATYCJCABQQhqIQEMAQtBACEBIAJBADYCFAsgEEECdCAIaiEVIAIgAQJ/IANBkQFsQQh2IgQgAigCDCIFIAF2TyIGRQRAIAIgBEF/cyABdCAFaiIFNgIMIAMgBGsMAQsgBEEBagsiA2dBGHMiBGsiATYCFCACIAMgBHRBAWsiCDYCECALIAY6AIAGAkAgBkUEQAJAIAFBAE4NACACKAIYIgMgAigCIEkEQCADKAAAIQQgAiADQQNqNgIYIAIgBUEYdCAEQQh2QYD+A3EgBEEYdCAEQYD+A3FBCHRyckEIdnIiBTYCDCABQRhqIQEMAQsgAigCHCADSwRAIAIgAUEIaiIBNgIUIAIgA0EBajYCGCACIAMtAAAgBUEIdHIiBTYCDAwBCyACKAIkBEBBACEBDAELIAIgBUEIdCIFNgIMIAJBATYCJCABQQhqIQELIAIgAQJ/IAhBnAFsQQh2IgMgBSABdk8iBkUEQCACIANBf3MgAXQgBWoiBTYCDCAIIANrDAELIANBAWoLIgNnQRhzIgRrIgE2AhQgAiADIAR0QQFrIgQ2AhACfyAGRQRAAkAgAUEATg0AIAIoAhgiAyACKAIgSQRAIAMoAAAhBiACIANBA2o2AhggAiAFQRh0IAZBCHZBgP4DcSAGQRh0IAZBgP4DcUEIdHJyQQh2ciIFNgIMIAFBGGohAQwBCyACKAIcIANLBEAgAiABQQhqIgE2AhQgAiADQQFqNgIYIAIgAy0AACAFQQh0ciIFNgIMDAELIAIoAiRFBEAgAiAFQQh0IgU2AgwgAiABQQhqIgE2AhQgAkEBNgIkDAELQQAhASACQQA2AhQLAn8gBEEBdkH///8HcSIDIAUgAXZJBEAgAiADQX9zIAF0IAVqNgIMIAQgA2shB0EBDAELIANBAWohB0EDCyEFIAEgB2dBGHMiA2shASAHIAN0DAELAkAgAUEATg0AIAIoAhgiAyACKAIgSQRAIAMoAAAhBiACIANBA2o2AhggAiAFQRh0IAZBCHZBgP4DcSAGQRh0IAZBgP4DcUEIdHJyQQh2ciIFNgIMIAFBGGohAQwBCyACKAIcIANLBEAgAiABQQhqIgE2AhQgAiADQQFqNgIYIAIgAy0AACAFQQh0ciIFNgIMDAELIAIoAiRFBEAgAiAFQQh0IgU2AgwgAiABQQhqIgE2AhQgAkEBNgIkDAELQQAhASACQQA2AhQLAn8gBEGjAWxBCHYiAyAFIAF2SQRAIAIgA0F/cyABdCAFajYCDCAEIANrIQdBAgwBCyADQQFqIQdBAAshBSABIAdnQRhzIgNrIQEgByADdAshAyACIAE2AhQgAiADQQFrNgIQIAsgBToAgQYgFSAFQYGChAhsIgE2AAAgLSABNgAADAELIAtBgQZqIQdBACESA0AgEiAtaiIdLQAAIQFBACEKA0AgCiAVaiIOLQAAQdoAbCABQQlsakGQI2oiDy0AACEIIAIoAhAhBQJAIAIoAhQiA0EATgRAIAMhAQwBCyACKAIYIgQgAigCIEkEQCAEKAAAIQEgAiAEQQNqNgIYIAIgAigCDEEYdCABQQh2QYD+A3EgAUEYdCABQYD+A3FBCHRyckEIdnI2AgwgA0EYaiEBDAELIAIoAhwgBEsEQCACIANBCGoiATYCFCACIARBAWo2AhggAiAELQAAIAIoAgxBCHRyNgIMDAELQQAhASACKAIkDQAgAiACKAIMQQh0NgIMIAJBATYCJCADQQhqIQELIAIgAQJ/IAIoAgwiBiABdiITIAUgCGxBCHYiCEsEQCACIAhBf3MgAXQgBmoiBjYCDCAFIAhrDAELIAhBAWoLIgFnQRhzIgNrIgQ2AhQgAiABIAN0QQFrIgM2AhAgCCATSSIFQaAqai0AACEBIAYhCEHqxQIgBXZBAXEEQANAIA8gAcAiAWotAAAhEyABQQF0ISECfwJ/IARBAE4EQCAEIQEgCAwBCwJAIAIoAhgiBSACKAIgSQRAIAUoAAAhASACIAVBA2o2AhggAiAIQRh0IAFBCHZBgP4DcSABQRh0IAFBgP4DcUEIdHJyQQh2ciIGNgIMIARBGGohAQwBCyACKAIcIAVLBEAgAiAEQQhqIgE2AhQgAiAFQQFqNgIYIAIgBS0AACAIQQh0ciIGNgIMDAELQQAhASAGIAIoAiQNARogAiAIQQh0IgY2AgwgAkEBNgIkIARBCGohAQsgBgsiCCABdiIiIAMgE2xBCHYiBUsEQCACIAVBf3MgAXQgCGoiBjYCDCAGIQggAyAFawwBCyAFQQFqCyEDIAIgASADZ0EYcyIBayIENgIUIAIgAyABdEEBayIDNgIQICEgBSAiSXIiBUGgKmotAAAhAUHqxQIgBXZBAXENAAsLIA5BACABwGsiAToAACAKQQFqIgpBBEcNAAsgByAVKAAANgAAIB0gAToAACAHQQRqIQcgEkEBaiISQQRHDQALCyACKAIQIQYCQCACKAIUIgFBAE4NACACKAIYIgMgAigCIEkEQCADKAAAIQQgAiADQQNqNgIYIAIgAigCDEEYdCAEQQh2QYD+A3EgBEEYdCAEQYD+A3FBCHRyckEIdnI2AgwgAUEYaiEBDAELIAIoAhwgA0sEQCACIAFBCGoiATYCFCACIANBAWo2AhggAiADLQAAIAIoAgxBCHRyNgIMDAELIAIoAiRFBEAgAiACKAIMQQh0NgIMIAIgAUEIaiIBNgIUIAJBATYCJAwBC0EAIQEgAkEANgIUCyACIAECfyAGQY4BbEEIdiIDIAIoAgwiBSABdk8iBEUEQCACIANBf3MgAXQgBWoiBTYCDCAGIANrDAELIANBAWoLIgNnQRhzIgZrIgE2AhQgAiADIAZ0QQFrIgY2AhBBACEHAkAgBA0AAkAgAUEATg0AIAIoAhgiAyACKAIgSQRAIAMoAAAhBCACIANBA2o2AhggAiAFQRh0IARBCHZBgP4DcSAEQRh0IARBgP4DcUEIdHJyQQh2ciIFNgIMIAFBGGohAQwBCyACKAIcIANLBEAgAiABQQhqIgE2AhQgAiADQQFqNgIYIAIgAy0AACAFQQh0ciIFNgIMDAELIAIoAiQEQEEAIQEMAQsgAiAFQQh0IgU2AgwgAkEBNgIkIAFBCGohAQsgAiABAn8gBkHyAGxBCHYiAyAFIAF2TyIERQRAIAIgA0F/cyABdCAFaiIFNgIMIAYgA2sMAQsgA0EBagsiA2dBGHMiBmsiATYCFCACIAMgBnRBAWsiBjYCEEECIQcgBA0AAkAgAUEATg0AIAIoAhgiAyACKAIgSQRAIAMoAAAhBCACIANBA2o2AhggAiAFQRh0IARBCHZBgP4DcSAEQRh0IARBgP4DcUEIdHJyQQh2ciIFNgIMIAFBGGohAQwBCyACKAIcIANLBEAgAiABQQhqIgE2AhQgAiADQQFqNgIYIAIgAy0AACAFQQh0ciIFNgIMDAELIAIoAiQEQEEAIQEMAQsgAiAFQQh0IgU2AgwgAkEBNgIkIAFBCGohAQsgAiABAn8gBkG3AWxBCHYiAyAFIAF2SQRAIAIgA0F/cyABdCAFajYCDEEBIQcgBiADawwBC0EDIQcgA0EBagsiAWdBGHMiA2s2AhQgAiABIAN0QQFrNgIQCyALIAc6AJEGIBBBAWoiECACKAKgAiIBSA0ACwsgAigCJA0CIAEgAigC+BEiFUoEQCACIBkgHHFBHGxqIiFBvAJqIQcDQCACKALQESIBIBVBAXRqIRAgAUECayEZIAIoAoASIRwCfwJAIAIoArwRBEAgHCAVQaAGbGoiAy0AnQYNAQtBACESIAIgHCAVQaAGbCIiaiIILQCeBkEFdGohHUEAIQUgDSEEIAhBAEGABhAVIgYtAIAGRQRAIAlCADcDqAEgCUIANwOgASAJQgA3A5gBIAlCADcDkAEgAUEBayIBIAcgLyABLQAAIBAtAAFqIB1BkAZqQQAgCUGQAWpBpN8AKAIAEQcAIgNBAEoiAToAACAQIAE6AAEgCS4BkAEhAQJAIANBAk4EQCAGIAkuAaoBIgMgCS4BkgEiBGoiCiAJLgGiASIFIAkuAZoBIgtqIg5rIg8gCS4BrAEiEyAJLgGUASIWaiIXIAkuAaQBIhggCS4BnAEiGmoiI2siHmsiJCAJLgGoASIbIAFqIiUgCS4BoAEiHyAJLgGYASIgaiIma0EDaiInIAkuAa4BIiggCS4BlgEiKWoiMCAJLgGmASIxIAkuAZ4BIjJqIjNrIjRrIjVqQQN2OwGgAiAGIA8gHmoiDyAnIDRqIh5qQQN2OwGAAiAGICAgH2siHyABIBtrIgFqQQNqIhsgMiAxayIgICkgKGsiJ2oiKGsiKSALIAVrIgUgBCADayIDaiIEIBogGGsiCyAWIBNrIhNqIhZrIhhrQQN2OwHgASAGIBsgKGoiGiAEIBZqIgRrQQN2OwHAASAGIBggKWpBA3Y7AaABIAYgBCAaakEDdjsBgAEgBiAlICZqQQNqIgQgMCAzaiIWayIYIAogDmoiCiAXICNqIg5rIhdrQQN2OwFgIAYgBCAWaiIEIAogDmoiCmtBA3Y7AUAgBiAXIBhqQQN2OwEgIAYgBCAKakEDdjsBACABIB9rQQNqIgEgJyAgayIKayIOIAMgBWsiAyATIAtrIgVrIgtrQQN2IQQgASAKaiIBIAMgBWoiCmtBA3YhAyALIA5qQQN2IQsgASAKakEDdiEKIDUgJGtBA3YhASAeIA9rQQN2IQUMAQsgBiABQQNqQQN1IgU7AaACIAYgBTsBgAIgBiAFOwHgASAGIAU7AcABIAYgBTsBoAEgBiAFOwGAASAGIAU7AWAgBiAFOwFAIAYgBTsBICAGIAU7AQAgBSIBIgoiCyIDIQQLIAYgBDsB4AMgBiADOwHAAyAGIAs7AaADIAYgCjsBgAMgBiABOwHgAiAGIAU7AcACQQEhBSAUIQQLIB1BiAZqIQMgGS0AAEEPcSEGIBAtAABBD3EhC0EAIQoDQCAHIAQgBkEBcSALQQFxaiADIAUgCCIBQaTfACgCABEHACEIIAEvAQAhEyAHIAQgBSAISCIOIAtBAXYiD0EBcWogAyAFIAFBIGpBpN8AKAIAEQcAIQsgAS8BICEWIAcgBCAFIAtIIhcgD0H+AHEgDkEHdHJBAXYiD0EBcWogAyAFIAFBQGtBpN8AKAIAEQcAIQ4gAS8BQCEYIAcgBCAFIA5IIhogF0EHdCAPckEBdiIXQQFxaiADIAUgAUHgAGpBpN8AKAIAEQcAIQ9BA0ECIBZBAEcgC0ECThsgC0EDShtBDEEIIBNBAEdBAnQgCEECThsgCEEDShtyQQR0QQxBCCAYQQBHQQJ0IA5BAk4bIA5BA0obckEDQQIgAS8BYEEARyAPQQJOGyAPQQNKG3IgEkEIdHIhEiAFIA9IIghBA3QgGkEHdCAXckEFdnIhCyAIQQd0IAZB/gFxQQF2ciEGIAFBgAFqIQggCkEBaiIKQQRHDQALIAcgESAZLQAAIgpBBHZBAXEgEC0AACIFQQR2QQFxaiAdQZgGaiIDQQAgCEGk3wAoAgARBwAhBCABLwGAASEWIAcgESAEQQBKIg4gBUEFdkEBcWogA0EAIAFBoAFqQaTfACgCABEHACEIIAEvAaABIRcgByARIApBBXZBAXEgDmogA0EAIAFBwAFqQaTfACgCABEHACEKIAEvAcABIRggByARIApBAEoiGiAIQQBKIiNqIANBACABQeABakGk3wAoAgARBwAhBSABLwHgASEeIAcgESAZLQAAIhNBBnZBAXEgEC0AACIPQQZ2QQFxaiADQQAgAUGAAmpBpN8AKAIAEQcAIQ4gAS8BgAIhJCAHIBEgDkEASiIbIA9BB3ZqIANBACABQaACakGk3wAoAgARBwAhDyABLwGgAiElIAcgESATQQd2IBtqIANBACABQcACakGk3wAoAgARBwAhEyABLwHAAiEbIAcgESATQQBKIh8gD0EASiIgaiADQQAgAUHgAmpBpN8AKAIAEQcAIQMgAS8B4AIhJiAQIAsgA0EASkEHdCIBIB9BBnRyIAVBAEpBBXQiECAaQQR0cnJyOgAAIBkgI0EEdCAGQQR2ciAQciAgQQZ0ciABcjoAACAcICJqIgFBA0ECIBdBAEcgCEECThsgCEEDShtBDEEIIBZBAEdBAnQgBEECThsgBEEDShtyQQR0QQxBCCAYQQBHQQJ0IApBAk4bIApBA0obckEDQQIgHkEARyAFQQJOGyAFQQNKG3JBA0ECICVBAEcgD0ECThsgD0EDShtBDEEIICRBAEdBAnQgDkECThsgDkEDShtyQQR0QQxBCCAbQQBHQQJ0IBNBAk4bIBNBA0obckEDQQIgJkEARyADQQJOGyADQQNKG3JBCHRyIgM2ApgGIAEgEjYClAYgASADQarVAnEEf0EABSAdKAKkBgs6AJwGIAMgEnJFDAELIBBBADoAACAZQQA6AAAgAy0AgAZFBEAgEEEAOgABIAFBAWtBADoAAAsgA0IANwKUBiADQQA6AJwGQQELIQMgAigChBJBAEoEQCACKALUESACKAL4EUECdGoiASACIBwgFUGgBmxqIgQtAJ4GQQN0aiAELQCABkECdGpBiBJqKAIANgAAIAEgAS0AAiADRXI6AAILICEoAtQCBEBBACEDIAIoAgANByACQZMRNgIIIAJCBzcCAAwHCyACIAIoAvgRQQFqIhU2AvgRIBUgAigCoAJIDQALC0EAIQEgAigC0BFBAmtBADsAACACQQA2AvgRIAJBADYCyBECQCACKAKEEkEATA0AIAIoAvwRIgMgAigCrAJIDQAgAyACKAK0AkwhAQsCQAJAIAIoApQBIgMEQCACKAKQAQ0BIC4gCUEkakHsABAUGiACIAE2AqgBIAIgAigCmAE2AqABIAIgAigC/BE2AqQBAkAgA0ECRgRAIAIoAoASIQMgAiACKAKwATYCgBIgAiADNgKwAQwBCyACICwQKwsgAQRAIAIoAtQRIQEgAiACKAKsATYC1BEgAiABNgKsAQsgAigChAEiAQRAIAIoAogBIAIoAowBIAERBQAhASACIAIoApABIAFFcjYCkAELIAIgAigCmAFBAWoiAUEAIAEgAigCnAFHGzYCmAEMAgsgAiABNgKoASACIAIoAvwRNgKkASACICwQKyACIAlBJGoQLw0BC0EAIQMgAigCAA0FIAJBgxE2AgggAkIGNwIADAULIAIgAigC/BFBAWoiGTYC/BEgGSACKAK0AkgNAAsLIAIoApQBQQBKBEBBACEDIAIoApABDQMLQQEhAwwCC0EAIQMgAigCAA0BIAJBthE2AgggAkIHNwIADAELQQAhAyACKAIADQAgAkG0EDYCCCACQgE3AgALQQEhASACKAKUAUEASgRAIAIoApABRSEBCyAJKAJYIgQEQCAJQSRqIAQRAAALIAEgA3ENAgsgAkEANgKAASACKAK4EhASIAJCADcCuBIgAigCqBIiAQRAIAEoAhQiAwRAIAMQHSADEBILIAEQEgsgAkEANgKoEiACKALwERASIAJCADcCDCACQgA3AvARIAJCADcCFCACQgA3AhwgAkEANgIkIAJBADYCBAsgAigCACEBDAELQQAhASACQQA2AgQLIAJBADYCgAEgAigCuBIQEiACQgA3ArgSIAIoAqgSIgMEQCADKAIUIgQEQCAEEB0gBBASCyADEBILIAJBADYCqBIgAigC8BEQEgsgAhASIAEEQCAMKAJgIgNFDQEgAygCDEEATARAIAMoAlAQEgsgA0EANgJQDAELQQAhASAMKAJ0IgNFDQAgAygCMEUNACAMKAJgIgNFBEBBAiEBDAELIAMoAghBAWshBiADKAIQIQgCQCADKAIAQQpNBEAgAyAIIAYgA0EUaiIEKAIAIgNsajYCEAwBCyADQQAgAygCICIEazYCICADQQAgAygCJCIKazYCJCADQQAgAygCKCIFazYCKCADIAggBCAGbGo2AhAgAyADKAIUIAogBkEBdSIEbGo2AhQgAyADKAIYIAQgBWxqNgIYIAMoAhwiCEUNASADIAggA0EsaiIEKAIAIgMgBmxqNgIcCyAEQQAgA2s2AgALIAlBsAFqJAAgAQ0AIAwoAhgiAUUNAAJAQaDfAC0AAA0AQaDfAEEBOgAAQZDfAEGACBAENgIAQQYQJkGU3wBB/QoQBDYCAEEHECZBoN8ALQAADQBBoN8AQQE6AABBkN8AQYAIEAQ2AgBBBhAmQZTfAEH9ChAENgIAQQcQJgsgDCABNgIMIAwgKiArbEECdDYCCEGQ3wAoAgBBAUG8EiAMQQhqIgQQByIDEAggDCArNgIYIAwgKjYCECAMIAM2AgggAEGU3wAoAgBBA0HAEiAEEAc2AgAgAxADIAEQEgwBCyAAQQI2AgALIAxBwAFqJAALvwIBB38gACAAQR9rLQAAIgVBAWoiASAAQR5rLQAAIgJqQQF2IgM6AEAgACABIABBIGstAAAiBmpBAXY6AAAgACACIABBHWstAAAiAWpBAWpBAXYiBDoAQSAAIAM6AAEgACABIABBHGstAAAiA2pBAWpBAXYiBzoAQiAAIAQ6AAIgACAHOgADIAAgBSABQQJqIgRqIAJBAXRqQQJ2Igc6AGAgACAGIAJBAmoiAmogBUEBdGpBAnY6ACAgACADIAIgAUEBdGpqQQJ2IgU6AGEgACAHOgAhIABBGWstAAAhBiAAQRprLQAAIQIgACAAQRtrLQAAIgEgBCADQQF0ampBAnYiBDoAYiAAIAU6ACIgACAGIAEgAkEBdGpqQQJqQQJ2OgBjIAAgAiADIAFBAXRqakECakECdjoAQyAAIAQ6ACMLsAIBCX8gACAALQAfIgMgAC0APyIEakEBakEBdiICOgBiIAAgBCAALQBfIgdqQQFqQQF2OgBgIAAgAjoAQCAAIABBAWstAAAiBkEBaiIBIABBIWstAAAiAmpBAXYiBToAIiAAIAEgA2pBAXYiAToAQiAAIAU6AAAgACABOgAgIAAgAEEgay0AACIBIAZBAmoiBSACQQF0ampBAnYiCDoAIyAAIABBHmstAAAgASAAQR9rLQAAIglBAXRqakECakECdjoAAyAAIAkgAiABQQF0ampBAmpBAnY6AAIgACACIANBAmoiASAGQQF0ampBAnYiAjoAQyAAIAg6AAEgACAEIAVqIANBAXRqQQJ2IgM6AGMgACACOgAhIAAgASAHaiAEQQF0akECdjoAYSAAIAM6AEEL2QEBBn8gACAALQBfIgE6AGMgACABOgBiIAAgAToAYSAAIAE6AGAgACAALQAfIgRBAWoiAyAALQA/IgJqQQF2IgU6ACAgACADIABBAWstAAAiBmpBAXY6AAAgACABIAJqQQFqQQF2IgM6AEAgACAFOgACIAAgAzoAIiAAIAEgBGogAkEBdGpBAmpBAnYiAzoAISAAIAYgAkECaiICaiAEQQF0akECdjoAASAAIAEgAmogAUEBdGpBAnYiAjoAQSAAIAM6AAMgACACOgAjIAAgAToAQyAAIAE6AEILbgEBfyAAIAAtAF8gAEEday0AACAALQA/IABBHmstAAAgAC0AHyAAQR9rLQAAIABBIGstAAAgAEEBay0AAGpqampqampBBGpBA3ZB/wFxQYGChAhsIgE2AGAgACABNgBAIAAgATYAICAAIAE2AAALpAIBBn8gAEHvwwAgAEEhay0AAGsiAiAAQQFrLQAAaiIBIABBIGstAAAiA2otAAA6AAAgACABIABBH2stAAAiBGotAAA6AAEgACABIABBHmstAAAiBWotAAA6AAIgACABIABBHWstAAAiBmotAAA6AAMgACAGIAIgAC0AH2oiAWotAAA6ACMgACABIAVqLQAAOgAiIAAgASAEai0AADoAISAAIAEgA2otAAA6ACAgACAGIAIgAC0AP2oiAWotAAA6AEMgACABIAVqLQAAOgBCIAAgASAEai0AADoAQSAAIAEgA2otAAA6AEAgACAGIAIgAC0AX2oiAmotAAA6AGMgACACIAVqLQAAOgBiIAAgAiAEai0AADoAYSAAIAIgA2otAAA6AGAL4gEBBn8gACAAQRxrLQAAIABBHmstAAAiAkECaiIDIABBHWstAAAiAUEBdGpqQQJ2IgQ6AGMgACABIABBH2stAAAiBUECaiIGIAJBAXRqakECdiICOgBiIAAgAyAAQSBrLQAAIgFqIAVBAXRqQQJ2IgM6AGEgACAGIABBIWstAABqIAFBAXRqQQJ2IgE6AGAgACAEOgBDIAAgAjoAQiAAIAM6AEEgACABOgBAIAAgBDoAIyAAIAI6ACIgACADOgAhIAAgAToAICAAIAQ6AAMgACACOgACIAAgAzoAASAAIAE6AAALpgIBBX8gACAALQBfIAAtAB8iAUECaiIDIAAtAD8iAkEBdGpqQQJ2OgBgIAAgAiAAQQFrLQAAIgRBAmoiBSABQQF0ampBAnYiAToAYSAAIAE6AEAgACAAQSFrLQAAIgIgAyAEQQF0ampBAnYiAToAYiAAIAE6AEEgACABOgAgIAAgBSAAQSBrLQAAIgNqIAJBAXRqQQJ2IgE6AGMgACABOgBCIAAgAToAISAAIAE6AAAgAEEday0AACEFIABBHmstAAAhASAAIAIgAEEfay0AACIEaiADQQF0akECakECdiICOgBDIAAgAjoAIiAAIAI6AAEgACABIANqIARBAXRqQQJqQQJ2IgI6ACMgACACOgACIAAgBCAFaiABQQF0akECakECdjoAAwujAgEFfyAAIABBHWstAAAiAkECaiIFIABBH2stAAAiA2ogAEEeay0AACIBQQF0akECdiIEOgAgIAAgAUECaiIBIABBIGstAABqIANBAXRqQQJ2OgAAIAAgAEEcay0AACIDIAEgAkEBdGpqQQJ2IgE6AEAgACAEOgABIAAgAToAISAAIABBG2stAAAiBCAFIANBAXRqakECdiICOgBgIAAgAToAAiAAIAI6AEEgACACOgAiIAAgAjoAAyAAIABBGmstAAAiAiADIARBAXRqakECakECdiIDOgBhIAAgAEEZay0AACIBIAQgAkEBdGpqQQJqQQJ2IgQ6AGIgACADOgAjIAAgAzoAQiAAIAEgAmogAUEBdGpBAmpBAnY6AGMgACAEOgBDCy8AIAAgARAhIABBIGogAUEEahAhIABBQGsgAUGAAWoQISAAQeAAaiABQYQBahAhC08BAX8gAC8BACICBEAgAiABECALIAAvASAiAgRAIAIgAUEEahAgCyAALwFAIgIEQCACIAFBgAFqECALIAAvAWAiAARAIAAgAUGEAWoQIAsLqQIBBH8jAEEQayICJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEDghAyACIAVBgICAgHhyNgIIIAIgAzYCACACIAQ2AgQgAyAEaiEFDAELIAIgBDoACyACIARqIQUgAiEDIARFDQELIAMgAUEEaiAEEBQaCyAFQQA6AAAgAkEMaiACIAARAwAgAigCDBAIIAIoAgwiABADIAIsAAtBAEgEQCACKAIAEBILIAJBEGokACAADwtB2AAQFkHQAGoiA0Hk2gA2AgAgA0GQ2QA2AgBBGRA4IgFBADYCCCABQoyAgIDAATcCACABQQxqIgBBlwopAAA3AAUgAUGSCikAADcADCADIAA2AgQgA0HA2QA2AgAgA0Hg2QBBPBANAAvkEgETfwJAIAEgACgCbCIDayICQQBMDQAgACgCCCIIKAIAIQsgACgCECAAKAJkIgUgA2xBAnRqIQYgACgCFCEJAkAgACgCsAEiBEEASgRAIAAgBEEBayICQRRsakG0AWogAyABIAYgCRAnIARBAUYNAQNAIAAgAkEBayIGQRRsakG0AWogAyABIAkgCRAnIAJBAUshBCAGIQIgBA0ACwwBCyAGIAlGDQAgCSAGIAIgBWxBAnQQFBoLIAgoAlgiBiABIAEgBkobIgYgCCgCVCICIAAoAmwiAyACIANKIgUbIgRMDQAgCCAGIARrIgY2AhAgCCAEIAJrNgIIIAggCCgCUCAIKAJMIgprIgQ2AgwgCSALQQJ0IhAgAiADa2xBACAFG2ogCkECdGohCyAAKAIMIgIoAgAiEUEKTQRAIAIoAhAgAigCFCINIAAoAnRsaiEKAkAgCCgCXARAIAZBAEwEQEEAIQgMAgtBACEJQQAhCANAIAsgCSAQbGoiAyAQIAAoAowCIgIoAiwgAigCICIEIAIoAhhqQQFrIARtIgQgBiAJayICIAIgBEobEEEgACgCjAIgAiADIBAQGyAJaiEJQQAhBQJAIAAoAowCIgNBQGsiDigCACADKAI4Tg0AIAogCCANbGohEyADKAI0IQwgAygCRCESA0AgAygCGEEASg0BQYjhACECAkACQCADKAIEDQBBjOEAIQIgAygCFA0AIAMoAjQgAygCCGxBAEwNASADKAJMIQdBACECA0AgAygCRCACaiAHIAJBAnQiBGooAgA6AAAgAygCTCIHIARqQQA2AgAgAkEBaiICIAMoAjQgAygCCGxIDQALDAELIAMgAigCABEAAAsgAyADKAIYIAMoAhxqNgIYIAMgAygCRCADKAJIajYCRCAOIA4oAgBBAWo2AgBBACECIAxBAEoEQANAIBIgAkECdGoiFCgCACIEQf///3dNBEBBACEHIBQgBEGAgIAITwR/IARBgICAeHFBgICAeCAEQRh2biIHIARB/wFxbEGAgIAEakEYdnIgByAEQQh2Qf8BcWxBgICABGpBEHZBgP4DcXIgByAEQRB2Qf8BcWxBgICABGpBCHZBgID8B3FyBUEACzYCAAsgAkEBaiICIAxHDQALCyASIAwg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b2wAZW1zY3JpcHRlbjo6dmFsAGJhZCBwYXJ0aXRpb24gbGVuZ3RoAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBkb3VibGUAZGVjb2RlAEJhZCBjb2RlIHdvcmQAdm9pZABGcmFtZSBzZXR1cCBmYWlsZWQASW1hZ2VEYXRhAFZQOFgAV0VCUABWUDhMAE9LAEFMUEgAUklGRgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AEluY29ycmVjdCBrZXlmcmFtZSBwYXJhbWV0ZXJzLgBUcnVuY2F0ZWQgaGVhZGVyLgBubyBtZW1vcnkgZHVyaW5nIGZyYW1lIGluaXRpYWxpemF0aW9uLgBOb3QgYSBrZXkgZnJhbWUuAEZyYW1lIG5vdCBkaXNwbGF5YWJsZS4AT3V0cHV0IGFib3J0ZWQuAFByZW1hdHVyZSBlbmQtb2YtZmlsZSBlbmNvdW50ZXJlZC4AUHJlbWF0dXJlIGVuZC1vZi1wYXJ0aXRpb24wIGVuY291bnRlcmVkLgBDb3VsZCBub3QgZGVjb2RlIGFscGhhIGRhdGEuAG51bGwgVlA4SW8gcGFzc2VkIHRvIFZQOEdldEhlYWRlcnMoKQBWUDggAAAAwCgAAHwnAABpaWkA6CsAAGlpAAA4KQAAwCgAAOgrAADoKwAAAAAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2I/v/k24CAgICAvYHy/+PV/9uAgIBqfuP81tH//4CAgAFi+P/s4v//gICAtYXu/t3q/5qAgIBOhsr3xrT/24CAgAG5+f/z/4CAgICAuJb3/+zggICAgIBNbtj/7OaAgICAgAFl+//x/4CAgICAqovx/OzR//+AgIAldMTz5P///4CAgAHM/v/1/4CAgICAz6D6/+6AgICAgIBmZ+f/06uAgICAgAGY/P/w/4CAgICAsYfz/+rhgICAgIBQgdP/wuCAgICAgAEB/4CAgICAgICA9gH/gICAgICAgID/gICAgICAgICAgMYj7d/Bu6KgkZs+gy3G3ayw3J383QFEL5LQlafdov/fgAGV8f/d4P//gICAuI3q/d7c/8eAgIBRY7XysL75yv//gAGB6P3WxfLE//+AY3nS+snG/8qAgIAXW6Pyqrv30v//gAHI9v/q/4CAgICAbbLx/+f1//+AgIAsgsn9zcD//4CAgAGE7/vb0f+lgICAXojh+9q+//+AgIAWZK71uqH/x4CAgAG2+f/o64CAgICAfI/x/+PqgICAgIAjTbX7wdP/zYCAgAGd9//s5///gICAeY3r/+Hj//+AgIAtY7z7w9n/4ICAgAEB+//V/4CAgICAywH4//+AgICAgICJAbH/4P+AgICAgP0J+PvP0P/AgICArw3g88G5+cb//4BJEavdobPsp//qgAFf9/3Ut///gICA71r0+tPR//+AgICbTcP4vMP//4CAgAEY7/va2//NgICAyTPb/8S6gICAgIBFLr7vydr/5ICAgAG/+///gICAgICA36X5/9X/gICAgICNfPj//4CAgICAgAEQ+P//gICAgICAviTm/+z/gICAgICVAf+AgICAgICAgAHi/4CAgICAgICA98D/gICAgICAgIDwgP+AgICAgICAgAGG/P//gICAgICA1T76//+AgICAgIA3Xf+AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMoY1eu6v9yg8K//fia26Km45K7/u4A9Lorbl7Lwqv/YgAFw5vrHv/ef//+Apm3k/NPX/66AgIAnTaLorLT1sv//gAE03PbGx/nc//+AfEq/87fB+t3//4AYR4Lbmqrztv//gAG24fnb8P/ggICAlZbi/NjN/6uAgIAcbKryt8L+3///gAFR5vzMy//AgICAe2bR97zE/+mAgIAUX5nzpK3/y4CAgAHe+P/Y1YCAgICAqK/2/OvN//+AgIAvdNf/09T//4CAgAF57P3U1v//gICAjVTV/MnK/9uAgIAqUKDworn/zYCAgAEB/4CAgICAgICA9AH/gICAgICAgIDuAf+AgICAgICAgOd4MFlzcXiYcJizQH6qdi5GX69Fj1BVUkibZzg6CqvavRENmHIaEaMswxUKrXkYUMMaPixAVZBHCiar1ZAiGqouNxOIoCHORz8UCHJy0AwJ4lEoC2C2VB0QJIa3WYliZWqllEi7ZIKdbyBLUEJmp2NKPijqgCk1CbLxjRoIa0orGpJJpjEXnUEmaaAzNB9zgGhPDBvZ/1cRB1dERyxyMw+6Fy8pDm62txURwkItGWbFvRcSFlhYk5YqLi3EzStht3VVJiOzPSc1yFcaFSvoqzgiM2hyZh1dTSccVas6pVpiQCIWdM4XIiumSWs2IBozAVErH0QZahZAqyThciITFWaEvBBMfD4STl9VOTIwM8FlI5/Xb1kubzyUH6zb5BUSb3BxTVWz/yZ4cigqAcT10QoZbVgrHYym1SUrmj0/HptDLUQB0WRQCCuaATMaR45OThD/gCLFqykoBWbTtwQB3TMyEajRwBcZUoofJKsbpiYs5UNXOqlScxo7sz87WrQ7pl1JmigoFXSP0SInry8PELci3zEtty4RIbcGYg8gtzkuFhiAATYRJUEgSXMcgBeAzSgDCXMzwBIG31clCXM7TUAVL2g3LNoJNjWC4kBaRs0oKRcaOTY5cLgFKSam1R4iGoWYdAoghicTNd0aciBJ/x8JQeoCDwF2SUsgDDPA/6ArM1gfI0NmVTe6VTgVF287zS0lwDcmRnxJZgEiYn1iKlhoVXWvUl9UNVmAZHFlLUtPey8zgFGrATkRBUdmOTUpMSYhDXk5SRoBVSkKQ4pNblovcnMVAgpm/6YXBmUdEApVgGXEGjkSCmZm1SIUK3UUDySjgEQBGmY9RyUiNR/zwEU8RyZJdxzeJUQtgCIBLwv1qz4RE0aSVTc+RiUrJZpko1WgAT8JXIgcQCDJVUsPCQlA/7h3EFYGHAVA/xn4ATgIEYSJ/zd0gDoPFFKHORp5KKQyH4mahRkj2jNnLIODex8GnlYoQIeU4C23gBYaEYPwmg4B0S0QFVtA3gcBxTgVJ5s8ihdm1VMMDTbA/0QvHFUaVVWAgCCSqxILBz+QqwQE9iMbCpKuqwwagL5QI2O0UH42LVV+L1ewMykUIGVLgIt2knSAVTgpD7DsVSUJPkceEXd2/xESimUmPIo3RisajpIkEx6r/2EbFIotPT7bAVG8QCApFHWXjhQVo3ATDD3DgDAEGABBoSoLEQH/Av4DBAb9Bfz7+gf5CPj3AEHAKgu1BQQFBgcICQoKCwwNDg8QERESExQUFRUWFhcXGBkZGhscHR4fICEiIyQlJSYnKCkqKywtLi4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xMTU5PUFFSU1RVVldYWVtdX2BiZGVmaGpsbnBydHZ6fH6AgoSGiIqMj5GUl5qdBAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA8AD4AQABCAEQARgBIAEoATABOAFAAUgBUAFYAWABaAFwAXgBgAGIAZABmAGgAagBsAG4AcAByAHQAdwB6AH0AgACDAIYAiQCMAI8AkgCVAJgAmwCeAKEApACnAKoArQCxALUAuQC9AMEAxQDJAM0A0QDVANkA3QDhAOUA6gDvAPUA+QD+AAMBCAENARIBFwEcAQgHBgQEAgICAQEBAQACCAAAAAQACAAMAIAAhACIAIwAAAEEAQgBDAGAAYQBiAGMAQABBAgFAgMGCQwNCgcLDg8QFwAAFBcAABkXAAAfFwAArZSMALCbjIcAtJ2NhoIA/v7z5sSxmYyFgoEAAAAAAACKC4wLjguSC5oLqgvKCwoMjAyMDYwPjBMAAAAAAAAAABESAAECAwQFEAYHCAkKCwwNDg8CAwcDAwsAAAAAAAAAGAcXGSgGJykWGiYqOAU3ORUbNjolK0gER0kUHDU7RkokLFhFSzQ8A1dZEx1WWiMtRExVWzM9aAJnaRIeZmoiLlRcQ01lazI+eAF3eVNdER9kbEJOdnohL3V7MT9jbVJeAHR8QU8QIGJuMHN9UV9Acn5hb1Bxf2BwAwQDBAQCAgQEBAIBAQBBgDAL4BGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f38AAAAAAAAAAPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDx8vP09fb3+Pn6+/z9/v8AAQIDBAUGBwgJCgsMDQ4PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAEHwwwAL4wgBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAP/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAAAAAAEAAAADAAAABwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AEHgzAALjQ4wUuENhhizA8usX3dqYogcVVw4aCi4sxT4/oVKS7jdSZfz/GSJAlVcAAApStrBfg2rt0BZfVeSVHLKGU5pjNM4Ze4BDF91oTJS9jdUMiy7WrFXqg/nM/Vz2u5faOLMY3WDDplu7acwR8bZwE88FWtJ+gMUTwz7GlQyC5lzHMvXJgY3zG/Yd7ssKi92dd3MJWRhVLMkFYd9CqgUBCJnvx4UgxW0VuMC5XNvscpEQk0mKPuuunPt61AK+7ZqHQvUOg1oO9s1gx4IK5Vrznfw5YFRvDuFeJSUnwA87eUnTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAPQsAAA8JwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUAAPQsAACEJwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAAPQsAADMJwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAAD0LAAAFCgAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAA9CwAAGAoAABOMTBlbXNjcmlwdGVuM3ZhbEUAAPQsAACsKAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAAD0LAAAyCgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAA9CwAAPAoAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAAPQsAAAYKQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAAD0LAAAQCkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAA9CwAAGgpAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAAPQsAACQKQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAAD0LAAAuCkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAA9CwAAOApAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAAPQsAAAIKgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAAD0LAAAMCoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQAA9CwAAFgqAABOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAAA0LQAAgCoAACQtAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAA0LQAAsCoAAKQqAABOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UAAAA0LQAA4CoAAKQqAABOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQA0LQAAECsAAAQrAAAAAAAAhCsAAGMAAABkAAAAZQAAAGYAAABnAAAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FADQtAABcKwAApCoAAHYAAABIKwAAkCsAAGIAAABIKwAAnCsAAGMAAABIKwAAqCsAAGgAAABIKwAAtCsAAGEAAABIKwAAwCsAAHMAAABIKwAAzCsAAHQAAABIKwAA2CsAAGkAAABIKwAA5CsAAGoAAABIKwAA8CsAAGwAAABIKwAA/CsAAG0AAABIKwAACCwAAHgAAABIKwAAFCwAAHkAAABIKwAAICwAAGYAAABIKwAALCwAAGQAAABIKwAAOCwAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAA0LQAARCwAANQqAABTdDlleGNlcHRpb24AAAAAAAAAAKwsAAA8AAAAaAAAAGkAAABTdDExbG9naWNfZXJyb3IANC0AAJwsAABULQAAAAAAAOAsAAA8AAAAagAAAGkAAABTdDEybGVuZ3RoX2Vycm9yAAAAADQtAADMLAAArCwAAAAAAADUKgAAYwAAAGsAAABlAAAAZgAAAGwAAABtAAAAbgAAAG8AAABTdDl0eXBlX2luZm8AAAAA9CwAABQtAAAAAAAAbCwAAGMAAABwAAAAZQAAAGYAAABsAAAAcQAAAHIAAABzAAAA9CwAAHgsAAAAAAAAVC0AAHQAAAB1AAAAdgBB8NoACyrwMwEAdC0AAHgtAAB8LQAAgC0AAIQtAACILQAAjC0AAJAtAACULQAAmC0=",self.location.href).href;function OA(h){try{if(h==nA&&D)return new Uint8Array(D);if(n)return n(h);throw"both async and sync fetching of the wasm failed"}catch(c){NA(c)}}function KA(h){return!D&&(s||o)&&typeof fetch=="function"?fetch(h,{credentials:"same-origin"}).then(function(c){if(!c.ok)throw"failed to load wasm binary file at \'"+h+"\'";return c.arrayBuffer()}).catch(function(){return OA(h)}):Promise.resolve().then(function(){return OA(h)})}function TA(h,c,d){return KA(h).then(function(F){return WebAssembly.instantiate(F,c)}).then(function(F){return F}).then(d,function(F){r("failed to asynchronously prepare wasm: "+F),NA(F)})}function VA(h,c,d,F){return!h&&typeof WebAssembly.instantiateStreaming=="function"&&!xA(c)&&typeof fetch=="function"?fetch(c,{credentials:"same-origin"}).then(function(p){var R=WebAssembly.instantiateStreaming(p,d);return R.then(F,function(L){return r("wasm streaming compile failed: "+L),r("falling back to ArrayBuffer instantiation"),TA(c,d,F)})}):TA(c,d,F)}function X(){var h={a:Be};function c(F,p){var R=F.exports;return I.asm=R,l=I.asm.s,z(),T=I.asm.y,_(I.asm.t),SA(),R}RA();function d(F){c(F.instance)}if(I.instantiateWasm)try{return I.instantiateWasm(h,c)}catch(F){r("Module.instantiateWasm callback failed with error: "+F),B(F)}return VA(D,nA,h,d).catch(B),{}}function rA(h){for(;h.length>0;)h.shift()(I)}function V(h){this.excPtr=h,this.ptr=h-24,this.set_type=function(c){m[this.ptr+4>>2]=c},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(c){m[this.ptr+8>>2]=c},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_refcount=function(c){U[this.ptr>>2]=c},this.set_caught=function(c){c=c?1:0,k[this.ptr+12>>0]=c},this.get_caught=function(){return k[this.ptr+12>>0]!=0},this.set_rethrown=function(c){c=c?1:0,k[this.ptr+13>>0]=c},this.get_rethrown=function(){return k[this.ptr+13>>0]!=0},this.init=function(c,d){this.set_adjusted_ptr(0),this.set_type(c),this.set_destructor(d),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var c=U[this.ptr>>2];U[this.ptr>>2]=c+1},this.release_ref=function(){var c=U[this.ptr>>2];return U[this.ptr>>2]=c-1,c===1},this.set_adjusted_ptr=function(c){m[this.ptr+16>>2]=c},this.get_adjusted_ptr=function(){return m[this.ptr+16>>2]},this.get_exception_ptr=function(){var c=Gi(this.get_type());if(c)return m[this.excPtr>>2];var d=this.get_adjusted_ptr();return d!==0?d:this.excPtr}}function nI(h,c,d){var F=new V(h);throw F.init(c,d),h}function TI(h,c,d,F,p){}function hA(h){switch(h){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+h)}}function P(){for(var h=new Array(256),c=0;c<256;++c)h[c]=String.fromCharCode(c);sA=h}var sA=void 0;function q(h){for(var c="",d=h;S[d];)c+=sA[S[d++]];return c}var pA={},$A={},DI={},$I=48,jg=57;function _g(h){if(h===void 0)return"_unknown";h=h.replace(/[^a-zA-Z0-9_]/g,"$");var c=h.charCodeAt(0);return c>=$I&&c<=jg?"_"+h:h}function $g(h,c){return h=_g(h),{[h]:function(){return c.apply(this,arguments)}}[h]}function Ag(h,c){var d=$g(c,function(F){this.name=c,this.message=F;var p=new Error(F).stack;p!==void 0&&(this.stack=this.toString()+`\n`+p.replace(/^Error(:[^\\n]*)?\\n/,""))});return d.prototype=Object.create(h.prototype),d.prototype.constructor=d,d.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},d}var pg=void 0;function UA(h){throw new pg(h)}var Mg=void 0;function kg(h){throw new Mg(h)}function AB(h,c,d){h.forEach(function(Y){DI[Y]=c});function F(Y){var b=d(Y);b.length!==h.length&&kg("Mismatched type converter count");for(var j=0;j<h.length;++j)lA(h[j],b[j])}var p=new Array(c.length),R=[],L=0;c.forEach((Y,b)=>{$A.hasOwnProperty(Y)?p[b]=$A[Y]:(R.push(Y),pA.hasOwnProperty(Y)||(pA[Y]=[]),pA[Y].push(()=>{p[b]=$A[Y],++L,L===R.length&&F(p)}))}),R.length===0&&F(p)}function lA(h,c,d={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");var F=c.name;if(h||UA(\'type "\'+F+\'" must have a positive integer typeid pointer\'),$A.hasOwnProperty(h)){if(d.ignoreDuplicateRegistrations)return;UA("Cannot register type \'"+F+"\' twice")}if($A[h]=c,delete DI[h],pA.hasOwnProperty(h)){var p=pA[h];delete pA[h],p.forEach(R=>R())}}function MI(h,c,d,F,p){var R=hA(d);c=q(c),lA(h,{name:c,fromWireType:function(L){return!!L},toWireType:function(L,Y){return Y?F:p},argPackAdvance:8,readValueFromPointer:function(L){var Y;if(d===1)Y=k;else if(d===2)Y=N;else if(d===4)Y=U;else throw new TypeError("Unknown boolean type size: "+c);return this.fromWireType(Y[L>>R])},destructorFunction:null})}var BI=[],YA=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Di(h){h>4&&--YA[h].refcount===0&&(YA[h]=void 0,BI.push(h))}function hs(){for(var h=0,c=5;c<YA.length;++c)YA[c]!==void 0&&++h;return h}function cs(){for(var h=5;h<YA.length;++h)if(YA[h]!==void 0)return YA[h];return null}function Ds(){I.count_emval_handles=hs,I.get_first_emval=cs}var Rg={toValue:h=>(h||UA("Cannot use deleted val. handle = "+h),YA[h].value),toHandle:h=>{switch(h){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var c=BI.length?BI.pop():YA.length;return YA[c]={refcount:1,value:h},c}}}};function Jt(h){return this.fromWireType(U[h>>2])}function ls(h,c){c=q(c),lA(h,{name:c,fromWireType:function(d){var F=Rg.toValue(d);return Di(d),F},toWireType:function(d,F){return Rg.toHandle(F)},argPackAdvance:8,readValueFromPointer:Jt,destructorFunction:null})}function ys(h,c){switch(c){case 2:return function(d){return this.fromWireType(J[d>>2])};case 3:return function(d){return this.fromWireType(K[d>>3])};default:throw new TypeError("Unknown float type: "+h)}}function ds(h,c,d){var F=hA(d);c=q(c),lA(h,{name:c,fromWireType:function(p){return p},toWireType:function(p,R){return R},argPackAdvance:8,readValueFromPointer:ys(c,F),destructorFunction:null})}function ws(h){for(;h.length;){var c=h.pop(),d=h.pop();d(c)}}function us(h,c,d,F,p,R){var L=c.length;L<2&&UA("argTypes array size mismatch! Must at least get return value and \'this\' types!"),c[1];for(var Y=!1,b=1;b<c.length;++b)if(c[b]!==null&&c[b].destructorFunction===void 0){Y=!0;break}var j=c[0].name!=="void",wA=L-2,oA=new Array(wA),MA=[],ZI=[];return function(){arguments.length!==wA&&UA("function "+h+" called with "+arguments.length+" arguments, expected "+wA+" args!"),ZI.length=0;var IB;MA.length=1,MA[0]=p;for(var zI=0;zI<wA;++zI)oA[zI]=c[zI+2].toWireType(ZI,arguments[zI]),MA.push(oA[zI]);var WB=F.apply(null,MA);function te(Qe){if(Y)ws(ZI);else for(var mg=2;mg<c.length;mg++){var ie=mg===1?IB:oA[mg-2];c[mg].destructorFunction!==null&&c[mg].destructorFunction(ie)}if(j)return c[0].fromWireType(Qe)}return te(WB)}}function fs(h,c,d){if(h[c].overloadTable===void 0){var F=h[c];h[c]=function(){return h[c].overloadTable.hasOwnProperty(arguments.length)||UA("Function \'"+d+"\' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+h[c].overloadTable+")!"),h[c].overloadTable[arguments.length].apply(this,arguments)},h[c].overloadTable=[],h[c].overloadTable[F.argCount]=F}}function Gs(h,c,d){I.hasOwnProperty(h)?((d===void 0||I[h].overloadTable!==void 0&&I[h].overloadTable[d]!==void 0)&&UA("Cannot register public name \'"+h+"\' twice"),fs(I,h,h),I.hasOwnProperty(d)&&UA("Cannot register multiple overloads of a function with the same number of arguments ("+d+")!"),I[h].overloadTable[d]=c):(I[h]=c,d!==void 0&&(I[h].numArguments=d))}function Fs(h,c){for(var d=[],F=0;F<h;F++)d.push(m[c+F*4>>2]);return d}function Ss(h,c,d){I.hasOwnProperty(h)||kg("Replacing nonexistant public symbol"),I[h].overloadTable!==void 0&&d!==void 0?I[h].overloadTable[d]=c:(I[h]=c,I[h].argCount=d)}function Ns(h,c,d){var F=I["dynCall_"+h];return d&&d.length?F.apply(null,[c].concat(d)):F.call(null,c)}var ZB=[];function li(h){var c=ZB[h];return c||(h>=ZB.length&&(ZB.length=h+1),ZB[h]=c=T.get(h)),c}function ps(h,c,d){if(h.includes("j"))return Ns(h,c,d);var F=li(c).apply(null,d);return F}function Ms(h,c){var d=[];return function(){return d.length=0,Object.assign(d,arguments),ps(h,c,d)}}function ks(h,c){h=q(h);function d(){return h.includes("j")?Ms(h,c):li(c)}var F=d();return typeof F!="function"&&UA("unknown function pointer with signature "+h+": "+c),F}var yi=void 0;function di(h){var c=fi(h),d=q(c);return kI(c),d}function Rs(h,c){var d=[],F={};function p(R){if(!F[R]&&!$A[R]){if(DI[R]){DI[R].forEach(p);return}d.push(R),F[R]=!0}}throw c.forEach(p),new yi(h+": "+d.map(di).join([", "]))}function ms(h,c,d,F,p,R,L){var Y=Fs(c,d);h=q(h),p=ks(F,p),Gs(h,function(){Rs("Cannot call "+h+" due to unbound types",Y)},c-1),AB([],Y,function(b){var j=[b[0],null].concat(b.slice(1));return Ss(h,us(h,j,null,p,R),c-1),[]})}function xs(h,c,d){switch(c){case 0:return d?function(p){return k[p]}:function(p){return S[p]};case 1:return d?function(p){return N[p>>1]}:function(p){return H[p>>1]};case 2:return d?function(p){return U[p>>2]}:function(p){return m[p>>2]};default:throw new TypeError("Unknown integer type: "+h)}}function Us(h,c,d,F,p){c=q(c);var R=hA(d),L=oA=>oA;if(F===0){var Y=32-8*d;L=oA=>oA<<Y>>>Y}var b=c.includes("unsigned"),j=(oA,MA)=>{},wA;b?wA=function(oA,MA){return j(MA,this.name),MA>>>0}:wA=function(oA,MA){return j(MA,this.name),MA},lA(h,{name:c,fromWireType:L,toWireType:wA,argPackAdvance:8,readValueFromPointer:xs(c,R,F!==0),destructorFunction:null})}function Ys(h,c,d){var F=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],p=F[c];function R(L){L=L>>2;var Y=m,b=Y[L],j=Y[L+1];return new p(Y.buffer,j,b)}d=q(d),lA(h,{name:d,fromWireType:R,argPackAdvance:8,readValueFromPointer:R},{ignoreDuplicateRegistrations:!0})}function Js(h,c){c=q(c);var d=c==="std::string";lA(h,{name:c,fromWireType:function(F){var p=m[F>>2],R=F+4,L;if(d)for(var Y=R,b=0;b<=p;++b){var j=R+b;if(b==p||S[j]==0){var wA=j-Y,oA=u(Y,wA);L===void 0?L=oA:(L+="\\0",L+=oA),Y=j+1}}else{for(var MA=new Array(p),b=0;b<p;++b)MA[b]=String.fromCharCode(S[R+b]);L=MA.join("")}return kI(F),L},toWireType:function(F,p){p instanceof ArrayBuffer&&(p=new Uint8Array(p));var R,L=typeof p=="string";L||p instanceof Uint8Array||p instanceof Uint8ClampedArray||p instanceof Int8Array||UA("Cannot pass non-string to std::string"),d&&L?R=x(p):R=p.length;var Y=Lt(4+R+1),b=Y+4;if(m[Y>>2]=R,d&&L)M(p,b,R+1);else if(L)for(var j=0;j<R;++j){var wA=p.charCodeAt(j);wA>255&&(kI(b),UA("String has UTF-16 code units that do not fit in 8 bits")),S[b+j]=wA}else for(var j=0;j<R;++j)S[b+j]=p[j];return F!==null&&F.push(kI,Y),Y},argPackAdvance:8,readValueFromPointer:Jt,destructorFunction:function(F){kI(F)}})}function Ls(h,c){for(var d="",F=0;!(F>=c/2);++F){var p=N[h+F*2>>1];if(p==0)break;d+=String.fromCharCode(p)}return d}function Hs(h,c,d){if(d===void 0&&(d=2147483647),d<2)return 0;d-=2;for(var F=c,p=d<h.length*2?d/2:h.length,R=0;R<p;++R){var L=h.charCodeAt(R);N[c>>1]=L,c+=2}return N[c>>1]=0,c-F}function bs(h){return h.length*2}function Ks(h,c){for(var d=0,F="";!(d>=c/4);){var p=U[h+d*4>>2];if(p==0)break;if(++d,p>=65536){var R=p-65536;F+=String.fromCharCode(55296|R>>10,56320|R&1023)}else F+=String.fromCharCode(p)}return F}function qs(h,c,d){if(d===void 0&&(d=2147483647),d<4)return 0;for(var F=c,p=F+d-4,R=0;R<h.length;++R){var L=h.charCodeAt(R);if(L>=55296&&L<=57343){var Y=h.charCodeAt(++R);L=65536+((L&1023)<<10)|Y&1023}if(U[c>>2]=L,c+=4,c+4>p)break}return U[c>>2]=0,c-F}function Ts(h){for(var c=0,d=0;d<h.length;++d){var F=h.charCodeAt(d);F>=55296&&F<=57343&&++d,c+=4}return c}function Zs(h,c,d){d=q(d);var F,p,R,L,Y;c===2?(F=Ls,p=Hs,L=bs,R=()=>H,Y=1):c===4&&(F=Ks,p=qs,L=Ts,R=()=>m,Y=2),lA(h,{name:d,fromWireType:function(b){for(var j=m[b>>2],wA=R(),oA,MA=b+4,ZI=0;ZI<=j;++ZI){var IB=b+4+ZI*c;if(ZI==j||wA[IB>>Y]==0){var zI=IB-MA,WB=F(MA,zI);oA===void 0?oA=WB:(oA+="\\0",oA+=WB),MA=IB+c}}return kI(b),oA},toWireType:function(b,j){typeof j!="string"&&UA("Cannot pass non-string to C++ string type "+d);var wA=L(j),oA=Lt(4+wA+c);return m[oA>>2]=wA>>Y,p(j,oA+4,wA+c),b!==null&&b.push(kI,oA),oA},argPackAdvance:8,readValueFromPointer:Jt,destructorFunction:function(b){kI(b)}})}function zs(h,c){c=q(c),lA(h,{isVoid:!0,name:c,argPackAdvance:0,fromWireType:function(){},toWireType:function(d,F){}})}var Ws={};function vs(h){var c=Ws[h];return c===void 0?q(h):c}function wi(){if(typeof globalThis=="object")return globalThis;function h(c){c.$$$embind_global$$$=c;var d=typeof $$$embind_global$$$=="object"&&c.$$$embind_global$$$==c;return d||delete c.$$$embind_global$$$,d}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&h(global)?$$$embind_global$$$=global:typeof self=="object"&&h(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")}function Os(h){return h===0?Rg.toHandle(wi()):(h=vs(h),Rg.toHandle(wi()[h]))}function Vs(h){h>4&&(YA[h].refcount+=1)}function Xs(h,c){var d=$A[h];return d===void 0&&UA(c+" has unknown type "+di(h)),d}function Ps(h){var c=new Array(h+1);return function(d,F,p){c[0]=d;for(var R=0;R<h;++R){var L=Xs(m[F+R*4>>2],"parameter "+R);c[R+1]=L.readValueFromPointer(p),p+=L.argPackAdvance}var Y=new(d.bind.apply(d,c));return Rg.toHandle(Y)}}var ui={};function js(h,c,d,F){h=Rg.toValue(h);var p=ui[c];return p||(p=Ps(c),ui[c]=p),p(h,d,F)}function _s(){NA("")}function $s(h,c,d){S.copyWithin(h,c,c+d)}function Ae(){return 2147483648}function Ie(h){var c=l.buffer;try{return l.grow(h-c.byteLength+65535>>>16),z(),1}catch{}}function ge(h){var c=S.length;h=h>>>0;var d=Ae();if(h>d)return!1;let F=(b,j)=>b+(j-b%j)%j;for(var p=1;p<=4;p*=2){var R=c*(1+.2/p);R=Math.min(R,h+100663296);var L=Math.min(d,F(Math.max(h,R),65536)),Y=Ie(L);if(Y)return!0}return!1}P(),pg=I.BindingError=Ag(Error,"BindingError"),Mg=I.InternalError=Ag(Error,"InternalError"),Ds(),yi=I.UnboundTypeError=Ag(Error,"UnboundTypeError");var Be={n:nI,o:TI,l:MI,r:ls,k:ds,c:ms,b:Us,a:Ys,g:Js,f:Zs,m:zs,d:Di,e:Os,i:Vs,h:js,j:_s,q:$s,p:ge};X();var Lt=function(){return(Lt=I.asm.u).apply(null,arguments)},kI=function(){return(kI=I.asm.v).apply(null,arguments)},fi=I.___getTypeName=function(){return(fi=I.___getTypeName=I.asm.w).apply(null,arguments)};I.__embind_initialize_bindings=function(){return(I.__embind_initialize_bindings=I.asm.x).apply(null,arguments)};var Gi=function(){return(Gi=I.asm.z).apply(null,arguments)},zB;Z=function h(){zB||Fi(),zB||(Z=h)};function Fi(){if(v>0||(CA(),v>0))return;function h(){zB||(zB=!0,I.calledRun=!0,!y&&(QA(),g(I),I.onRuntimeInitialized&&I.onRuntimeInitialized(),EA()))}I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),h()},1)):h()}if(I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();return Fi(),I.ready}})();let Ft;async function tE(E,A){let I=E,g=A;arguments.length===1&&!(E instanceof WebAssembly.Module)&&(I=void 0,g=E),Ft=gE(BE,I,g)}async function QE(E){Ft||tE();const I=(await Ft).decode(E);if(!I)throw new Error("Decoding error");return I}async function iE(E,A){const I=JSON.parse(new TextDecoder().decode(E));if(I.quats.encoding!=="quaternion_packed")throw new Error("Unsupported quaternion encoding");const g=I.means.shape[0],B=pB(g),t=new Uint32Array(B*4),Q={},i=await Promise.all([vg(A[I.means.files[0]]),vg(A[I.means.files[1]])]);for(let n=0;n<g;++n){const r=n*4,D=(i[0][r+0]+(i[1][r+0]<<8))/65535,l=(i[0][r+1]+(i[1][r+1]<<8))/65535,y=(i[0][r+2]+(i[1][r+2]<<8))/65535;let w=I.means.mins[0]+(I.means.maxs[0]-I.means.mins[0])*D,u=I.means.mins[1]+(I.means.maxs[1]-I.means.mins[1])*l,G=I.means.mins[2]+(I.means.maxs[2]-I.means.mins[2])*y;w=Math.sign(w)*(Math.exp(Math.abs(w))-1),u=Math.sign(u)*(Math.exp(Math.abs(u))-1),G=Math.sign(G)*(Math.exp(Math.abs(G))-1),HQ(t,n,w,u,G)}const C=await vg(A[I.scales.files[0]]);for(let n=0;n<g;++n){const r=n*4,D=C[r+0]/255,l=C[r+1]/255,y=C[r+2]/255,w=I.scales.mins[0]+(I.scales.maxs[0]-I.scales.mins[0])*D,u=I.scales.mins[1]+(I.scales.maxs[1]-I.scales.mins[1])*l,G=I.scales.mins[2]+(I.scales.maxs[2]-I.scales.mins[2])*y;bQ(t,n,Math.exp(w),Math.exp(u),Math.exp(G))}const s=await vg(A[I.quats.files[0]]),o=Math.sqrt(2);for(let n=0;n<g;++n){const r=n*4,D=(s[r+0]/255-.5)*o,l=(s[r+1]/255-.5)*o,y=(s[r+2]/255-.5)*o,w=Math.sqrt(Math.max(0,1-D*D-l*l-y*y)),u=s[r+3]-252,G=u===0?D:u===1?w:l,M=u<=1?l:u===2?w:y,x=u<=2?y:w;KQ(t,n,G,M,x,u===0?w:D)}const e=await vg(A[I.sh0.files[0]]),a=.28209479177387814;for(let n=0;n<g;++n){const r=n*4,D=e[r+0]/255,l=e[r+1]/255,y=e[r+2]/255,w=e[r+3]/255,u=I.sh0.mins[0]+(I.sh0.maxs[0]-I.sh0.mins[0])*D,G=I.sh0.mins[1]+(I.sh0.maxs[1]-I.sh0.mins[1])*l,M=I.sh0.mins[2]+(I.sh0.maxs[2]-I.sh0.mins[2])*y,x=I.sh0.mins[3]+(I.sh0.maxs[3]-I.sh0.mins[3])*w,k=a*u+.5,S=a*G+.5,N=a*M+.5,H=1/(1+Math.exp(-x));qC(t,n,k,S,N,H)}if(I.shN){Q.sh1=new Uint32Array(g*2),Q.sh2=new Uint32Array(g*4),Q.sh3=new Uint32Array(g*4);const n=new Float32Array(9),r=new Float32Array(15),D=new Float32Array(21),[l,y]=await Promise.all([St(A[I.shN.files[0]]),St(A[I.shN.files[1]])]);for(let w=0;w<g;++w){const u=w*4,G=y.rgba[u+0]+(y.rgba[u+1]<<8),M=(G&63)*15,k=(G>>>6)*l.width+M;for(let S=0;S<3;++S){for(let N=0;N<3;++N)n[N*3+S]=I.shN.mins+(I.shN.maxs-I.shN.mins)*l.rgba[(k+N)*4+S]/255;for(let N=0;N<5;++N)r[N*3+S]=I.shN.mins+(I.shN.maxs-I.shN.mins)*l.rgba[(k+3+N)*4+S]/255;for(let N=0;N<7;++N)D[N*3+S]=I.shN.mins+(I.shN.maxs-I.shN.mins)*l.rgba[(k+8+N)*4+S]/255}kB(Q.sh1,w,n),RB(Q.sh2,w,r),mB(Q.sh3,w,D)}}return{packedArray:t,numSplats:g,extra:Q}}async function St(E){const{data:A,width:I,height:g}=await QE(E);return{rgba:A,width:I,height:g}}async function vg(E){const{rgba:A}=await St(E);return A}const Ng=class Ng{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:Q=>{Q.enqueue(this.fileBytes.slice(0,65536)),Q.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header\n`;for(;;){const{value:Q,done:i}=await I.read();if(i)throw new Error("Failed to read header");this.header+=Q;const C=this.header.indexOf(g);if(C>=0){this.header=this.header.slice(0,C+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let t=null;this.comments=[],this.header.trim().split(`\n`).forEach((Q,i)=>{const C=Q.trim();if(i===0){if(C!=="ply")throw new Error("Invalid PLY header");return}if(C.length===0)return;const s=C.split(" ");switch(s[0]){case"format":if(s[1]==="binary_little_endian")this.littleEndian=!0;else if(s[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${s[1]}`);if(s[2]!=="1.0")throw new Error(`Unsupported PLY version: ${s[2]}`);break;case"end_header":break;case"comment":this.comments.push(C.slice(8));break;case"element":{const o=s[1];t={name:o,count:Number.parseInt(s[2]),properties:{}},this.elements[o]=t;break}case"property":if(t==null)throw new Error("Property must be inside an element");s[1]==="list"?t.properties[s[4]]={isList:!0,type:s[3],countType:s[2]}:t.properties[s[2]]={isList:!1,type:s[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const t=this.elements[B],{count:Q,properties:i}=t,C={},s=[];for(const[e,a]of Object.entries(i))a.isList?(C[e]=[],s.push(()=>{const n=C[e];n.length=YB[a.countType](g,I,this.littleEndian),I+=fg[a.countType];for(let r=0;r<n.length;r++)n[r]=YB[a.type](g,I,this.littleEndian),I+=fg[a.type]})):(C[e]=0,s.push(()=>{C[e]=YB[a.type](g,I,this.littleEndian),I+=fg[a.type]}));const o=A(t)??(()=>{});for(let e=0;e<Q;e++){for(const a of s)a();o(e,C)}}}parseSplats(A,I){if(this.elements.vertex==null)throw new Error("No vertex element found");let g=!1;const B=[];let t=0,Q=[],i=[],C=[],s,o,e;function a(){const y=EE[t];Q=new Array(3).fill(null).flatMap((w,u)=>[0,1,2].map((G,M)=>`f_rest_${u+M*y/3}`)),i=new Array(5).fill(null).flatMap((w,u)=>[0,1,2].map((G,M)=>`f_rest_${3+u+M*y/3}`)),C=new Array(7).fill(null).flatMap((w,u)=>[0,1,2].map((G,M)=>`f_rest_${8+u+M*y/3}`)),s=t>=1?new Float32Array(3*3):void 0,o=t>=2?new Float32Array(5*3):void 0,e=t>=3?new Float32Array(7*3):void 0}function n(y,w){if(!s)throw new Error("Missing sh1");for(const[u,G]of Q.entries())s[u]=w[G]*8/255-4;if(o)for(const[u,G]of i.entries())o[u]=w[G]*8/255-4;if(e)for(const[u,G]of C.entries())e[u]=w[G]*8/255-4;I==null||I(y,s,o,e)}function r(y){const{min_x:w,min_y:u,min_z:G,max_x:M,max_y:x,max_z:k,min_scale_x:S,min_scale_y:N,min_scale_z:H,max_scale_x:U,max_scale_y:m,max_scale_z:J}=y.properties;if(!w||!u||!G||!M||!x||!k||!S||!N||!H||!U||!m||!J)throw new Error("Missing PLY chunk properties");return g=!0,(K,z)=>{const{min_x:T,min_y:W,min_z:BA,max_x:AA,max_y:CA,max_z:QA,min_scale_x:EA,min_scale_y:IA,min_scale_z:_,max_scale_x:O,max_scale_y:v,max_scale_z:Z,min_r:RA,min_g:SA,min_b:NA,max_r:mA,max_g:xA,max_b:nA}=z;B.push({min_x:T,min_y:W,min_z:BA,max_x:AA,max_y:CA,max_z:QA,min_scale_x:EA,min_scale_y:IA,min_scale_z:_,max_scale_x:O,max_scale_y:v,max_scale_z:Z,min_r:RA,min_g:SA,min_b:NA,max_r:mA,max_g:xA,max_b:nA})}}function D(y){if(I&&y.name==="sh")return t=vQ(y.properties),a(),n;if(y.name!=="vertex")return null;const{packed_position:w,packed_rotation:u,packed_scale:G,packed_color:M}=y.properties;if(!w||!u||!G||!M)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const x=Math.sqrt(2);return(k,S)=>{const N=B[k>>>8];if(N==null)throw new Error("Missing PLY chunk");const{min_x:H,min_y:U,min_z:m,max_x:J,max_y:K,max_z:z,min_scale_x:T,min_scale_y:W,min_scale_z:BA,max_scale_x:AA,max_scale_y:CA,max_scale_z:QA,min_r:EA,min_g:IA,min_b:_,max_r:O,max_g:v,max_b:Z}=N,{packed_position:RA,packed_rotation:SA,packed_scale:NA,packed_color:mA}=S,xA=(RA>>>21&2047)/2047*(J-H)+H,nA=(RA>>>11&1023)/1023*(K-U)+U,OA=(RA&2047)/2047*(z-m)+m,KA=((SA>>>20&1023)/1023-.5)*x,TA=((SA>>>10&1023)/1023-.5)*x,VA=((SA&1023)/1023-.5)*x,X=Math.sqrt(Math.max(0,1-KA*KA-TA*TA-VA*VA)),rA=SA>>>30,V=rA===0?KA:rA===1?X:TA,nI=rA<=1?TA:rA===2?X:VA,TI=rA<=2?VA:X,hA=rA===0?X:KA,P=Math.exp((NA>>>21&2047)/2047*(AA-T)+T),sA=Math.exp((NA>>>11&1023)/1023*(CA-W)+W),q=Math.exp((NA&2047)/2047*(QA-BA)+BA),pA=(mA>>>24&255)/255*((O??1)-(EA??0))+(EA??0),$A=(mA>>>16&255)/255*((v??1)-(IA??0))+(IA??0),DI=(mA>>>8&255)/255*((Z??1)-(_??0))+(_??0),$I=(mA&255)/255;A(k,xA,nA,OA,P,sA,q,V,nI,TI,hA,$I,pA,$A,DI)}}const l=y=>{if(y.name==="chunk")return r(y);if(g)return D(y);if(y.name!=="vertex")return null;const{x:w,y:u,z:G,scale_0:M,scale_1:x,scale_2:k,rot_0:S,rot_1:N,rot_2:H,rot_3:U,opacity:m,f_dc_0:J,f_dc_1:K,f_dc_2:z,red:T,green:W,blue:BA,alpha:AA}=y.properties;if(!w||!u||!G)throw new Error("Missing PLY properties: x, y, z");const CA=M&&x&&k,QA=S&&N&&H&&U,EA=AA!=null?JB[AA.type]:1,IA=T!=null?JB[T.type]:1,_=W!=null?JB[W.type]:1,O=BA!=null?JB[BA.type]:1;return t=vQ(y.properties),a(),(v,Z)=>{const RA=CA?Math.exp(Z.scale_0):Ng.defaultPointScale,SA=CA?Math.exp(Z.scale_1):Ng.defaultPointScale,NA=CA?Math.exp(Z.scale_2):Ng.defaultPointScale,mA=QA?Z.rot_1:0,xA=QA?Z.rot_2:0,nA=QA?Z.rot_3:0,OA=QA?Z.rot_0:1,KA=m!=null?1/(1+Math.exp(-Z.opacity)):AA!=null?Z.alpha/EA:1,TA=J!=null?Z.f_dc_0*UB+.5:T!=null?Z.red/IA:1,VA=K!=null?Z.f_dc_1*UB+.5:W!=null?Z.green/_:1,X=z!=null?Z.f_dc_2*UB+.5:BA!=null?Z.blue/O:1;if(A(v,Z.x,Z.y,Z.z,RA,SA,NA,mA,xA,nA,OA,KA,TA,VA,X),I&&s){if(s)for(const[rA,V]of Q.entries())s[rA]=Z[V];if(o)for(const[rA,V]of i.entries())o[rA]=Z[V];if(e)for(const[rA,V]of C.entries())e[rA]=Z[V];I(v,s,o,e)}}};this.parseData(l)}injectRgba(A){let I=0;const g=this.data;if(g==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const B in this.elements){const t=this.elements[B],{count:Q,properties:i}=t,C=[];let s=0;const o=B==="vertex";if(o){for(const e of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!i[e]||i[e].type!=="float")throw new Error(`Can\'t injectRgba due to property: ${e}`)}for(const[e,a]of Object.entries(i))if(a.isList)C.push(()=>{const n=YB[a.countType](g,I,this.littleEndian);I+=fg[a.countType],I+=n*fg[a.type]});else{if(o)if(e==="f_dc_0"||e==="f_dc_1"||e==="f_dc_2"){const n=Number.parseInt(e.slice(5));C.push(()=>{const r=(A[s+n]/255-.5)/UB;WQ[a.type](g,I,this.littleEndian,r)})}else e==="opacity"&&C.push(()=>{const n=Math.max(-100,Math.min(100,-Math.log(1/(A[s+3]/255)-1)));WQ[a.type](g,I,this.littleEndian,n)});C.push(()=>{I+=fg[a.type]})}for(let e=0;e<Q;e++){for(const a of C)a();o&&(s+=4)}}}};Ng.defaultPointScale=.001;let Og=Ng;const UB=.28209479177387814,YB={char:(E,A,I)=>E.getInt8(A),uchar:(E,A,I)=>E.getUint8(A),short:(E,A,I)=>E.getInt16(A,I),ushort:(E,A,I)=>E.getUint16(A,I),int:(E,A,I)=>E.getInt32(A,I),uint:(E,A,I)=>E.getUint32(A,I),float:(E,A,I)=>E.getFloat32(A,I),double:(E,A,I)=>E.getFloat64(A,I)},WQ={char:(E,A,I,g)=>{E.setInt8(A,g)},uchar:(E,A,I,g)=>{E.setUint8(A,g)},short:(E,A,I,g)=>{E.setInt16(A,g,I)},ushort:(E,A,I,g)=>{E.setUint16(A,g,I)},int:(E,A,I,g)=>{E.setInt32(A,g,I)},uint:(E,A,I,g)=>{E.setUint32(A,g,I)},float:(E,A,I,g)=>{E.setFloat32(A,g,I)},double:(E,A,I,g)=>{E.setFloat64(A,g,I)}},fg={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},JB={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},CE={0:0,9:1,24:2,45:3},EE={0:0,1:9,2:24,3:45};function vQ(E){let A=0;for(;E[`f_rest_${A}`];)A+=1;const I=CE[A];if(I==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return I}const vA={type:"Gsplat"},Nt={type:"PackedSplats"},sE=(E,A)=>new aE({packedSplats:E,index:A}),eE=(E,A,I,g)=>new nE({packedSplats:E,index:A,base:I,count:g}),LB=E=>new rE({gsplat:E}),pt=({gsplat:E,flags:A,index:I,center:g,scales:B,quaternion:t,rgba:Q,rgb:i,opacity:C,x:s,y:o,z:e,r:a,g:n,b:r})=>new hE({gsplat:E,flags:A,index:I,center:g,scales:B,quaternion:t,rgba:Q,rgb:i,opacity:C,x:s,y:o,z:e,r:a,g:n,b:r}),oE=(E,{scale:A,rotate:I,translate:g,recolor:B})=>new cE({gsplat:E,scale:A,rotate:I,translate:g,recolor:B}),NI=aI(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`),Mt=aI(`\n struct PackedSplats {\n usampler2DArray texture;\n int numSplats;\n };\n`),OQ=aI(`\n bool readPackedSplat(usampler2DArray texture, int numSplats, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packed = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplat(packed, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n return true;\n } else {\n return false;\n }\n }\n`);class aE extends bA{constructor({packedSplats:A,index:I}){super({inTypes:{packedSplats:Nt,index:"int"},outTypes:{gsplat:vA},inputs:{packedSplats:A,index:I},globals:()=>[NI,Mt,OQ],statements:({inputs:g,outputs:B})=>{const{gsplat:t}=B;if(!t)return[];const{packedSplats:Q,index:i}=g;let C;return Q&&i?C=SI(`\n if (readPackedSplat(${Q}.texture, ${Q}.numSplats, ${i}, ${t})) {\n bool zeroSize = all(equal(${t}.scales, vec3(0.0, 0.0, 0.0)));\n ${t}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n } else {\n ${t}.flags = 0u;\n }\n `):C=[`${t}.flags = 0u;`],C.push(`${t}.index = ${i??"0"};`),C}})}dynoOut(){return new jA(this,"gsplat")}}class nE extends bA{constructor({packedSplats:A,index:I,base:g,count:B}){super({inTypes:{packedSplats:Nt,index:"int",base:"int",count:"int"},outTypes:{gsplat:vA},inputs:{packedSplats:A,index:I,base:g,count:B},globals:()=>[NI,Mt,OQ],statements:({inputs:t,outputs:Q})=>{const{gsplat:i}=Q;if(!i)return[];const{packedSplats:C,index:s,base:o,count:e}=t;let a;return C&&s&&o&&e?a=SI(`\n ${i}.flags = 0u;\n if ((${s} >= ${o}) && (${s} < (${o} + ${e}))) {\n if (readPackedSplat(${C}.texture, ${C}.numSplats, ${s}, ${i})) {\n bool zeroSize = all(equal(${i}.scales, vec3(0.0, 0.0, 0.0)));\n ${i}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n }\n `):a=[`${i}.flags = 0u;`],a.push(`${i}.index = ${s??"0"};`),a}})}dynoOut(){return new jA(this,"gsplat")}}class rE extends bA{constructor({gsplat:A}){super({inTypes:{gsplat:vA},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[NI],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{flags:t,active:Q,index:i,center:C,scales:s,quaternion:o,rgba:e,rgb:a,opacity:n,x:r,y:D,z:l,r:y,g:w,b:u}=g;return[t?`${t} = ${B?`${B}.flags`:"0u"};`:null,Q?`${Q} = isGsplatActive(${B?`${B}.flags`:"0u"});`:null,i?`${i} = ${B?`${B}.index`:"0"};`:null,C?`${C} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,s?`${s} = ${B?`${B}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,o?`${o} = ${B?`${B}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,e?`${e} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,a?`${a} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,n?`${n} = ${B?`${B}.rgba.a`:"0.0"};`:null,r?`${r} = ${B?`${B}.center.x`:"0.0"};`:null,D?`${D} = ${B?`${B}.center.y`:"0.0"};`:null,l?`${l} = ${B?`${B}.center.z`:"0.0"};`:null,y?`${y} = ${B?`${B}.rgba.r`:"0.0"};`:null,w?`${w} = ${B?`${B}.rgba.g`:"0.0"};`:null,u?`${u} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class hE extends bA{constructor({gsplat:A,flags:I,index:g,center:B,scales:t,quaternion:Q,rgba:i,rgb:C,opacity:s,x:o,y:e,z:a,r:n,g:r,b:D}){super({inTypes:{gsplat:vA,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:vA},inputs:{gsplat:A,flags:I,index:g,center:B,scales:t,quaternion:Q,rgba:i,rgb:C,opacity:s,x:o,y:e,z:a,r:n,g:r,b:D},globals:()=>[NI],statements:({inputs:l,outputs:y})=>{const{gsplat:w}=y;if(!w)return[];const{gsplat:u,flags:G,index:M,center:x,scales:k,quaternion:S,rgba:N,rgb:H,opacity:U,x:m,y:J,z:K,r:z,g:T,b:W}=l;return[`${w}.flags = ${G??(u?`${u}.flags`:"0u")};`,`${w}.index = ${M??(u?`${u}.index`:"0")};`,`${w}.center = ${x??(u?`${u}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${w}.scales = ${k??(u?`${u}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${w}.quaternion = ${S??(u?`${u}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${w}.rgba = ${N??(u?`${u}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,H?`${w}.rgba.rgb = ${H};`:null,U?`${w}.rgba.a = ${U};`:null,m?`${w}.center.x = ${m};`:null,J?`${w}.center.y = ${J};`:null,K?`${w}.center.z = ${K};`:null,z?`${w}.rgba.r = ${z};`:null,T?`${w}.rgba.g = ${T};`:null,W?`${w}.rgba.b = ${W};`:null].filter(Boolean)}})}dynoOut(){return new jA(this,"gsplat")}}aI(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);class cE extends bA{constructor({gsplat:A,scale:I,rotate:g,translate:B,recolor:t}){super({inTypes:{gsplat:vA,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:vA},inputs:{gsplat:A,scale:I,rotate:g,translate:B,recolor:t},globals:()=>[NI],statements:({inputs:Q,outputs:i,compile:C})=>{const{gsplat:s}=i;if(!s||!Q.gsplat)return[];const{scale:o,rotate:e,translate:a,recolor:n}=Q,r=C.indent;return[`${s} = ${Q.gsplat};`,`if (isGsplatActive(${s}.flags)) {`,o?`${r}${s}.center *= ${o};`:null,e?`${r}${s}.center = quatVec(${e}, ${s}.center);`:null,a?`${r}${s}.center += ${a};`:null,o?`${r}${s}.scales *= ${o};`:null,e?`${r}${s}.quaternion = quatQuat(${e}, ${s}.quaternion);`:null,n?`${r}${s}.rgba *= ${n};`:null,"}"].filter(Boolean)}})}dynoOut(){return new jA(this,"gsplat")}}const DE=E=>new lE({gsplat:E});class lE extends bA{constructor({gsplat:A}){super({inTypes:{gsplat:vA},inputs:{gsplat:A},globals:()=>[NI],statements:({inputs:I,outputs:g})=>{const{output:B}=g;if(!B)return[];const{gsplat:t}=I;return t?SI(`\n if (isGsplatActive(${t}.flags)) {\n ${B} = packSplat(${t}.center, ${t}.scales, ${t}.quaternion, ${t}.rgba);\n } else {\n ${B} = uvec4(0u, 0u, 0u, 0u);\n }\n `):[`${B} = uvec4(0u, 0u, 0u, 0u);`]}})}dynoOut(){return new jA(this,"output")}}class yE extends bA{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:I,outputs:g})=>[`target = ${I.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new jA(this,"rgba8")}}class pI extends bA{constructor({key:A,type:I,count:g,value:B,update:t,globals:Q}){A=A??"value",super({outTypes:{[A]:I},update:()=>{if(t){const i=t(this.value);i!==void 0&&(this.value=i)}this.uniform.value=this.value},generate:({inputs:i,outputs:C})=>{const s=(Q==null?void 0:Q({inputs:i,outputs:C}))??[],o={},e=C[A];return e&&(s.push(`uniform ${YQ(e,I,g)};`),o[e]=this.uniform),{globals:s,uniforms:o}}}),this.type=I,this.count=g,this.value=B,this.uniform={value:B},this.outKey=A}dynoOut(){return new jA(this,this.outKey)}}class kt extends pI{constructor({key:A,value:I,update:g}){super({key:A,type:"int",value:I,update:g})}}class HB extends pI{constructor({key:A,value:I,update:g}){super({key:A,type:"float",value:I,update:g})}}class dE extends pI{constructor({key:A,value:I,update:g}){super({key:A,type:"vec3",value:I,update:g})}}class VQ extends pI{constructor({key:A,value:I,update:g}){super({key:A,type:"vec4",value:I,update:g})}}class Rt extends pI{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2DArray",value:I,update:g})}}class XQ{constructor({graph:A,inputs:I,outputs:g,template:B}){this.graph=A,this.template=B,this.inputs=I??{},this.outputs=g??{};const t=new HC({indent:this.template.indent});for(const i in this.outputs)this.outputs[i]&&t.declares.add(this.outputs[i]);const Q=A.compile({inputs:this.inputs,outputs:this.outputs,compile:t});this.shader=B.generate({globals:t.globals,statements:Q}),this.uniforms=t.uniforms,this.updaters=t.updaters}prepareMaterial(){return wE(this)}update(){for(const A of this.updaters)A()}}class PQ{constructor(A){const I=A.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m),g=A.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);if(!I||!g)throw new Error("Template must contain {{ GLOBALS }} and {{ STATEMENTS }}");this.before=A.substring(0,I.index),this.between=A.substring(I.index+I[0].length,g.index),this.after=A.substring(g.index+g[0].length),this.indent=g[1]}generate({globals:A,statements:I}){return this.before+Array.from(A).join(`\n\n`)+this.between+I.map(g=>this.indent+g).join(`\n`)+this.after}}const jQ=new Map;function wE(E){let A=jQ.get(E);return A||(A=new yt({glslVersion:ji,vertexShader:XC,fragmentShader:E.shader,uniforms:E.uniforms}),jQ.set(E,A),A)}function _Q(E,A,I="add"){const g=()=>{throw new Error(`Invalid ${I} types: ${E}, ${A}`)};if(E===A)return E;if(E==="int"){if(Dg(A))return A;g()}if(A==="int"){if(Dg(E))return E;g()}if(E==="uint"){if(lg(A))return A;g()}if(A==="uint"){if(lg(E))return E;g()}if(E==="float"){if(GB(A))return A;g()}if(A==="float"){if(GB(E))return E;g()}throw new Error(`Invalid ${I} types: ${E}, ${A}`)}function uE(E,A){return _Q(E,A,"sub")}function fE(E,A){const I=()=>{throw new Error(`Invalid mul types: ${E}, ${A}`)},g=B=>B;if(E==="int"){if(Dg(A))return g(A);I()}if(A==="int"){if(Dg(E))return g(E);I()}if(E==="uint"){if(lg(A))return g(A);I()}if(A==="uint"){if(lg(E))return g(E);I()}if(E==="float"){if(GB(A))return g(A);I()}if(A==="float"){if(GB(E))return g(E);I()}if(Dg(E)||lg(E)||Dg(A)||lg(A)){if(E===A)return g(E);I()}if(E==="vec2"){if(A==="vec2"||yg(A))return g("vec2");if(A==="mat3x2")return g("vec3");if(A==="mat4x2")return g("vec4");I()}if(E==="vec3"){if(A==="mat2x3")return g("vec2");if(A==="vec3"||dg(A))return g("vec3");if(A==="mat4x3")return g("vec4");I()}if(E==="vec4"){if(A==="mat2x4")return g("vec2");if(A==="mat3x4")return g("vec3");if(A==="vec4"||wg(A))return g("vec4");I()}if(A==="vec2"){if(yg(E))return g("vec2");if(E==="mat2x3")return g("vec3");if(E==="mat2x4")return g("vec4");I()}if(A==="vec3"){if(E==="mat3x2")return g("vec2");if(dg(E))return g("vec3");if(E==="mat3x4")return g("vec4");I()}if(A==="vec4"){if(E==="mat4x2")return g("vec2");if(E==="mat4x3")return g("vec3");if(wg(E))return g("vec4");I()}if(yg(E)){if(yg(A))return g("mat2");if(A==="mat3x2")return g("mat3x2");if(A==="mat4x2")return g("mat4x2");I()}if(E==="mat2x3"){if(yg(A))return g("mat2x3");if(A==="mat3x2")return g("mat3");if(A==="mat4x2")return g("mat4x3");I()}if(E==="mat2x4"){if(yg(A))return g("mat2x4");if(A==="mat3x2")return g("mat3x4");if(A==="mat4x2")return g("mat4");I()}if(E==="mat3x2"){if(A==="mat2x3")return g("mat2");if(dg(A))return g("mat3x2");if(A==="mat4x3")return g("mat4x2");I()}if(dg(E)){if(A==="mat2x3")return g("mat2x3");if(dg(A))return g("mat3");if(A==="mat4x3")return g("mat4x3");I()}if(E==="mat3x4"){if(A==="mat2x3")return g("mat2x4");if(dg(A))return g("mat3x4");if(A==="mat4x3")return g("mat4");I()}if(E==="mat4x2"){if(A==="mat2x4")return g("mat2");if(A==="mat3x4")return g("mat3x2");if(wg(A))return g("mat4x2");I()}if(E==="mat4x3"){if(A==="mat2x4")return g("mat2x3");if(A==="mat3x4")return g("mat3");if(wg(A))return g("mat4x3");I()}if(wg(E)){if(A==="mat2x4")return g("mat2x4");if(A==="mat3x4")return g("mat3x4");if(wg(A))return g("mat4");I()}throw new Error(`Invalid mul types: ${E}, ${A}`)}const bB=(E,A)=>new SE({a:E,b:A}),GE=(E,A)=>new NE({a:E,b:A}),FE=(E,A)=>new pE({a:E,b:A});class SE extends NB{constructor({a:A,b:I}){super({a:A,b:I,outKey:"sum",outTypeFunc:_Q}),this.statements=({inputs:g,outputs:B})=>[`${B.sum} = ${g.a} + ${g.b};`]}}class NE extends NB{constructor({a:A,b:I}){super({a:A,b:I,outKey:"difference",outTypeFunc:uE}),this.statements=({inputs:g,outputs:B})=>[`${B.difference} = ${g.a} - ${g.b};`]}}class pE extends NB{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:fE}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = ${g.a} * ${g.b};`]}}const ME=E=>new RE({a:E}),kE=(E,A)=>new xE({a:E,b:A});class RE extends KC{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"normalize"}),this.statements=({inputs:I,outputs:g})=>[`${g.normalize} = normalize(${I.a});`]}}function mE(E){if(E==="float")return"vec2";if(E==="vec2")return"vec3";if(E==="vec3")return"vec4";throw new Error("Invalid type")}class xE extends NB{constructor({a:A,b:I}){const g=jI(A),B=mE(g);super({a:A,b:I,outKey:"extend",outTypeFunc:()=>B}),this.statements=({inputs:t,outputs:Q})=>[`${Q.extend} = ${B}(${t.a}, ${t.b});`]}}const UE=(E,{scale:A,scales:I,rotate:g,translate:B})=>new JE({position:E,scale:A,scales:I,rotate:g,translate:B}).outputs.position,YE=(E,{scale:A,scales:I,rotate:g})=>new LE({dir:E,scale:A,scales:I,rotate:g}).outputs.dir;class JE extends bA{constructor({position:A,scale:I,scales:g,rotate:B,translate:t}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:I,scales:g,rotate:B,translate:t},statements:({inputs:Q,outputs:i})=>{const{position:C}=i;if(!C)return[];const{scale:s,scales:o,rotate:e,translate:a}=Q;return[`${C} = ${Q.position??"vec3(0.0, 0.0, 0.0)"};`,s?`${C} *= ${s};`:null,o?`${C} *= ${o};`:null,e?`${C} = quatVec(${e}, ${C});`:null,a?`${C} += ${a};`:null].filter(Boolean)}})}}class LE extends bA{constructor({dir:A,scale:I,scales:g,rotate:B}){super({inTypes:{dir:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{dir:"vec3"},inputs:{dir:A,scale:I,scales:g,rotate:B},statements:({inputs:t,outputs:Q})=>{const{dir:i}=Q;if(!i)return[];const{scale:C,scales:s,rotate:o}=t;return[`${i} = ${t.dir??"vec3(0.0, 0.0, 0.0)"};`,C?`${i} *= ${C};`:null,s?`${i} *= ${s};`:null,o?`${i} = quatVec(${o}, ${i});`:null].filter(Boolean)}})}}var HE=`precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include <splatDefines>\n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n}`;const iA=class iA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new $Q({packedSplats:this}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,A.url||A.fileBytes||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){A.packedArray?(this.packedArray=A.packedArray,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/tA)*tA,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0),this.extra=A.extra??{}}async asyncInitialize(A){const{url:I,fileBytes:g,construct:B}=A;if(I){const t=new Bs;t.packedSplats=this,await t.loadAsync(I)}else if(g){const t=await oi({input:g,fileType:A.fileType,pathOrUrl:A.fileName??I});this.initialize(t)}if(B){const t=B(this);t instanceof Promise&&await t}}dispose(){this.target&&(this.target.dispose(),this.target=null),this.source&&(this.source.dispose(),this.source=null)}ensureSplats(A){const I=A<=this.maxSplats?this.maxSplats:Math.max(A,2*this.maxSplats),g=this.packedArray?this.packedArray.length/4:0;if(!this.packedArray||I>g){this.maxSplats=_A(I).maxSplats;const B=new Uint32Array(this.maxSplats*4);this.packedArray&&B.set(this.packedArray),this.packedArray=B}return this.packedArray}ensureSplatsSh(A,I){let g,B;if(A===0)return this.ensureSplats(I);if(A===1)g=2,B="sh1";else if(A===2)g=4,B="sh2";else if(A===3)g=4,B="sh3";else throw new Error(`Invalid level: ${A}`);let t=this.extra[B]?this.extra[B].length/g:0;const Q=I<=t?t:Math.max(I,2*t);if(!this.extra[B]||Q>t){t=_A(Q).maxSplats;const i=new Uint32Array(t*g);this.extra[B]&&i.set(this.extra[B]),this.extra[B]=i}return this.extra[B]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return qQ(this.packedArray,A)}setSplat(A,I,g,B,t,Q){const i=this.ensureSplats(A+1);Wg(i,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,t,Q.r,Q.g,Q.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,t){const Q=this.ensureSplats(this.numSplats+1);Wg(Q,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,t.r,t.g,t.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let I=0;I<this.numSplats;++I){const g=qQ(this.packedArray,I);A(I,g.center,g.scales,g.quaternion,g.opacity,g.color)}}ensureGenerate(A){if(this.target&&(A??1)<=this.maxSplats)return!1;this.dispose();const I=_A(A??1),{width:g,height:B,depth:t}=I;return this.maxSplats=I.maxSplats,this.target=new nQ(g,B,t,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:mI,minFilter:mI}),this.target.texture.format=gg,this.target.texture.type=WI,this.target.texture.internalFormat="RGBA32UI",this.target.scissorTest=!0,!0}generateMapping(A){let I=0;const g=A.map(B=>{const t=I,Q=Math.ceil(B/tA)*tA;return I+=Q,{base:t,count:B}});return{maxSplats:I,mapping:g}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():iA.getEmpty()}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.maxSplats!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:I,depth:g}=_A(this.maxSplats);this.source=new xI(this.packedArray,A,I,g),this.source.format=gg,this.source.type=WI,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}static getEmpty(){if(!iA.emptySource){const{width:A,height:I,depth:g,maxSplats:B}=_A(1),t=new Uint32Array(B*4);iA.emptySource=new xI(t,A,I,g),iA.emptySource.format=gg,iA.emptySource.type=WI,iA.emptySource.internalFormat="RGBA32UI",iA.emptySource.needsUpdate=!0}return iA.emptySource}prepareProgramMaterial(A){let I=iA.generatorProgram.get(A);if(!I){const B=SB({index:"int"},{output:"uvec4"},({index:t})=>{A.inputs.index=t;const Q=A.outputs.gsplat;return{output:DE(Q)}});iA.programTemplate||(iA.programTemplate=new PQ(HE)),I=new XQ({graph:B,inputs:{index:"index"},outputs:{output:"target"},template:iA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),iA.generatorProgram.set(A,I)}const g=I.prepareMaterial();return iA.mesh.material=g,{program:I,material:g}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(null),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}generate({generator:A,base:I,count:g,renderer:B}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(I+g>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:t,material:Q}=this.prepareProgramMaterial(A);t.update();const i=this.saveRenderState(B),C=Math.ceil((I+g)/tA)*tA,s=tA*bI;for(Q.uniforms.targetBase.value=I,Q.uniforms.targetCount.value=g;I<C;){const o=Math.floor(I/s);Q.uniforms.targetLayer.value=o;const e=o*s,a=Math.floor((I-e)/tA),n=Math.min(bI,Math.ceil((C-e)/tA));this.target.scissor.set(0,a,tA,n-a),B.setRenderTarget(this.target,o),B.xr.enabled=!1,B.autoClear=!1,B.render(iA.scene,iA.camera),I+=tA*(n-a)}return this.resetRenderState(B,i),{nextBase:C}}};iA.emptySource=null,iA.programTemplate=null,iA.generatorProgram=new Map,iA.geometry=new fB(2,2),iA.mesh=new MQ(iA.geometry,new yt({visible:!1})),iA.scene=new RQ().add(iA.mesh),iA.camera=new kQ;let Gg=iA;class $Q extends pI{constructor({packedSplats:A}={}){super({key:"packedSplats",type:Nt,globals:()=>[Mt],value:{texture:Gg.getEmpty(),numSplats:0},update:I=>{var g,B;return I.texture=((g=this.packedSplats)==null?void 0:g.getTexture())??Gg.getEmpty(),I.numSplats=((B=this.packedSplats)==null?void 0:B.numSplats)??0,I}}),this.packedSplats=A}}var bE=`precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include <splatDefines>\n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}`;const GA=class GA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}ensureBuffer(A,I){const B=Math.ceil(Math.max(1,A)/tA)*tA*4;if(I.byteLength>=B)return I;const t=new ArrayBuffer(B);if(I instanceof ArrayBuffer)return t;const Q=I.constructor;return new Q(t)}ensureCapacity(A){const{width:I,height:g,depth:B,maxSplats:t}=_A(A);(!this.target||t>this.capacity)&&(this.dispose(),this.capacity=t,this.target=new nQ(I,g,B,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:mI,minFilter:mI}),this.target.texture.format=tB,this.target.texture.type=BB,this.target.texture.internalFormat="RGBA8",this.target.scissorTest=!0)}prepareProgramMaterial(A){let I=GA.readbackProgram.get(A);if(!I){const B=SB({index:"int"},{rgba8:"vec4"},({index:t})=>(A.inputs.index=t,{rgba8:new yE({rgba8:A.outputs.rgba8})}));GA.programTemplate||(GA.programTemplate=new PQ(bE)),I=new XQ({graph:B,inputs:{index:"index"},outputs:{rgba8:"target"},template:GA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),GA.readbackProgram.set(A,I)}const g=I.prepareMaterial();return GA.mesh.material=g,{program:I,material:g}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(null),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}process({count:A,material:I}){const g=this.renderer;if(!g)throw new Error("No renderer");if(!this.target)throw new Error("No target");const B=tA*bI;I.uniforms.targetBase.value=0,I.uniforms.targetCount.value=A;let t=0;for(;t<A;){const Q=Math.floor(t/B),i=Q*B,C=Math.min(bI,Math.ceil((A-i)/tA));I.uniforms.targetLayer.value=Q,this.target.scissor.set(0,0,tA,C),g.setRenderTarget(this.target,Q),g.xr.enabled=!1,g.autoClear=!1,g.render(GA.scene,GA.camera),t+=tA*C}this.count=A}async read({readback:A}){const I=this.renderer;if(!I)throw new Error("No renderer");if(!this.target)throw new Error("No target");const g=Math.ceil(this.count/tA)*tA;if(A.byteLength<g*4)throw new Error(`Readback buffer too small: ${A.byteLength} < ${g*4}`);const B=new Uint8Array(A instanceof ArrayBuffer?A:A.buffer),t=tA*bI;let Q=0;const i=[];for(;Q<this.count;){const C=Math.floor(Q/t),s=C*t,o=Math.min(bI,Math.ceil((this.count-s)/tA));I.setRenderTarget(this.target,C);const e=tA*o*4,a=B.subarray(s*4,s*4+e),n=I==null?void 0:I.readRenderTargetPixelsAsync(this.target,0,0,tA,o,a);i.push(n),Q+=tA*o}return Promise.all(i).then(()=>A)}render({reader:A,count:I,renderer:g}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:B,material:t}=this.prepareProgramMaterial(A);B.update();const Q=this.saveRenderState(this.renderer);this.process({count:I,material:t}),this.resetRenderState(this.renderer,Q)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const I=this.saveRenderState(this.renderer),g=this.read({readback:A});return this.resetRenderState(this.renderer,I),g}async renderReadback({reader:A,count:I,renderer:g,readback:B}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:t,material:Q}=this.prepareProgramMaterial(A);t.update();const i=this.saveRenderState(this.renderer);this.process({count:I,material:Q});const C=this.read({readback:B});return this.resetRenderState(this.renderer,i),C}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};GA.programTemplate=null,GA.readbackProgram=new Map,GA.geometry=new fB(2,2),GA.mesh=new MQ(GA.geometry,new yt({visible:!1})),GA.scene=new RQ().add(GA.mesh),GA.camera=new kQ;let mt=GA;const FA=class FA{constructor(A={}){this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new pI({key:"rgbaArray",type:Ii,globals:()=>[gi],value:{texture:FA.getEmpty(),count:0},update:I=>{var g;return I.texture=((g=this.readback)==null?void 0:g.getTexture())??this.source??FA.getEmpty(),I.count=this.count,I}}),A.array?(this.array=A.array,this.capacity=Math.floor(this.array.length/4),this.capacity=Math.floor(this.capacity/tA)*tA,this.count=Math.min(this.capacity,A.count??Number.POSITIVE_INFINITY)):(this.capacity=A.capacity??0,this.count=0)}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var I;if(!this.array||A>(((I=this.array)==null?void 0:I.length)??0)/4){this.capacity=_A(A).maxSplats;const g=new Uint8Array(this.capacity*4);this.array&&g.set(this.array),this.array=g}return this.array}getTexture(){var I;let A=(I=this.readback)==null?void 0:I.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??FA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.capacity!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:I,depth:g}=_A(this.capacity);this.source=new xI(this.array,A,I,g),this.source.format=tB,this.source.type=BB,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:I,renderer:g}){this.readback||(this.readback=new mt({renderer:g})),this.readback.render({reader:A,count:I,renderer:g}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:I,count:g,renderer:B}){const{dynoSplats:t,dynoBase:Q,dynoCount:i,reader:C}=FA.makeDynos();return t.packedSplats=A,Q.value=I,i.value=g,this.render({reader:C,count:g,renderer:B}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length<this.count*4)&&(this.array=new Uint8Array(this.capacity*4)),(await this.readback.readback({readback:this.array})).subarray(0,this.count*4)}static getEmpty(){if(!FA.emptySource){const A=new Uint8Array(4);FA.emptySource=new xI(A,1,1,1),FA.emptySource.format=tB,FA.emptySource.type=BB,FA.emptySource.internalFormat="RGBA8",FA.emptySource.needsUpdate=!0}return FA.emptySource}static makeDynos(){if(!FA.dynos){const A=new $Q,I=new kt({value:0}),g=new kt({value:0}),B=SB({index:"int"},{rgba8:"vec4"},({index:t})=>{if(!t)throw new Error("index is undefined");t=bB(t,I);const Q=eE(A,t,I,g);return{rgba8:LB(Q).outputs.rgba}});FA.dynos={dynoSplats:A,dynoBase:I,dynoCount:g,reader:B}}return FA.dynos}};FA.emptySource=null,FA.dynos=null;let Ai=FA;const Ii={type:"RgbaArray"},gi=aI(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);function KE(E,A){return new bA({inTypes:{rgba:Ii,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:E,index:A},globals:()=>[gi],statements:({inputs:g,outputs:B})=>SI(`\n if ((index >= 0) && (index < ${g.rgba}.count)) {\n ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(index), 0);\n } else {\n ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `)}).outputs.rgba}function qE(E){switch(E){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${E}`)}}function TE(E){switch(E){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${E}`)}}class ZE extends WA{constructor(A={}){super();const{type:I,invert:g,opacity:B,color:t,displace:Q,radius:i}=A;this.type=I??"sphere",this.invert=g??!1,this.opacity=B??1,this.color=t??new XI(1,1,1),this.displace=Q??new f(0,0,0),this.radius=i??0}}const TB=class TB extends WA{constructor(A={}){const{name:I,rgbaBlendMode:g="multiply",sdfSmooth:B=0,softEdge:t=0,invert:Q=!1,sdfs:i=null}=A;super(),this.rgbaBlendMode=g,this.sdfSmooth=B,this.softEdge=t,this.invert=Q,this.sdfs=i,this.ordering=TB.nextOrdering++,this.name=I??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.includes(A)||this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(I=>I!==A))}};TB.nextOrdering=1;let xt=TB;class zE{constructor({maxSdfs:A,maxEdits:I}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new pI({key:"sdfArray",type:Bi,globals:()=>[ti],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:g=>(g.numSdfs=this.numSdfs,g.sdfTexture=this.sdfTexture,g)}),this.maxEdits=Math.max(16,I??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new kt({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,I){const g=new SC(A,8,I,gg,WI);return g.internalFormat="RGBA32UI",g.needsUpdate=!0,g}newEdits(A,I){return new pI({key:"edits",type:"uvec4",count:I,globals:()=>[Qi],value:A})}ensureCapacity({maxSdfs:A,maxEdits:I}){let g=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),I>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,I),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),g=!0),g}updateEditData(A,I){const g=this.editData[A]!==I;return this.editData[A]=I,g}updateEditFloatData(A,I){Fg[0]=I;const g=this.editFloatData[A]!==Fg[0];return g&&(this.editFloatData[A]=Fg[0]),g}encodeEdit(A,{sdfFirst:I,sdfCount:g,invert:B,rgbaBlendMode:t,softEdge:Q,sdfSmooth:i}){const C=A*4;let s=!1;return s=this.updateEditData(C+0,t|(B?256:0))||s,s=this.updateEditData(C+1,I|g<<16)||s,s=this.updateEditFloatData(C+2,Q)||s,s=this.updateEditFloatData(C+3,i)||s,s}updateSdfData(A,I){const g=this.sdfData[A]!==I;return this.sdfData[A]=I,g}updateSdfFloatData(A,I){Fg[0]=I;const g=this.sdfFloatData[A]!==Fg[0];return g&&(this.sdfFloatData[A]=Fg[0]),g}encodeSdf(A,{sdfType:I,invert:g,center:B,quaternion:t,scale:Q,sizes:i},C){const s=A*32,o=I|(g?256:0);let e=!1;e=this.updateSdfFloatData(s+0,(B==null?void 0:B.x)??0)||e,e=this.updateSdfFloatData(s+1,(B==null?void 0:B.y)??0)||e,e=this.updateSdfFloatData(s+2,(B==null?void 0:B.z)??0)||e,e=this.updateSdfData(s+3,o)||e,e=this.updateSdfFloatData(s+4,(t==null?void 0:t.x)??0)||e,e=this.updateSdfFloatData(s+5,(t==null?void 0:t.y)??0)||e,e=this.updateSdfFloatData(s+6,(t==null?void 0:t.z)??0)||e,e=this.updateSdfFloatData(s+7,(t==null?void 0:t.w)??0)||e,e=this.updateSdfFloatData(s+8,(Q==null?void 0:Q.x)??0)||e,e=this.updateSdfFloatData(s+9,(Q==null?void 0:Q.y)??0)||e,e=this.updateSdfFloatData(s+10,(Q==null?void 0:Q.z)??0)||e,e=this.updateSdfData(s+11,0)||e,e=this.updateSdfFloatData(s+12,(i==null?void 0:i.x)??0)||e,e=this.updateSdfFloatData(s+13,(i==null?void 0:i.y)??0)||e,e=this.updateSdfFloatData(s+14,(i==null?void 0:i.z)??0)||e,e=this.updateSdfFloatData(s+15,(i==null?void 0:i.w)??0)||e;const a=Math.min(4,C.length);for(let n=0;n<a;++n){const r=s+16+n*4;e=this.updateSdfFloatData(r+0,C[n].x)||e,e=this.updateSdfFloatData(r+1,C[n].y)||e,e=this.updateSdfFloatData(r+2,C[n].z)||e,e=this.updateSdfFloatData(r+3,C[n].w)||e}return e}update(A){const I=A.reduce((e,{sdfs:a})=>e+a.length,0),g=this.ensureCapacity({maxEdits:A.length,maxSdfs:I}),B=[new qA,new qA],t=new f,Q=new uA,i=new f,C=new qA;let s=0,o=g;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,o=!0);for(const[e,{edit:a,sdfs:n}]of A.entries()){o=this.encodeEdit(e,{sdfFirst:s,sdfCount:n.length,invert:a.invert,rgbaBlendMode:TE(a.rgbaBlendMode),softEdge:a.softEdge,sdfSmooth:a.sdfSmooth})||o;let r=!1;for(const D of n)C.set(D.scale.x,D.scale.y,D.scale.z,D.radius),D.scale.setScalar(1),D.updateMatrixWorld(),D.matrixWorld.clone().invert().decompose(t,Q,i),D.scale.set(C.x,C.y,C.z),D.updateMatrixWorld(),B[0].set(D.color.r,D.color.g,D.color.b,D.opacity),B[1].set(D.displace.x,D.displace.y,D.displace.z,1),r=this.encodeSdf(s,{sdfType:qE(D.type),invert:D.invert,center:t,quaternion:Q,scale:i,sizes:C},B)||r,s+=1;this.numSdfs=s,r&&(this.sdfTexture.needsUpdate=!0),o||(o=r)}return{updated:o,dynoUpdated:g}}modify(A){return WE(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const Bi={type:"SdfArray"},ti=aI(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`),Qi=aI(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);function WE(E,A,I,g){return new bA({inTypes:{gsplat:vA,sdfArray:Bi,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:vA},globals:()=>[ti,Qi],inputs:{gsplat:E,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:t,outputs:Q})=>{const{sdfArray:i,numEdits:C,rgbaDisplaceEdits:s}=t,{gsplat:o}=Q;return SI(`\n ${o} = ${t.gsplat};\n if (isGsplatActive(${o}.flags)) {\n for (int editIndex = 0; editIndex < ${C}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${s}[editIndex], ${i}.sdfTexture, ${i}.numSdfs,\n ${o}.center, ${o}.rgba\n );\n }\n }\n `)}}).outputs.gsplat}const Fg=new Float32Array(1);class KB{constructor(){this.scale=new HB({value:Number.NEGATIVE_INFINITY}),this.rotate=new VQ({value:new uA(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new dE({value:new f(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}apply(A){return UE(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}applyDir(A){return YE(A,{rotate:this.rotate})}applyGsplat(A){return oE(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const I=new f,g=new uA,B=new f;A.decompose(B,g,I);const t=(I.x+I.y+I.z)/3;let Q=!1;return t!==this.scale.value&&(this.scale.value=t,Q=!0),B.equals(this.translate.value)||(this.translate.value.copy(B),Q=!0),g.equals(this.rotate.value)||(this.rotate.value.copy(g),Q=!0),Q}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class vE extends WA{constructor({numSplats:A,generator:I,construct:g,update:B}){if(super(),this.numSplats=A??0,this.generator=I,this.frameUpdate=B,this.version=0,g){const t=g(this);Object.assign(this,t)}}updateVersion(){this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}const qI=class qI extends vE{constructor(A={}){const I=new KB,g=new KB,B=new KB,t=new KB,Q=new VQ({value:new qA(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY)}),i=new HB({value:0}),C=new HB({value:0}),s={transform:I,viewToWorld:g,worldToView:B,viewToObject:t,recolor:Q,time:i,deltaTime:C};if(super({update:({time:o,deltaTime:e,viewToWorld:a,globalEdits:n})=>this.update({time:o,deltaTime:e,viewToWorld:a,globalEdits:n})}),this.isInitialized=!1,this.recolor=new XI(1,1,1),this.opacity=1,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.packedSplats=A.packedSplats??new Gg,this.numSplats=this.packedSplats.numSplats,this.editable=A.editable??!0,this.onFrame=A.onFrame,this.context=s,this.objectModifier=A.objectModifier,this.worldModifier=A.worldModifier,this.updateGenerator(),A.url||A.fileBytes||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const o=A.onLoad(this);o instanceof Promise&&await o}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const o=A.onLoad(this);o instanceof Promise&&(this.initialized=o.then(()=>this))}}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:t,maxSplats:Q,constructSplats:i}=A;if(I||g||i){const C={url:I,fileBytes:g,fileType:B,fileName:t,maxSplats:Q,construct:i};this.packedSplats.reinitialize(C)}this.packedSplats&&(await this.packedSplats.initialized,this.numSplats=this.packedSplats.numSplats,this.updateGenerator())}static async staticInitialize(){await vB(),qI.isStaticInitialized=!0}pushSplat(A,I,g,B,t){this.packedSplats.pushSplat(A,I,g,B,t)}forEachSplat(A){this.packedSplats.forEachSplat(A)}dispose(){this.packedSplats.dispose()}constructGenerator(A){const{transform:I,viewToObject:g,recolor:B}=A,t=SB({index:"int"},{gsplat:vA},({index:Q})=>{if(!Q)throw new Error("index is undefined");let i=sE(this.packedSplats.dyno,Q);if(this.maxSh>=1){const{sh1Texture:s,sh2Texture:o,sh3Texture:e}=this.ensureShTextures();if(s){const a=g.translate,{center:n}=LB(i).outputs,r=ME(GE(n,a));let D=PE(i,s,r);this.maxSh>=2&&o&&(D=bB(D,jE(i,o,r))),this.maxSh>=3&&e&&(D=bB(D,_E(i,e,r)));let{rgba:l}=LB(i).outputs;l=bB(l,kE(D,LC("float",0))),i=pt({gsplat:i,rgba:l})}}if(this.splatRgba){const s=KE(this.splatRgba.dyno,Q);i=pt({gsplat:i,rgba:s})}this.skinning&&(i=this.skinning.modify(i)),this.objectModifier&&(i=this.objectModifier.apply({gsplat:i}).gsplat),i=I.applyGsplat(i);const C=FE(B,LB(i).outputs.rgba);return i=pt({gsplat:i,rgba:C}),this.rgbaDisplaceEdits&&(i=this.rgbaDisplaceEdits.modify(i)),this.worldModifier&&(i=this.worldModifier.apply({gsplat:i}).gsplat),{gsplat:i}});this.generator=t}updateGenerator(){this.constructGenerator(this.context)}update({time:A,viewToWorld:I,deltaTime:g,globalEdits:B}){var l;this.numSplats=this.packedSplats.numSplats,this.context.time.value=A,this.context.deltaTime.value=g,qI.dynoTime.value=A;const{transform:t,viewToObject:Q,recolor:i}=this.context;let C=t.update(this);this.context.viewToWorld.updateFromMatrix(I)&&this.enableViewToWorld&&(C=!0);const s=I.clone().invert();this.context.worldToView.updateFromMatrix(s)&&this.enableWorldToView&&(C=!0);const a=new LA().compose(t.translate.value,t.rotate.value,new f().setScalar(t.scale.value)).invert().multiply(I);Q.updateFromMatrix(a)&&(this.enableViewToObject||this.packedSplats.extra.sh1)&&(C=!0);const n=new qA(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);n.equals(i.value)||(i.value.copy(n),C=!0);const r=this.editable?(this.edits??[]).concat(B):[];this.editable&&!this.edits&&this.traverseVisible(y=>{y instanceof xt&&r.push(y)}),r.sort((y,w)=>y.ordering-w.ordering);const D=r.map(y=>{if(y.sdfs!=null)return{edit:y,sdfs:y.sdfs};const w=[];return y.traverseVisible(u=>{u instanceof ZE&&w.push(u)}),{edit:y,sdfs:w}});if(D.length>0&&!this.rgbaDisplaceEdits){const y=D.length,w=D.reduce((u,G)=>u+G.sdfs.length,0);this.rgbaDisplaceEdits=new zE({maxEdits:y,maxSdfs:w}),this.updateGenerator()}if(this.rgbaDisplaceEdits){const y=this.rgbaDisplaceEdits.update(D);C||(C=y.updated),y.dynoUpdated&&this.updateGenerator()}C&&this.updateVersion(),(l=this.onFrame)==null||l.call(this,{mesh:this,time:A,deltaTime:g})}raycast(A,I){if(!this.packedSplats.packedArray||!this.packedSplats.numSplats)return;const{near:g,far:B,ray:t}=A,Q=this.matrixWorld.clone().invert(),i=new hI().setFromMatrix4(Q),C=t.origin.clone().applyMatrix4(Q),s=t.direction.clone().applyMatrix3(i),o=new f;Q.decompose(new f,new uA,o),(o.x*o.y*o.z)**(1/3);const a=Mi(C.x,C.y,C.z,s.x,s.y,s.z,g,B,this.packedSplats.numSplats,this.packedSplats.packedArray,!0);for(const n of a){const r=t.direction.clone().multiplyScalar(n).add(t.origin);I.push({distance:n,point:r,object:this})}}ensureShTextures(){if(!this.packedSplats.extra.sh1)return{};let A=this.packedSplats.extra.sh1Texture;if(!A){let B=this.packedSplats.extra.sh1;const{width:t,height:Q,depth:i,maxSplats:C}=_A(B.length/2);if(B.length<C*2){const o=new Uint32Array(C*2);o.set(B),this.packedSplats.extra.sh1=o,B=o}const s=new xI(B,t,Q,i);s.format=Pi,s.type=WI,s.internalFormat="RG32UI",s.needsUpdate=!0,A=new Rt({value:s,key:"sh1"}),this.packedSplats.extra.sh1Texture=A}if(!this.packedSplats.extra.sh2)return{sh1Texture:A};let I=this.packedSplats.extra.sh2Texture;if(!I){let B=this.packedSplats.extra.sh2;const{width:t,height:Q,depth:i,maxSplats:C}=_A(B.length/4);if(B.length<C*4){const o=new Uint32Array(C*4);o.set(B),this.packedSplats.extra.sh2=o,B=o}const s=new xI(B,t,Q,i);s.format=gg,s.type=WI,s.internalFormat="RGBA32UI",s.needsUpdate=!0,I=new Rt({value:s,key:"sh2"}),this.packedSplats.extra.sh2Texture=I}if(!this.packedSplats.extra.sh3)return{sh1Texture:A,sh2Texture:I};let g=this.packedSplats.extra.sh3Texture;if(!g){let B=this.packedSplats.extra.sh3;const{width:t,height:Q,depth:i,maxSplats:C}=_A(B.length/4);if(B.length<C*4){const o=new Uint32Array(C*4);o.set(B),this.packedSplats.extra.sh3=o,B=o}const s=new xI(B,t,Q,i);s.format=gg,s.type=WI,s.internalFormat="RGBA32UI",s.needsUpdate=!0,g=new Rt({value:s,key:"sh3"}),this.packedSplats.extra.sh3Texture=g}return{sh1Texture:A,sh2Texture:I,sh3Texture:g}}};qI.staticInitialized=qI.staticInitialize(),qI.isStaticInitialized=!1,qI.dynoTime=new HB({value:0});let Ut=qI;const OE=aI(`\n vec3 evaluateSH1(Gsplat gsplat, usampler2DArray sh1, vec3 viewDir) {\n // Extract sint7 values packed into 2 x uint32\n uvec2 packed = texelFetch(sh1, splatTexCoord(gsplat.index), 0).rg;\n vec3 sh1_0 = vec3(ivec3(\n int(packed.x << 25u) >> 25,\n int(packed.x << 18u) >> 25,\n int(packed.x << 11u) >> 25\n )) / 63.0;\n vec3 sh1_1 = vec3(ivec3(\n int(packed.x << 4u) >> 25,\n int((packed.x >> 3u) | (packed.y << 29u)) >> 25,\n int(packed.y << 22u) >> 25\n )) / 63.0;\n vec3 sh1_2 = vec3(ivec3(\n int(packed.y << 15u) >> 25,\n int(packed.y << 8u) >> 25,\n int(packed.y << 1u) >> 25\n )) / 63.0;\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`),VE=aI(`\n vec3 evaluateSH2(Gsplat gsplat, usampler2DArray sh2, vec3 viewDir) {\n // Extract sint8 values packed into 4 x uint32\n uvec4 packed = texelFetch(sh2, splatTexCoord(gsplat.index), 0);\n vec3 sh2_0 = vec3(ivec3(\n int(packed.x << 24u) >> 24,\n int(packed.x << 16u) >> 24,\n int(packed.x << 8u) >> 24\n )) / 127.0;\n vec3 sh2_1 = vec3(ivec3(\n int(packed.x) >> 24,\n int(packed.y << 24u) >> 24,\n int(packed.y << 16u) >> 24\n )) / 127.0;\n vec3 sh2_2 = vec3(ivec3(\n int(packed.y << 8u) >> 24,\n int(packed.y) >> 24,\n int(packed.z << 24u) >> 24\n )) / 127.0;\n vec3 sh2_3 = vec3(ivec3(\n int(packed.z << 16u) >> 24,\n int(packed.z << 8u) >> 24,\n int(packed.z) >> 24\n )) / 127.0;\n vec3 sh2_4 = vec3(ivec3(\n int(packed.w << 24u) >> 24,\n int(packed.w << 16u) >> 24,\n int(packed.w << 8u) >> 24\n )) / 127.0;\n\n return sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n }\n`),XE=aI(`\n vec3 evaluateSH3(Gsplat gsplat, usampler2DArray sh3, vec3 viewDir) {\n // Extract sint6 values packed into 4 x uint32\n uvec4 packed = texelFetch(sh3, splatTexCoord(gsplat.index), 0);\n vec3 sh3_0 = vec3(ivec3(\n int(packed.x << 26u) >> 26,\n int(packed.x << 20u) >> 26,\n int(packed.x << 14u) >> 26\n )) / 31.0;\n vec3 sh3_1 = vec3(ivec3(\n int(packed.x << 8u) >> 26,\n int(packed.x << 2u) >> 26,\n int((packed.x >> 4u) | (packed.y << 28u)) >> 26\n )) / 31.0;\n vec3 sh3_2 = vec3(ivec3(\n int(packed.y << 22u) >> 26,\n int(packed.y << 16u) >> 26,\n int(packed.y << 10u) >> 26\n )) / 31.0;\n vec3 sh3_3 = vec3(ivec3(\n int(packed.y << 4u) >> 26,\n int((packed.y >> 2u) | (packed.z << 30u)) >> 26,\n int(packed.z << 24u) >> 26\n )) / 31.0;\n vec3 sh3_4 = vec3(ivec3(\n int(packed.z << 18u) >> 26,\n int(packed.z << 12u) >> 26,\n int(packed.z << 6u) >> 26\n )) / 31.0;\n vec3 sh3_5 = vec3(ivec3(\n int(packed.z) >> 26,\n int(packed.w << 26u) >> 26,\n int(packed.w << 20u) >> 26\n )) / 31.0;\n vec3 sh3_6 = vec3(ivec3(\n int(packed.w << 14u) >> 26,\n int(packed.w << 8u) >> 26,\n int(packed.w << 2u) >> 26\n )) / 31.0;\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);function PE(E,A,I){return ft({inTypes:{gsplat:vA,sh1:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:E,sh1:A,viewDir:I},globals:()=>[NI,OE],statements:({inputs:g,outputs:B})=>SI(`\n if (isGsplatActive(${g.gsplat}.flags)) {\n ${B.rgb} = evaluateSH1(${g.gsplat}, ${g.sh1}, ${g.viewDir});\n } else {\n ${B.rgb} = vec3(0.0);\n }\n `)}).outputs.rgb}function jE(E,A,I){return ft({inTypes:{gsplat:vA,sh2:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:E,sh2:A,viewDir:I},globals:()=>[NI,VE],statements:({inputs:g,outputs:B})=>SI(`\n if (isGsplatActive(${g.gsplat}.flags)) {\n ${B.rgb} = evaluateSH2(${g.gsplat}, ${g.sh2}, ${g.viewDir});\n } else {\n ${B.rgb} = vec3(0.0);\n }\n `)}).outputs.rgb}function _E(E,A,I){return ft({inTypes:{gsplat:vA,sh3:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:E,sh3:A,viewDir:I},globals:()=>[NI,XE],statements:({inputs:g,outputs:B})=>SI(`\n if (isGsplatActive(${g.gsplat}.flags)) {\n ${B.rgb} = evaluateSH3(${g.gsplat}, ${g.sh3}, ${g.viewDir});\n } else {\n ${B.rgb} = vec3(0.0);\n }\n `)}).outputs.rgb}function $E(E){return new Worker(self.location.href,{name:E==null?void 0:E.name})}class As{constructor(){this.messages={},this.messageIdNext=0,this.worker=new $E,this.worker.onmessage=A=>this.onMessage(A)}makeMessageId(){return++this.messageIdNext}makeMessagePromiseId(){const A=this.makeMessageId(),I=new Promise((g,B)=>{this.messages[A]={resolve:g,reject:B}});return{id:A,promise:I}}onMessage(A){const{id:I,result:g,error:B}=A.data,t=this.messages[I];t&&(delete this.messages[I],B?t.reject(B):t.resolve(g))}async call(A,I){const{id:g,promise:B}=this.makeMessagePromiseId();return this.worker.postMessage({name:A,args:I,id:g},{transfer:LQ(I)}),B}}let ii=4,qB=0;const Ci=[],Ei=[];async function Is(){const E=Ci.shift();if(E)return E;if(qB<ii){const A=new As;return qB+=1,A}return new Promise(A=>{Ei.push(A)})}function gs(E){if(qB>ii){qB-=1;return}const A=Ei.shift();if(A){A(E);return}Ci.push(E)}async function Vg(E){const A=await Is();try{return await E(A)}finally{gs(A)}}class Bs extends dt{constructor(A){super(A),this.fileLoader=new kC(A)}load(A,I,g,B){this.fileLoader.setResponseType("arraybuffer"),this.fileLoader.setCrossOrigin(this.crossOrigin),this.fileLoader.setWithCredentials(this.withCredentials),this.fileLoader.setPath(this.path),this.fileLoader.setResourcePath(this.resourcePath),this.fileLoader.setRequestHeader(this.requestHeader),this.fileLoader.load(A,async t=>{if(I){const Q=t,i={},C=[];let s=this.fileType;try{const o=Qs(Q);if(this.fileType==="pcsogs"&&o===void 0)throw new Error("Invalid PC SOGS file");if(o!==void 0){s="pcsogs";for(const a of["means","scales","quats","sh0","shN"]){const n=o[a];if(n){const r=n.files;for(const D of r){const l=new URL(D,A).toString();this.manager.itemStart(l);const y=this.loadExtra(l).then(w=>{i[D]=w}).catch(w=>{throw this.manager.itemError(l),w}).finally(()=>{this.manager.itemEnd(l)});C.push(y)}}}}await Promise.all(C);const e=await oi({input:Q,extraFiles:i,fileType:s,pathOrUrl:A});this.packedSplats?(this.packedSplats.initialize(e),I(this.packedSplats)):I(new Gg(e))}catch(o){B==null||B(o)}}},g,B)}async loadAsync(A,I){return new Promise((g,B)=>{this.load(A,t=>{g(t)},I,B)})}async loadExtra(A){return new Promise((I,g)=>{this.fileLoader.load(A,B=>I(B),void 0,B=>g(B))})}parse(A){return new Ut({packedSplats:A})}}var Xg=(E=>(E.PLY="ply",E.SPZ="spz",E.SPLAT="splat",E.KSPLAT="ksplat",E.PCSOGS="pcsogs",E))(Xg||{});function si(E){const A=new DataView(E.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if((A.getUint32(0,!0)&16777215)===559903){const I=jC(E,4);return new DataView(I.buffer).getUint32(0,!0)===1347635022?"spz":void 0}}function ts(E){const A=E.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}function ei(E){const A=ts(E);if(A==="ply")return"ply";if(A==="spz")return"spz";if(A==="splat")return"splat";if(A==="ksplat")return"ksplat"}function Qs(E){try{let A;if(typeof E=="string")A=E;else{const g=E instanceof ArrayBuffer?new Uint8Array(E):E;if(g.length>65536)return;A=new TextDecoder().decode(g)}const I=JSON.parse(A);if(!I||typeof I!="object"||Array.isArray(I))return;for(const g of["means","scales","quats","sh0"])if(!I[g]||typeof I[g]!="object"||Array.isArray(I[g])||!I[g].shape||!I[g].files||g!=="quats"&&(!I[g].mins||!I[g].maxs))return;return I}catch{return}}async function oi({input:E,extraFiles:A,fileType:I,pathOrUrl:g}){const B=E instanceof ArrayBuffer?new Uint8Array(E):E;let t=I;switch(I||(t=si(B),!t&&g&&(t=ei(g))),t){case"ply":{const Q=new Og({fileBytes:B});await Q.parseHeader();const i=Q.numSplats,C=_A(i).maxSplats,s={fileBytes:B,packedArray:new Uint32Array(C*4)};return await Vg(async o=>{const{packedArray:e,numSplats:a,extra:n}=await o.call("unpackPly",s);return{packedArray:e,numSplats:a,extra:n}})}case"spz":return await Vg(async Q=>{const{packedArray:i,numSplats:C,extra:s}=await Q.call("decodeSpz",{fileBytes:B});return{packedArray:i,numSplats:C,extra:s}});case"splat":return await Vg(async Q=>{const{packedArray:i,numSplats:C}=await Q.call("decodeAntiSplat",{fileBytes:B});return{packedArray:i,numSplats:C}});case"ksplat":return await Vg(async Q=>{const{packedArray:i,numSplats:C,extra:s}=await Q.call("decodeKsplat",{fileBytes:B});return{packedArray:i,numSplats:C,extra:s}});case"pcsogs":return await Vg(async Q=>{const{packedArray:i,numSplats:C,extra:s}=await Q.call("decodePcSogs",{fileBytes:B,extraFiles:A});return{packedArray:i,numSplats:C,extra:s}});default:throw new Error(`Unknown splat file type: ${t}`)}}class is{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=_A(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const I=Math.max(A,this.maxSplats*2),g=new Float32Array(I*3),B=new Float32Array(I*3),t=new Float32Array(I*4),Q=new Float32Array(I),i=new Float32Array(I*3);if(g.set(this.centers),B.set(this.scales),t.set(this.quaternions),Q.set(this.opacities),i.set(this.colors),this.centers=g,this.scales=B,this.quaternions=t,this.opacities=Q,this.colors=i,this.sh1){const C=new Float32Array(I*9);C.set(this.sh1),this.sh1=C}if(this.sh2){const C=new Float32Array(I*15);C.set(this.sh2),this.sh2=C}if(this.sh3){const C=new Float32Array(I*21);C.set(this.sh3),this.sh3=C}this.maxSplats=I}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,I,g,B){this.centers[A*3]=I,this.centers[A*3+1]=g,this.centers[A*3+2]=B}setScale(A,I,g,B){this.scales[A*3]=I,this.scales[A*3+1]=g,this.scales[A*3+2]=B}setQuaternion(A,I,g,B,t){this.quaternions[A*4]=I,this.quaternions[A*4+1]=g,this.quaternions[A*4+2]=B,this.quaternions[A*4+3]=t}setOpacity(A,I){this.opacities[A]=I}setColor(A,I,g,B){this.colors[A*3]=I,this.colors[A*3+1]=g,this.colors[A*3+2]=B}setSh1(A,I){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let g=0;g<9;++g)this.sh1[A*9+g]=I[g]}setSh2(A,I){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let g=0;g<15;++g)this.sh2[A*15+g]=I[g]}setSh3(A,I){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let g=0;g<21;++g)this.sh3[A*21+g]=I[g]}}class ai{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new _C({fileBytes:this.fileBytes});const I=new DataView(this.reader.read(16).buffer);if(I.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=I.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=I.getUint32(8,!0),this.shDegree=I.getUint8(12),this.fractionalBits=I.getUint8(13),this.flags=I.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=I.getUint8(15),this.parsed=!1}parseSplats(A,I,g,B,t,Q){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const i=this.reader.read(this.numSplats*3*2),C=new Uint16Array(i.buffer);for(let s=0;s<this.numSplats;s++){const o=s*3,e=aA(C[o]),a=aA(C[o+1]),n=aA(C[o+2]);A==null||A(s,e,a,n)}}else if(this.version===2){const i=1<<this.fractionalBits,C=this.reader.read(this.numSplats*3*3);for(let s=0;s<this.numSplats;s++){const o=s*9,e=((C[o+2]<<24|C[o+1]<<16|C[o]<<8)>>8)/i,a=((C[o+5]<<24|C[o+4]<<16|C[o+3]<<8)>>8)/i,n=((C[o+8]<<24|C[o+7]<<16|C[o+6]<<8)>>8)/i;A==null||A(s,e,a,n)}}else throw new Error("Unreachable");{const i=this.reader.read(this.numSplats);for(let C=0;C<this.numSplats;C++)I==null||I(C,i[C]/255)}{const i=this.reader.read(this.numSplats*3),C=ri/.15;for(let s=0;s<this.numSplats;s++){const o=s*3,e=(i[o]/255-.5)*C+.5,a=(i[o+1]/255-.5)*C+.5,n=(i[o+2]/255-.5)*C+.5;g==null||g(s,e,a,n)}}{const i=this.reader.read(this.numSplats*3);for(let C=0;C<this.numSplats;C++){const s=C*3,o=Math.exp(i[s]/16-10),e=Math.exp(i[s+1]/16-10),a=Math.exp(i[s+2]/16-10);B==null||B(C,o,e,a)}}{const i=this.reader.read(this.numSplats*3);for(let C=0;C<this.numSplats;C++){const s=C*3,o=i[s]/127.5-1,e=i[s+1]/127.5-1,a=i[s+2]/127.5-1,n=Math.sqrt(Math.max(0,1-o*o-e*e-a*a));t==null||t(C,o,e,a,n)}}if(Q&&this.shDegree>=1){const i=new Float32Array(9),C=this.shDegree>=2?new Float32Array(5*3):void 0,s=this.shDegree>=3?new Float32Array(7*3):void 0,o=this.reader.read(this.numSplats*ni[this.shDegree]*3);let e=0;for(let a=0;a<this.numSplats;a++){for(let n=0;n<9;++n)i[n]=(o[e+n]-128)/128;if(e+=9,C){for(let n=0;n<15;++n)C[n]=(o[e+n]-128)/128;e+=15}if(s){for(let n=0;n<21;++n)s[n]=(o[e+n]-128)/128;e+=21}Q==null||Q(a,i,C,s)}}}}const ni={1:3,2:8,3:15},ri=.28209479177387814,Cs=1347635022,Es=2,ss=1;class KI{constructor({numSplats:A,shDegree:I,fractionalBits:g=12,flagAntiAlias:B=!0}){this.clippedCount=0;const t=19+(I>=1?9:0)+(I>=2?15:0)+(I>=3?21:0),Q=16+A*t;this.buffer=new ArrayBuffer(Q),this.view=new DataView(this.buffer),this.view.setUint32(0,Cs,!0),this.view.setUint32(4,Es,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,I),this.view.setUint8(13,g),this.view.setUint8(14,B?ss:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=I,this.fractionalBits=g,this.fraction=1<<g,this.flagAntiAlias=B}setCenter(A,I,g,B){const t=Math.round(I*this.fraction),Q=Math.max(-8388607,Math.min(8388607,t)),i=Math.round(g*this.fraction),C=Math.max(-8388607,Math.min(8388607,i)),s=Math.round(B*this.fraction),o=Math.max(-8388607,Math.min(8388607,s));(t!==Q||i!==C||s!==o)&&(this.clippedCount+=1);const n=16+A*9;this.view.setUint8(n,Q&255),this.view.setUint8(n+1,Q>>8&255),this.view.setUint8(n+2,Q>>16&255),this.view.setUint8(n+3,C&255),this.view.setUint8(n+4,C>>8&255),this.view.setUint8(n+5,C>>16&255),this.view.setUint8(n+6,o&255),this.view.setUint8(n+7,o>>8&255),this.view.setUint8(n+8,o>>16&255)}setAlpha(A,I){const g=16+this.numSplats*9+A;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(I*255))))}static scaleRgb(A){const I=((A-.5)/(ri/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(I)))}setRgb(A,I,g,B){const t=16+this.numSplats*10+A*3;this.view.setUint8(t,KI.scaleRgb(I)),this.view.setUint8(t+1,KI.scaleRgb(g)),this.view.setUint8(t+2,KI.scaleRgb(B))}setScale(A,I,g,B){const t=16+this.numSplats*13+A*3;this.view.setUint8(t,Math.max(0,Math.min(255,Math.round((Math.log(I)+10)*16)))),this.view.setUint8(t+1,Math.max(0,Math.min(255,Math.round((Math.log(g)+10)*16)))),this.view.setUint8(t+2,Math.max(0,Math.min(255,Math.round((Math.log(B)+10)*16))))}setQuat(A,I,g,B,t){const Q=16+this.numSplats*16+A*3,i=t<0;this.view.setUint8(Q,Math.max(0,Math.min(255,Math.round(((i?-I:I)+1)*127.5)))),this.view.setUint8(Q+1,Math.max(0,Math.min(255,Math.round(((i?-g:g)+1)*127.5)))),this.view.setUint8(Q+2,Math.max(0,Math.min(255,Math.round(((i?-B:B)+1)*127.5))))}static quantizeSh(A,I){const g=Math.round(A*128)+128,B=1<<8-I,t=Math.floor((g+B/2)/B)*B;return Math.max(0,Math.min(255,t))}setSh(A,I,g,B){const t=ni[this.shDegree]||0,Q=16+this.numSplats*19+A*t*3;for(let i=0;i<9;++i)this.view.setUint8(Q+i,KI.quantizeSh(I[i],5));if(g){const i=Q+9;for(let C=0;C<15;++C)this.view.setUint8(i+C,KI.quantizeSh(g[C],4));if(B){const C=i+15;for(let s=0;s<21;++s)this.view.setUint8(C+s,KI.quantizeSh(B[s],4))}}}async finalize(){const A=new Uint8Array(this.buffer),g=new ReadableStream({async start(Q){Q.enqueue(A),Q.close()}}).pipeThrough(new CompressionStream("gzip")),t=await new Response(g).arrayBuffer();return console.log("Compressed",A.length,"bytes to",t.byteLength,"bytes"),new Uint8Array(t)}}async function es(E){var o,e,a;const A=new is,{inputs:I,clipXyz:g,maxSh:B,fractionalBits:t=12,opacityThreshold:Q}=E;for(const n of I){let r=function(S){return S.multiplyScalar(u),S.applyQuaternion(G),S.add(M),S},D=function(S){return S.multiplyScalar(u),S},l=function(S){return S.premultiply(G),S},y=function(S){return!x||x.containsPoint(S)},w=function(S){return Q!==void 0?S>=Q:!0};const u=((o=n.transform)==null?void 0:o.scale)??1,G=new uA().fromArray(((e=n.transform)==null?void 0:e.quaternion)??[0,0,0,1]),M=new f().fromArray(((a=n.transform)==null?void 0:a.translate)??[0,0,0]),x=g?new ig(new f().fromArray(g.min),new f().fromArray(g.max)):void 0;let k=n.fileType;switch(k||(k=si(n.fileBytes),!k&&n.pathOrUrl&&(k=ei(n.pathOrUrl))),k){case Xg.PLY:{const S=new Og({fileBytes:n.fileBytes});await S.parseHeader();let N=null;S.parseSplats((H,U,m,J,K,z,T,W,BA,AA,CA,QA,EA,IA,_)=>{const O=r(new f(U,m,J));if(y(O)&&w(QA)){N=A.pushSplat(),A.setCenter(N,O.x,O.y,O.z);const v=D(new f(K,z,T));A.setScale(N,v.x,v.y,v.z);const Z=l(new uA(W,BA,AA,CA));A.setQuaternion(N,Z.x,Z.y,Z.z,Z.w),A.setOpacity(N,QA),A.setColor(N,EA,IA,_)}else N=null},(H,U,m,J)=>{U&&N!==null&&A.setSh1(N,U),m&&N!==null&&A.setSh2(N,m),J&&N!==null&&A.setSh3(N,J)});break}case Xg.SPZ:{const S=new ai({fileBytes:n.fileBytes}),N=new Int32Array(S.numSplats);N.fill(-1);const H=new Float32Array(S.numSplats*3),U=new f;S.parseSplats((m,J,K,z)=>{const T=r(new f(J,K,z));H[m*3]=T.x,H[m*3+1]=T.y,H[m*3+2]=T.z},(m,J)=>{U.fromArray(H,m*3),y(U)&&w(J)&&(N[m]=A.pushSplat(),A.setCenter(N[m],U.x,U.y,U.z),A.setOpacity(N[m],J))},(m,J,K,z)=>{N[m]>=0&&A.setColor(N[m],J,K,z)},(m,J,K,z)=>{if(N[m]>=0){const T=D(new f(J,K,z));A.setScale(N[m],T.x,T.y,T.z)}},(m,J,K,z,T)=>{if(N[m]>=0){const W=l(new uA(J,K,z,T));A.setQuaternion(N[m],W.x,W.y,W.z,W.w)}},(m,J,K,z)=>{N[m]>=0&&(A.setSh1(N[m],J),K&&A.setSh2(N[m],K),z&&A.setSh3(N[m],z))});break}case Xg.SPLAT:ZQ(n.fileBytes,S=>{},(S,N,H,U,m,J,K,z,T,W,BA,AA,CA,QA,EA)=>{const IA=r(new f(N,H,U));if(y(IA)&&w(AA)){const _=A.pushSplat();A.setCenter(_,IA.x,IA.y,IA.z);const O=D(new f(m,J,K));A.setScale(_,O.x,O.y,O.z);const v=l(new uA(z,T,W,BA));A.setQuaternion(_,v.x,v.y,v.z,v.w),A.setOpacity(_,AA),A.setColor(_,CA,QA,EA)}});break;case Xg.KSPLAT:{let S=null;AE(n.fileBytes,N=>{},(N,H,U,m,J,K,z,T,W,BA,AA,CA,QA,EA,IA)=>{const _=r(new f(H,U,m));if(y(_)&&w(CA)){S=A.pushSplat(),A.setCenter(S,_.x,_.y,_.z);const O=D(new f(J,K,z));A.setScale(S,O.x,O.y,O.z);const v=l(new uA(T,W,BA,AA));A.setQuaternion(S,v.x,v.y,v.z,v.w),A.setOpacity(S,CA),A.setColor(S,QA,EA,IA)}else S=null},(N,H,U,m)=>{S!==null&&(A.setSh1(S,H),U&&A.setSh2(S,U),m&&A.setSh3(S,m))});break}default:throw new Error(`transcodeSpz not implemented for ${k}`)}}const i=Math.min(B??3,A.sh3?3:A.sh2?2:A.sh1?1:0),C=new KI({numSplats:A.numSplats,shDegree:i,fractionalBits:t,flagAntiAlias:!0});for(let n=0;n<A.numSplats;++n){const r=n*3,D=n*4;C.setCenter(n,A.centers[r],A.centers[r+1],A.centers[r+2]),C.setScale(n,A.scales[r],A.scales[r+1],A.scales[r+2]),C.setQuat(n,A.quaternions[D],A.quaternions[D+1],A.quaternions[D+2],A.quaternions[D+3]),C.setAlpha(n,A.opacities[n]),C.setRgb(n,A.colors[r],A.colors[r+1],A.colors[r+2]),A.sh1&&i>=1&&C.setSh(n,A.sh1.slice(n*9,(n+1)*9),i>=2&&A.sh2?A.sh2.slice(n*15,(n+1)*15):void 0,i>=3&&A.sh3?A.sh3.slice(n*21,(n+1)*21):void 0)}return{fileBytes:await C.finalize(),clippedCount:C.clippedCount}}async function hi(E){const{name:A,args:I,id:g}=E.data;let B,t;try{switch(A){case"unpackPly":{const{packedArray:Q,fileBytes:i}=I,C=await os({packedArray:Q,fileBytes:i});B={id:g,numSplats:C.numSplats,packedArray:C.packedArray,extra:C.extra};break}case"decodeSpz":{const{fileBytes:Q}=I,i=as(Q);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"decodeAntiSplat":{const{fileBytes:Q}=I,i=$C(Q);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray};break}case"decodeKsplat":{const{fileBytes:Q}=I,i=IE(Q);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"decodePcSogs":{const{fileBytes:Q,extraFiles:i}=I,C=await iE(Q,i);B={id:g,numSplats:C.numSplats,packedArray:C.packedArray,extra:C.extra};break}case"sortSplats":{const{maxSplats:Q,totalSplats:i,readback:C,ordering:s}=I;B={id:g,readback:C,...ns({totalSplats:i,readback:C,ordering:s})};break}case"sortDoubleSplats":{const{numSplats:Q,readback:i,ordering:C}=I;B={id:g,readback:i,ordering:C},xC&&(B={id:g,readback:i,ordering:C,activeSplats:pi(Q,i,C)});break}case"transcodeSpz":{const Q=I,i=await es(Q);B={id:g,fileBytes:i,input:Q};break}default:throw new Error(`Unknown name: ${A}`)}}catch(Q){t=Q}self.postMessage({id:g,result:B,error:t},{transfer:LQ(B)})}async function os({packedArray:E,fileBytes:A}){const I=new Og({fileBytes:A});await I.parseHeader();const g=I.numSplats,B={},t=Math.exp(-20);return I.parseSplats((Q,i,C,s,o,e,a,n,r,D,l,y,w,u,G)=>{Wg(E,Q,i,C,s,o<t?0:Math.max(ut,o),e<t?0:Math.max(ut,e),a<t?0:Math.max(ut,a),n,r,D,l,y,w,u,G)},(Q,i,C,s)=>{i&&(B.sh1||(B.sh1=new Uint32Array(g*2)),kB(B.sh1,Q,i)),C&&(B.sh2||(B.sh2=new Uint32Array(g*4)),RB(B.sh2,Q,C)),s&&(B.sh3||(B.sh3=new Uint32Array(g*4)),mB(B.sh3,Q,s))}),{packedArray:E,numSplats:g,extra:B}}function as(E){const A=new ai({fileBytes:E}),I=A.numSplats,g=pB(I),B=new Uint32Array(g*4),t={};return A.parseSplats((Q,i,C,s)=>{HQ(B,Q,i,C,s)},(Q,i)=>{ZC(B,Q,i)},(Q,i,C,s)=>{TC(B,Q,i,C,s)},(Q,i,C,s)=>{bQ(B,Q,i,C,s)},(Q,i,C,s,o)=>{KQ(B,Q,i,C,s,o)},(Q,i,C,s)=>{i&&(t.sh1||(t.sh1=new Uint32Array(I*2)),kB(t.sh1,Q,i)),C&&(t.sh2||(t.sh2=new Uint32Array(I*4)),RB(t.sh2,Q,C)),s&&(t.sh3||(t.sh3=new Uint32Array(I*4)),mB(t.sh3,Q,s))}),{packedArray:B,numSplats:I,extra:t}}const Sg=31744,Pg=Sg+1;let DA=null;function ns({totalSplats:E,readback:A,ordering:I}){DA||(DA=new Uint32Array(Pg)),DA.fill(0);const g=A.map(C=>new Uint32Array(C.buffer)),B=g[0].length,t=Math.ceil(E/B);let Q=0;for(let C=0;C<t;++C){const s=g[C],o=Math.min(s.length,E-Q);for(let e=0;e<o;++e){const a=s[e]&32767;a<Sg&&(DA[a]+=1)}Q+=o}let i=0;for(let C=0;C<Pg;++C){const s=i+DA[C];DA[C]=i,i=s}Q=0;for(let C=0;C<t;++C){const s=g[C],o=Math.min(s.length,E-Q);for(let e=0;e<o;++e){const a=s[e]&32767;a<Sg&&(I[DA[a]]=Q+e,DA[a]+=1)}Q+=o}if(DA[Pg-1]!==i)throw new Error(`Expected ${i} active splats but got ${DA[Pg-1]}`);return{activeSplats:i,ordering:I}}function Ee({numSplats:E,readback:A,ordering:I}){DA||(DA=new Uint32Array(Pg)),DA.fill(0);for(let B=0;B<E;++B){const t=A[B];t<Sg&&(DA[t]+=1)}let g=0;for(let B=Sg-1;B>=0;--B){const t=g+DA[B];DA[B]=g,g=t}for(let B=0;B<E;++B){const t=A[B];t<Sg&&(I[DA[t]]=B,DA[t]+=1)}if(DA[0]!==g)throw new Error(`Expected ${g} active splats but got ${DA[0]}`);return{activeSplats:g,ordering:I}}const Yt=[];function ci(E){Yt.push(E)}async function rs(){self.addEventListener("message",ci),await vB(),self.removeEventListener("message",ci),self.addEventListener("message",hi);for(const E of Yt)hi(E);Yt.length=0}rs().catch(console.error)})();\n//# sourceMappingURL=worker-DwLc-3SK.js.map\n',ig=typeof self<"u"&&self.Blob&&new Blob([bQ],{type:"text/javascript;charset=utf-8"});function jn(t){let A;try{if(A=ig&&(self.URL||self.webkitURL).createObjectURL(ig),!A)throw"";const I=new Worker(A,{name:t==null?void 0:t.name});return I.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),I}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(bQ),{name:t==null?void 0:t.name})}finally{A&&(self.URL||self.webkitURL).revokeObjectURL(A)}}class _n{constructor(){this.messages={},this.messageIdNext=0,this.worker=new jn,this.worker.onmessage=A=>this.onMessage(A)}makeMessageId(){return++this.messageIdNext}makeMessagePromiseId(){const A=this.makeMessageId(),I=new Promise((g,B)=>{this.messages[A]={resolve:g,reject:B}});return{id:A,promise:I}}onMessage(A){const{id:I,result:g,error:B}=A.data,i=this.messages[I];i&&(delete this.messages[I],B?i.reject(B):i.resolve(g))}async call(A,I){const{id:g,promise:B}=this.makeMessagePromiseId();return this.worker.postMessage({name:A,args:I,id:g},{transfer:FB(I)}),B}}let TQ=4,rI=0;const KQ=[],qQ=[];async function $n(){const t=KQ.shift();if(t)return t;if(rI<TQ){const A=new _n;return rI+=1,A}return new Promise(A=>{qQ.push(A)})}function Ao(t){if(rI>TQ){rI-=1;return}const A=qQ.shift();if(A){A(t);return}KQ.push(t)}async function Dt(t){const A=await $n();try{return await t(A)}finally{Ao(A)}}class vQ extends iA.Loader{constructor(A){super(A),this.fileLoader=new iA.FileLoader(A)}load(A,I,g,B){this.fileLoader.setResponseType("arraybuffer"),this.fileLoader.setCrossOrigin(this.crossOrigin),this.fileLoader.setWithCredentials(this.withCredentials),this.fileLoader.setPath(this.path),this.fileLoader.setResourcePath(this.resourcePath),this.fileLoader.setRequestHeader(this.requestHeader),this.fileLoader.load(A,async i=>{if(I){const e=i,Q={},s=[];let E=this.fileType;try{const a=zQ(e);if(this.fileType==="pcsogs"&&a===void 0)throw new Error("Invalid PC SOGS file");if(a!==void 0){E="pcsogs";for(const o of["means","scales","quats","sh0","shN"]){const r=a[o];if(r){const h=r.files;for(const c of h){const l=new URL(c,A).toString();this.manager.itemStart(l);const u=this.loadExtra(l).then(D=>{Q[c]=D}).catch(D=>{throw this.manager.itemError(l),D}).finally(()=>{this.manager.itemEnd(l)});s.push(u)}}}}await Promise.all(s);const C=await jI({input:e,extraFiles:Q,fileType:E,pathOrUrl:A});this.packedSplats?(this.packedSplats.initialize(C),I(this.packedSplats)):I(new HA(C))}catch(a){B==null||B(a)}}},g,B)}async loadAsync(A,I){return new Promise((g,B)=>{this.load(A,i=>{g(i)},I,B)})}async loadExtra(A){return new Promise((I,g)=>{this.fileLoader.load(A,B=>I(B),void 0,B=>g(B))})}parse(A){return new qA({packedSplats:A})}}var wt=(t=>(t.PLY="ply",t.SPZ="spz",t.SPLAT="splat",t.KSPLAT="ksplat",t.PCSOGS="pcsogs",t))(wt||{});function XI(t){const A=new DataView(t.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if((A.getUint32(0,!0)&16777215)===559903){const I=bB(t,4);return new DataView(I.buffer).getUint32(0,!0)===1347635022?"spz":void 0}}function to(t){const A=t.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}function ZQ(t){const A=to(t);if(A==="ply")return"ply";if(A==="spz")return"spz";if(A==="splat")return"splat";if(A==="ksplat")return"ksplat"}function Io(t){return zQ(t)!==void 0}function zQ(t){try{let A;if(typeof t=="string")A=t;else{const g=t instanceof ArrayBuffer?new Uint8Array(t):t;if(g.length>65536)return;A=new TextDecoder().decode(g)}const I=JSON.parse(A);if(!I||typeof I!="object"||Array.isArray(I))return;for(const g of["means","scales","quats","sh0"])if(!I[g]||typeof I[g]!="object"||Array.isArray(I[g])||!I[g].shape||!I[g].files||g!=="quats"&&(!I[g].mins||!I[g].maxs))return;return I}catch{return}}async function jI({input:t,extraFiles:A,fileType:I,pathOrUrl:g}){const B=t instanceof ArrayBuffer?new Uint8Array(t):t;let i=I;switch(I||(i=XI(B),!i&&g&&(i=ZQ(g))),i){case"ply":{const e=new vt({fileBytes:B});await e.parseHeader();const Q=e.numSplats,s=FA(Q).maxSplats,E={fileBytes:B,packedArray:new Uint32Array(s*4)};return await Dt(async a=>{const{packedArray:C,numSplats:o,extra:r}=await a.call("unpackPly",E);return{packedArray:C,numSplats:o,extra:r}})}case"spz":return await Dt(async e=>{const{packedArray:Q,numSplats:s,extra:E}=await e.call("decodeSpz",{fileBytes:B});return{packedArray:Q,numSplats:s,extra:E}});case"splat":return await Dt(async e=>{const{packedArray:Q,numSplats:s}=await e.call("decodeAntiSplat",{fileBytes:B});return{packedArray:Q,numSplats:s}});case"ksplat":return await Dt(async e=>{const{packedArray:Q,numSplats:s,extra:E}=await e.call("decodeKsplat",{fileBytes:B});return{packedArray:Q,numSplats:s,extra:E}});case"pcsogs":return await Dt(async e=>{const{packedArray:Q,numSplats:s,extra:E}=await e.call("decodePcSogs",{fileBytes:B,extraFiles:A});return{packedArray:Q,numSplats:s,extra:E}});default:throw new Error(`Unknown splat file type: ${i}`)}}class go{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=FA(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const I=Math.max(A,this.maxSplats*2),g=new Float32Array(I*3),B=new Float32Array(I*3),i=new Float32Array(I*4),e=new Float32Array(I),Q=new Float32Array(I*3);if(g.set(this.centers),B.set(this.scales),i.set(this.quaternions),e.set(this.opacities),Q.set(this.colors),this.centers=g,this.scales=B,this.quaternions=i,this.opacities=e,this.colors=Q,this.sh1){const s=new Float32Array(I*9);s.set(this.sh1),this.sh1=s}if(this.sh2){const s=new Float32Array(I*15);s.set(this.sh2),this.sh2=s}if(this.sh3){const s=new Float32Array(I*21);s.set(this.sh3),this.sh3=s}this.maxSplats=I}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,I,g,B){this.centers[A*3]=I,this.centers[A*3+1]=g,this.centers[A*3+2]=B}setScale(A,I,g,B){this.scales[A*3]=I,this.scales[A*3+1]=g,this.scales[A*3+2]=B}setQuaternion(A,I,g,B,i){this.quaternions[A*4]=I,this.quaternions[A*4+1]=g,this.quaternions[A*4+2]=B,this.quaternions[A*4+3]=i}setOpacity(A,I){this.opacities[A]=I}setColor(A,I,g,B){this.colors[A*3]=I,this.colors[A*3+1]=g,this.colors[A*3+2]=B}setSh1(A,I){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let g=0;g<9;++g)this.sh1[A*9+g]=I[g]}setSh2(A,I){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let g=0;g<15;++g)this.sh2[A*15+g]=I[g]}setSh3(A,I){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let g=0;g<21;++g)this.sh3[A*21+g]=I[g]}}var Bo=`precision highp float;
511
+ `)}).outputs.rgb}const ft=class ft{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const e=new ReadableStream({start:a=>{a.enqueue(this.fileBytes.slice(0,65536)),a.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const s=`end_header
512
+ `;for(;;){const{value:a,done:r}=await e.read();if(r)throw new Error("Failed to read header");this.header+=a;const g=this.header.indexOf(s);if(g>=0){this.header=this.header.slice(0,g+s.length);break}}const i=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,i),this.elements={};let n=null;this.comments=[],this.header.trim().split(`
513
+ `).forEach((a,r)=>{const g=a.trim();if(r===0){if(g!=="ply")throw new Error("Invalid PLY header");return}if(g.length===0)return;const I=g.split(" ");switch(I[0]){case"format":if(I[1]==="binary_little_endian")this.littleEndian=!0;else if(I[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${I[1]}`);if(I[2]!=="1.0")throw new Error(`Unsupported PLY version: ${I[2]}`);break;case"end_header":break;case"comment":this.comments.push(g.slice(8));break;case"element":{const Q=I[1];n={name:Q,count:Number.parseInt(I[2]),properties:{}},this.elements[Q]=n;break}case"property":if(n==null)throw new Error("Property must be inside an element");I[1]==="list"?n.properties[I[4]]={isList:!0,type:I[3],countType:I[2]}:n.properties[I[2]]={isList:!1,type:I[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let e=0;const s=this.data;if(s==null)throw new Error("No data to parse");for(const i in this.elements){const n=this.elements[i],{count:a,properties:r}=n,g={},I=[];for(const[o,C]of Object.entries(r))C.isList?(g[o]=[],I.push(()=>{const E=g[o];E.length=re[C.countType](s,e,this.littleEndian),e+=yt[C.countType];for(let l=0;l<E.length;l++)E[l]=re[C.type](s,e,this.littleEndian),e+=yt[C.type]})):(g[o]=0,I.push(()=>{g[o]=re[C.type](s,e,this.littleEndian),e+=yt[C.type]}));const Q=A(n)??(()=>{});for(let o=0;o<a;o++){for(const C of I)C();Q(o,g)}}}parseSplats(A,e){if(this.elements.vertex==null)throw new Error("No vertex element found");let s=!1;const i=[];let n=0,a=[],r=[],g=[],I,Q,o;function C(){const u=IC[n];a=new Array(3).fill(null).flatMap((p,d)=>[0,1,2].map((y,D)=>`f_rest_${d+D*u/3}`)),r=new Array(5).fill(null).flatMap((p,d)=>[0,1,2].map((y,D)=>`f_rest_${3+d+D*u/3}`)),g=new Array(7).fill(null).flatMap((p,d)=>[0,1,2].map((y,D)=>`f_rest_${8+d+D*u/3}`)),I=n>=1?new Float32Array(3*3):void 0,Q=n>=2?new Float32Array(5*3):void 0,o=n>=3?new Float32Array(7*3):void 0}function E(u,p){if(!I)throw new Error("Missing sh1");for(const[d,y]of a.entries())I[d]=p[y]*8/255-4;if(Q)for(const[d,y]of r.entries())Q[d]=p[y]*8/255-4;if(o)for(const[d,y]of g.entries())o[d]=p[y]*8/255-4;e==null||e(u,I,Q,o)}function l(u){const{min_x:p,min_y:d,min_z:y,max_x:D,max_y:S,max_z:m,min_scale_x:f,min_scale_y:w,min_scale_z:R,max_scale_x:M,max_scale_y:x,max_scale_z:L}=u.properties;if(!p||!d||!y||!D||!S||!m||!f||!w||!R||!M||!x||!L)throw new Error("Missing PLY chunk properties");return s=!0,(N,k)=>{const{min_x:U,min_y:v,min_z:AA,max_x:z,max_y:sA,max_z:tA,min_scale_x:V,min_scale_y:J,min_scale_z:Z,max_scale_x:P,max_scale_y:X,max_scale_z:b,min_r:yA,min_g:IA,min_b:wA,max_r:DA,max_g:SA,max_b:hA}=k;i.push({min_x:U,min_y:v,min_z:AA,max_x:z,max_y:sA,max_z:tA,min_scale_x:V,min_scale_y:J,min_scale_z:Z,max_scale_x:P,max_scale_y:X,max_scale_z:b,min_r:yA,min_g:IA,min_b:wA,max_r:DA,max_g:SA,max_b:hA})}}function c(u){if(e&&u.name==="sh")return n=Is(u.properties),C(),E;if(u.name!=="vertex")return null;const{packed_position:p,packed_rotation:d,packed_scale:y,packed_color:D}=u.properties;if(!p||!d||!y||!D)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const S=Math.sqrt(2);return(m,f)=>{const w=i[m>>>8];if(w==null)throw new Error("Missing PLY chunk");const{min_x:R,min_y:M,min_z:x,max_x:L,max_y:N,max_z:k,min_scale_x:U,min_scale_y:v,min_scale_z:AA,max_scale_x:z,max_scale_y:sA,max_scale_z:tA,min_r:V,min_g:J,min_b:Z,max_r:P,max_g:X,max_b:b}=w,{packed_position:yA,packed_rotation:IA,packed_scale:wA,packed_color:DA}=f,SA=(yA>>>21&2047)/2047*(L-R)+R,hA=(yA>>>11&1023)/1023*(N-M)+M,bA=(yA&2047)/2047*(k-x)+x,MA=((IA>>>20&1023)/1023-.5)*S,WA=((IA>>>10&1023)/1023-.5)*S,jA=((IA&1023)/1023-.5)*S,Y=Math.sqrt(Math.max(0,1-MA*MA-WA*WA-jA*jA)),dA=IA>>>30,OA=dA===0?MA:dA===1?Y:WA,Lt=dA<=1?WA:dA===2?Y:jA,ie=dA<=2?jA:Y,FA=dA===0?Y:MA,T=Math.exp((wA>>>21&2047)/2047*(z-U)+U),PA=Math.exp((wA>>>11&1023)/1023*(sA-v)+v),me=Math.exp((wA&2047)/2047*(tA-AA)+AA),xe=(DA>>>24&255)/255*((P??1)-(V??0))+(V??0),Se=(DA>>>16&255)/255*((X??1)-(J??0))+(J??0),Me=(DA>>>8&255)/255*((b??1)-(Z??0))+(Z??0),Fe=(DA&255)/255;A(m,SA,hA,bA,T,PA,me,OA,Lt,ie,FA,Fe,xe,Se,Me)}}const h=u=>{if(u.name==="chunk")return l(u);if(s)return c(u);if(u.name!=="vertex")return null;const{x:p,y:d,z:y,scale_0:D,scale_1:S,scale_2:m,rot_0:f,rot_1:w,rot_2:R,rot_3:M,opacity:x,f_dc_0:L,f_dc_1:N,f_dc_2:k,red:U,green:v,blue:AA,alpha:z}=u.properties;if(!p||!d||!y)throw new Error("Missing PLY properties: x, y, z");const sA=D&&S&&m,tA=f&&w&&R&&M,V=z!=null?ge[z.type]:1,J=U!=null?ge[U.type]:1,Z=v!=null?ge[v.type]:1,P=AA!=null?ge[AA.type]:1;return n=Is(u.properties),C(),(X,b)=>{const yA=sA?Math.exp(b.scale_0):ft.defaultPointScale,IA=sA?Math.exp(b.scale_1):ft.defaultPointScale,wA=sA?Math.exp(b.scale_2):ft.defaultPointScale,DA=tA?b.rot_1:0,SA=tA?b.rot_2:0,hA=tA?b.rot_3:0,bA=tA?b.rot_0:1,MA=x!=null?1/(1+Math.exp(-b.opacity)):z!=null?b.alpha/V:1,WA=L!=null?b.f_dc_0*ae+.5:U!=null?b.red/J:1,jA=N!=null?b.f_dc_1*ae+.5:v!=null?b.green/Z:1,Y=k!=null?b.f_dc_2*ae+.5:AA!=null?b.blue/P:1;if(A(X,b.x,b.y,b.z,yA,IA,wA,DA,SA,hA,bA,MA,WA,jA,Y),e&&I){if(I)for(const[dA,OA]of a.entries())I[dA]=b[OA];if(Q)for(const[dA,OA]of r.entries())Q[dA]=b[OA];if(o)for(const[dA,OA]of g.entries())o[dA]=b[OA];e(X,I,Q,o)}}};this.parseData(h)}injectRgba(A){let e=0;const s=this.data;if(s==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const i in this.elements){const n=this.elements[i],{count:a,properties:r}=n,g=[];let I=0;const Q=i==="vertex";if(Q){for(const o of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!r[o]||r[o].type!=="float")throw new Error(`Can't injectRgba due to property: ${o}`)}for(const[o,C]of Object.entries(r))if(C.isList)g.push(()=>{const E=re[C.countType](s,e,this.littleEndian);e+=yt[C.countType],e+=E*yt[C.type]});else{if(Q)if(o==="f_dc_0"||o==="f_dc_1"||o==="f_dc_2"){const E=Number.parseInt(o.slice(5));g.push(()=>{const l=(A[I+E]/255-.5)/ae;os[C.type](s,e,this.littleEndian,l)})}else o==="opacity"&&g.push(()=>{const E=Math.max(-100,Math.min(100,-Math.log(1/(A[I+3]/255)-1)));os[C.type](s,e,this.littleEndian,E)});g.push(()=>{e+=yt[C.type]})}for(let o=0;o<a;o++){for(const C of g)C();Q&&(I+=4)}}}};ft.defaultPointScale=.001;let Vt=ft;const ae=.28209479177387814,re={char:(t,A,e)=>t.getInt8(A),uchar:(t,A,e)=>t.getUint8(A),short:(t,A,e)=>t.getInt16(A,e),ushort:(t,A,e)=>t.getUint16(A,e),int:(t,A,e)=>t.getInt32(A,e),uint:(t,A,e)=>t.getUint32(A,e),float:(t,A,e)=>t.getFloat32(A,e),double:(t,A,e)=>t.getFloat64(A,e)},os={char:(t,A,e,s)=>{t.setInt8(A,s)},uchar:(t,A,e,s)=>{t.setUint8(A,s)},short:(t,A,e,s)=>{t.setInt16(A,s,e)},ushort:(t,A,e,s)=>{t.setUint16(A,s,e)},int:(t,A,e,s)=>{t.setInt32(A,s,e)},uint:(t,A,e,s)=>{t.setUint32(A,s,e)},float:(t,A,e,s)=>{t.setFloat32(A,s,e)},double:(t,A,e,s)=>{t.setFloat64(A,s,e)}},yt={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},ge={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},oC={0:0,9:1,24:2,45:3},IC={0:0,1:9,2:24,3:45};function Is(t){let A=0;for(;t[`f_rest_${A}`];)A+=1;const e=oC[A];if(e==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return e}const Vr='(function(){"use strict";let XA;const mi=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&mi.decode();let Qe=null;function ur(){return(Qe===null||Qe.byteLength===0)&&(Qe=new Uint8Array(XA.memory.buffer)),Qe}function dr(n,A){return n=n>>>0,mi.decode(ur().subarray(n,n+A))}function fr(n,A,t){return XA.sort_splats(n,A,t)>>>0}function yr(n,A,t,e,s,i,r,a,g,o,I){return XA.raycast_splats(n,A,t,e,s,i,r,a,g,o,I)}async function pr(n,A){if(typeof Response=="function"&&n instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(n,A)}catch(e){if(n.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",e);else throw e}const t=await n.arrayBuffer();return await WebAssembly.instantiate(t,A)}else{const t=await WebAssembly.instantiate(n,A);return t instanceof WebAssembly.Instance?{instance:t,module:n}:t}}function wr(){const n={};return n.wbg={},n.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},n.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},n.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},n.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},n.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},n.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},n.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,t,e){return new Float32Array(A,t>>>0,e>>>0)},n.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,t,e){return new Uint32Array(A,t>>>0,e>>>0)},n.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},n.wbg.__wbg_set_10bad9bee0e9c58b=function(A,t,e){A.set(t,e>>>0)},n.wbg.__wbg_set_d23661d19148b229=function(A,t,e){A.set(t,e>>>0)},n.wbg.__wbg_set_f4f1f0daa30696fc=function(A,t,e){A.set(t,e>>>0)},n.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,t,e){return A.subarray(t>>>0,e>>>0)},n.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,t,e){return A.subarray(t>>>0,e>>>0)},n.wbg.__wbindgen_init_externref_table=function(){const A=XA.__wbindgen_export_0,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)},n.wbg.__wbindgen_memory=function(){return XA.memory},n.wbg.__wbindgen_throw=function(A,t){throw new Error(dr(A,t))},n}function Dr(n,A){return XA=n.exports,Ds.__wbindgen_wasm_module=A,Qe=null,XA.__wbindgen_start(),XA}async function Ds(n){if(XA!==void 0)return XA;typeof n<"u"&&(Object.getPrototypeOf(n)===Object.prototype?{module_or_path:n}=n:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof n>"u"&&(n=new URL("data:application/wasm;base64,AGFzbQEAAAAB9wEkYAJ/fwF/YAN/f38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAR/f39/AGABbwFvYANvb38AYAFvAX9gAAF/YAAAYAd/f39/f39/AX9gAX0BfWAGf39/f39/AGAEf39/fwF/YAF/AW9gAAFvYAd/f39/f39/AGACf34Bf2ADf35+AGACf34AYAt9fX19fX19fX9vfwFvYAZ/f39/f38Bf2AFf398f38AYAR/fH9/AGAFf399f38AYAR/fX9/AGAFf39+f38AYAR/fn9/AGADf35+AX9gA39vbwF/YAJ9fQF9AvIEEQN3YmcdX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgACgN3YmcaX193YmdfbmV3XzlmZWU5N2E0MDliMzJiNjgACgN3YmcaX193Ymdfc2V0X2Y0ZjFmMGRhYTMwNjk2ZmMACwN3YmcdX193YmdfbGVuZ3RoXzhjZmQyYzY0MDlhZjg4YWQADAN3YmcxX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfZjFkZWFkNDRkMWZjNzIxMgAHA3diZxpfX3diZ19uZXdfZTNiMzIxZGNmZWY4OWZjNwAKA3diZxpfX3diZ19zZXRfZDIzNjYxZDE5MTQ4YjIyOQALA3diZx1fX3diZ19sZW5ndGhfNmNhNTI3NjY1ZDg5Njk0ZAAMA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9lNmI3ZTY5YWNkNGM3MzU0AAcDd2JnGl9fd2JnX3NldF8xMGJhZDliZWUwZTljNThiAAsDd2JnHV9fd2JnX2xlbmd0aF8zYjRmMDIyMTg4YWU4ZGI2AAwDd2JnH19fd2JnX3N1YmFycmF5Xzc2OWUxZTBmODFiYjI1OWIABwN3YmcfX193Ymdfc3ViYXJyYXlfM2FhZWVjODliYjI1NDRmMAAHA3diZyRfX3diZ19uZXd3aXRobGVuZ3RoXzVhNWVmZTMxM2NmZDU5ZjEAEwN3YmcQX193YmluZGdlbl90aHJvdwACA3diZxFfX3diaW5kZ2VuX21lbW9yeQAUA3diZx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4DwAG+AQUAAAYPAAUF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BSADOgAcIAUgAjYCGCAFIAUpAwA3AhBBlM/AACgCACAFQRBqQZjPwAAoAgAoAhQRAgBBkM/AACgCAEEBawUgBgs2AgBB6NLAAEEAOgAAIANFDQAACwALsgEBBn8CQAJAIABBhAFJDQAgANBvJgEQRSIBKAIMIQUgASgCECECIAFCADcCDCABKAIIIQMgASgCBCEEIAFCBDcCBCABKAIAIQYgAUEANgIAIAAgAkkNASAAIAJrIgAgA08NASAEIABBAnRqIAU2AgAgASACNgIQIAEgADYCDCABIAM2AgggASgCBCABIAQ2AgQgASgCACEAIAEgBjYCACAARQ0AIABBAnRBBBCwAQsPCwALqQEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBgACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAkEEELABDAELIAMgAkEEIAFBAnQiAhCXASIFRQ0CCyAAIAE2AgQgACAFNgIAIAZBEGokAA8LQZiPwABBMhC5AQALQQQgAhCUAQALowEBAn8jAEEgayIDJAACQCABRQRAQQFBACACEMYBIQAMAQsgAyABNgIMIAMgADYCCCADQRBqIANBCGoQLSADKAIQIgEEQANAIAMoAhQhBCADKAIcRQRAIAEgBCACEMYBIQAMAwtBASEAIAIgASAEEJkBDQIgAkH9/wMQnAENAiADQRBqIANBCGoQLSADKAIQIgENAAsLQQAhAAsgA0EgaiQAIAALiwEBAX8CQCACQQBOBEACfyADKAIEBEACQCADKAIIIgRFBEAMAQsgAygCACAEIAEgAhCXAQwCCwsgASACRQ0AGkH9zsAALQAAGiACIAEQpgELIgMEQCAAIAI2AgggACADNgIEIABBADYCAA8LIAAgAjYCCCAAIAE2AgQMAQsgAEEANgIECyAAQQE2AgALqwEBAn8jAEEgayIBJAACQCAAKAIEIgJBA0YgAkECSXINAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIABBKEEEELABIAFBIGokAAuaAQECfyMAQSBrIgEkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUGshcAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiAkUNACAAKAIMIAJBDGxBBBCwAQsgACgCHCICBEAgACgCICACQQEQsAELIAFBIGokAAuSAQEEfyMAQRBrIgIkAEEBIQQCQCABKAIUIgNBJyABKAIYIgUoAhAiAREAAA0AIAJBBGogACgCAEGBAhAiAkAgAi0ABEGAAUYEQCADIAIoAgggAREAAEUNAQwCCyADIAItAA4iACACQQRqaiACLQAPIABrIAUoAgwRAQANAQsgA0EnIAERAAAhBAsgAkEQaiQAIAQLlQEBAn8jAEEgayIDJAACQCAAKAIEIgRBA0YgBEECSXINAAJAAkAgAC0AGEEBaw4CAgABCyADQQE2AgggA0GshcAANgIEIANCADcCECADIANBHGo2AgwgA0EEakGQhsAAEIQBAAsgAEEIahBOIAAoAggiBEUNACAAKAIMIARBDGxBBBCwAQsgAEEoQQQQsAEgA0EgaiQAC4QBAQN/An8CQCAAKAIAIgFFDQADQAJAIAAoAggiAyAAKAIETw0AIAEgA2otAABBxQBHDQAgACADQQFqNgIIDAILAkAgAkUNACAAKAIQIgFFDQBB+aTAAEECIAEQxgFFDQBBAQ8LQQEgAEEBEBMNAhogAkEBayECIAAoAgAiAQ0ACwtBAAsLegEBfyMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQmQEMAQsgAkEQaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEYaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIUIAEoAhggAkEIahApCyACQSBqJAALSQEDfiAAIAFC/////w+DIgJCPn4iA0IAIgIgAUIgiEI+fnwiAUIghnwiBDcDACAAIAMgBFatIAEgAlStQiCGIAFCIIiEfDcDCAt8AQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQQI2AhwgBUG8rsAANgIYIAVCAjcCJCAFIAVBEGqtQoCAgICADIQ3AzggBSAFQQhqrUKAgICAkAyENwMwIAUgBUEwajYCICAFQRhqIAQQhAEAC3gBA38CQCAAKAIAIgFBgICAgHhHBEAgAUUNASAAKAIEIAFBARCwAQ8LIAAtAARBA0cNACAAKAIIIgAoAgAhASAAQQRqKAIAIgMoAgAiAgRAIAEgAhEEAAsgAygCBCICBEAgASACIAMoAggQsAELIABBDEEEELABCwvzAwIIfwF+IwBBEGsiAyQAIAAoAgQhBSAAKAIAIQAgASgCFEG4rMAAQQEgASgCGCgCDBEBACEEIANBBGoiAkEAOgAFIAIgBDoABCACIAE2AgAgBQRAA0AgAyAANgIMIANBDGohCCMAQUBqIgEkAEEBIQYCQCADQQRqIgQtAAQNACAELQAFIQkCQCAEKAIAIgIoAhwiB0EEcUUEQCAJQQFxRQ0BIAIoAhRB667AAEECIAIoAhgoAgwRAQBFDQEMAgsgCUEBcUUEQCACKAIUQfWuwABBASACKAIYKAIMEQEADQIgAigCHCEHCyABQQE6ABsgASACKQIUNwIMIAFBzK7AADYCNCABIAFBG2o2AhQgASACKQIINwIkIAIpAgAhCiABIAc2AjggASACKAIQNgIsIAEgAi0AIDoAPCABIAo3AhwgASABQQxqNgIwIAggAUEcakGAmcAAKAIAEQAADQEgASgCMEHwrsAAQQIgASgCNCgCDBEBACEGDAELIAggAkGAmcAAKAIAEQAAIQYLIARBAToABSAEIAY6AAQgAUFAayQAIABBAWohACAFQQFrIgUNAAsLQQEhACADQQRqIgEtAARFBEAgASgCACIAKAIUQfauwABBASAAKAIYKAIMEQEAIQALIAEgADoABCADQRBqJAAgAAtqAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0HYscAANgIIIANCAjcCFCADQoCAgIDwAiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhAEAC2oCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZitwAA2AgggA0ICNwIUIANCgICAgPACIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhCEAQALagIBfwF+IwBBMGsiAyQAIAMgADYCACADIAE2AgQgA0ECNgIM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AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIMIQMCQAJAAkACQCACKAIEDgIAAQILIAMNAUEBIQJBACEDDAILIAMNACACKAIAIgIoAgQhAyACKAIAIQIMAQsgAEGAgICAeDYCACAAIAE2AgwgAEHglsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALIAAgAzYCBCAAIAI2AgAgAEHElsAAIAEoAgQgASgCCCIALQAIIAAtAAkQWQALJQAgAEUEQEGYj8AAQTIQuQEACyAAIAIgAyAEIAUgASgCEBEIAAsoACABIAAoAgAtAABBAnQiAEHkp8AAaigCACAAQdCnwABqKAIAEJkBCyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQEQkACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERIACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQERwACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQER4ACyMAIABFBEBBmI/AAEEyELkBAAsgACACIAMgBCABKAIQESAACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARCwAQsLJwAgAEEcakEAIAJC2KGkg7Hi0d18URtBACABQpXX3ZjDl4qMC1EbCyEAIABFBEBBmI/AAEEyELkBAAsgACACIAMgASgCEBEDAAsfACAARQRAQZiPwABBMhC5AQALIAAgAiABKAIQEQAAC+MVAQx/EDMiBCABJgECfyAAIQYQMyIAIAImASMAQdAAayIIJAAgCCAANgIYIAggBDYCFCAIQRRqKAIAEMoBIQtBvM7AACgCAEUEQEHkzsAAQQA2AgBB2M7AAEEANgIAQczOwABBADYCAEHAzsAAQQA2AgBB4M7AACgCACEFQeDOwABBBDYCAEHczsAAKAIAIQ1B3M7AAEEANgIAQdTOwAAoAgAhA0HUzsAAQQQ2AgBB0M7AACgCACEJQdDOwABBADYCAEHIzsAAKAIAIQRByM7AAEECNgIAQcTOwAAoAgAhB0HEzsAAQQA2AgBBvM7AACgCACEAQbzOwABBATYCAAJAIABFDQAgBwRAIAQgB0EBdEECELABCyAJBEAgAyAJQQJ0QQQQsAELIA1FDQAgBSAN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IABBAWshACACQRBJIAJBBHYhAkUNAAsgAEGAAWoiAkGBAUkEQCABQZyvwABBAiAAIARqQYABakEAIABrECEgASAFNgIcIAEgBzYCBCABIAY2AgAgBEGAAWokAAwBCyACQYABQYyvwAAQaAALCwwAIAAgASkCADcDAAsNACABQfCYwABBAhAeCw0AIABBhJzAACABECkLDgAgAUGvm8AAQQUQmQELDgAgAUG8p8AAQRIQmQELDQAgAEHQqcAAIAEQKQsOACABQcipwABBBRCZAQsZACAAIAFBjM/AACgCACIAQTogABsRAgAACw0AIABBzK7AACABECkLCgAgAiAAIAEQHguQBQEHfwJAAn8CQCACIgUgACABa0sEQCABIAJqIQMgACACaiECIAAgBUEQSQ0CGiACQXxxIQRBACACQQNxIgZrIQcgBgRAIANBAWshAANAIAJBAWsiAiAALQAAOgAAIABBAWshACACIARLDQALCyAEIAUgBmsiBkF8cSIFayECIAMgB2oiA0EDcQRAIAVBAEwNAiADQQN0IgBBGHEhByADQXxxIghBBGshAUEAIABrQRhxIQkgCCgCACEAA0AgBEEEayIEIAAgCXQgASgCACIAIAd2cjYCACABQQRrIQEgAiAESQ0ACwwCCyAFQQBMDQEgASAGakEEayEBA0AgBEEEayIEIAEoAgA2AgAgAUEEayEBIAIgBEkNAAsMAQsCQCAFQRBJBEAgACECDAELIABBACAAa0EDcSIDaiEEIAMEQCAAIQIgASEAA0AgAiAALQAAOgAAIABBAWohACACQQFqIgIgBEkNAAsLIAQgBSADayIFQXxxIgZqIQICQCABIANqIgNBA3EEQCAGQQBMDQEgA0EDdCIAQRhxIQcgA0F8cSIIQQRqIQFBACAAa0EYcSEJIAgoAgAhAANAIAQgACAHdiABKAIAIgAgCXRyNgIAIAFBBGohASAEQQRqIgQgAkkNAAsMAQsgBkEATA0AIAMhAQNAIAQgASgCADYCACABQQRqIQEgBEEEaiIEIAJJDQALCyAFQQNxIQUgAyAGaiEBCyAFRQ0CIAIgBWohAANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIABJDQALDAILIAZBA3EiAEUNASADIAVrIQMgAiAAawshACADQQFrIQEDQCACQQFrIgIgAS0AADoA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YTBhYWYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwB0AxAATwAAAGgDAAA0AAAAdAMQAE8AAABvAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAAA4EEABLAAAAxAcAAB0AAAAOBBAASwAAAMwHAAAdAAAAHAAAAAwAAAAEAAAAHQAAAB4AAAAfAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikvcnVzdGMvOTBiMzVhNjIzOWMzZDhiZGFiYzUzMGE2YTA4MTZmN2ZmODlhMGFhZi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnPJBBAASwAAAMAFAAANAAAAAAAAABAAAAAEAAAAIgAAACMAAAAkAAAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAAVAUQAF4AAABnBAAADgAAAAEAAAAAAAAAOiAAAMwFEAACAAAACgpDYXVzZWQgYnk6CgAAACUAAAAMAAAABAAAACYAAAAnAAAAHwAAAAoKc3RhY2sgYmFja3RyYWNlOlN0YWNrIGJhY2t0cmFjZToKABIGEAARAAAAUwBBuIzAAAvZBAEAAAAoAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQDJBBAASwAAAHsKAAAOAAAAL3J1c3RjLzkwYjM1YTYyMzljM2Q4YmRhYmM1MzBhNmEwODE2ZjdmZjg5YTBhYWYvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc4gGEABMAAAALQoAACQAAAAAAAAAEAAAAAQAAAAiAAAAIwAAACQAAAAgICAgOiAAAAEAAAAAAAAAAAcQAAIAAAAgICAgICAgL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnMAGwcQAFwAAAD7GAAAAQAAAAAAAAAEAAAABAAAADUAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZMoHEAAqAAAAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMA/AcQAF8AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AABsCBAADgAAAPwHEABfAAAAegIAAA0AQZyRwAALlQ8EAAAABAAAADsAAAA6AAAAPAAAAAwAAAAEAAAAPQAAAD4AAAA/AAAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNi9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAMQIEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADECBAAKQAAAK4EAAANAAAAc3RkL3NyYy9iYWNrdHJhY2UucnNvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtgAkQACgAAAAkAAAAAAAAAAIAAACoCRAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAGwJEAAUAAAAigEAAB0AAABAAAAAEAAAAAQAAABBAAAAQgAAAAEAAAAAAAAAOiBzdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzABYKEAAZAAAA0AAAABMAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleEAKEAAgAAAAc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzaAoQACQAAAAUAAAACQAAAHN0ZC9zcmMvc3luYy9v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Zm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAjhUQABAAAAB+AgAADgAAAGZyb21fc3RyX3JhZGl4X2ludDogbXVzdCBsaWUgaW4gdGhlIHJhbmdlIGBbMiwgMzZdYCAtIGZvdW5kILAVEAA8AAAALi4wMTIzNDU2Nzg5YWJjZGVmQm9ycm93TXV0RXJyb3JhbHJlYWR5IGJvcnJvd2VkOiAAABQWEAASAAAAAQAAAAAAAABbY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAABkFhAAIAAAAIQWEAASAAAAPT0hPW1hdGNoZXNhc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAAsxYQABAAAADDFhAAFwAAANoWEAAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAALMWEAAQAAAA/BYQABAAAAAMFxAACQAAANoWEAAJAAAAOiAAAAEAAAAAAAAAOBcQAAIAAAAAAAAADAAAAAQAAABlAAAAZgAAAGcAAAAgICAgIHsgLCAgewosCn0gfQpdY29yZS9zcmMvZm10L251bS5ycwAAdxcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTljb3JlL3NyYy9mbXQvbW9kLnJzZmFsc2V0cnVlAABmGBAAEwAAAKMJAAAmAAAAZhgQABMAAACsCQAAGgAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2Yg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",self.location.href));const A=wr();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));const{instance:t,module:e}=await pr(await n,A);return Dr(t,e)}var xi={},mr=function(n,A,t,e,s){var i=new Worker(xi[A]||(xi[A]=URL.createObjectURL(new Blob([n+\';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'],{type:"text/javascript"}))));return i.onmessage=function(r){var a=r.data,g=a.$e$;if(g){var o=new Error(g[0]);o.code=g[1],o.stack=g[2],s(o,null)}else s(null,a)},i.postMessage(t,e),i},eA=Uint8Array,xt=Uint16Array,Mi=Int32Array,ms=new eA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),xs=new eA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Si=new eA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Fi=function(n,A){for(var t=new xt(31),e=0;e<31;++e)t[e]=A+=1<<n[e-1];for(var s=new Mi(t[30]),e=1;e<30;++e)for(var i=t[e];i<t[e+1];++i)s[i]=i-t[e]<<5|e;return{b:t,r:s}},Ni=Fi(ms,2),Ms=Ni.b,xr=Ni.r;Ms[28]=258,xr[258]=28;for(var Mr=Fi(xs,0),ki=Mr.b,Re=new xt(32768),V=0;V<32768;++V){var ht=(V&43690)>>1|(V&21845)<<1;ht=(ht&52428)>>2|(ht&13107)<<2,ht=(ht&61680)>>4|(ht&3855)<<4,Re[V]=((ht&65280)>>8|(ht&255)<<8)>>1}for(var bt=function(n,A,t){for(var e=n.length,s=0,i=new xt(A);s<e;++s)n[s]&&++i[n[s]-1];var r=new xt(A);for(s=1;s<A;++s)r[s]=r[s-1]+i[s-1]<<1;var a;if(t){a=new xt(1<<A);var g=15-A;for(s=0;s<e;++s)if(n[s])for(var o=s<<4|n[s],I=A-n[s],B=r[n[s]-1]++<<I,Q=B|(1<<I)-1;B<=Q;++B)a[Re[B]>>g]=o}else for(a=new xt(e),s=0;s<e;++s)n[s]&&(a[s]=Re[r[n[s]-1]++]>>15-n[s]);return a},he=new eA(288),V=0;V<144;++V)he[V]=8;for(var V=144;V<256;++V)he[V]=9;for(var V=256;V<280;++V)he[V]=7;for(var V=280;V<288;++V)he[V]=8;for(var Ri=new eA(32),V=0;V<32;++V)Ri[V]=5;var Gi=bt(he,9,1),Ui=bt(Ri,5,1),Ge=function(n){for(var A=n[0],t=1;t<n.length;++t)n[t]>A&&(A=n[t]);return A},LA=function(n,A,t){var e=A/8|0;return(n[e]|n[e+1]<<8)>>(A&7)&t},Ue=function(n,A){var t=A/8|0;return(n[t]|n[t+1]<<8|n[t+2]<<16)>>(A&7)},Ss=function(n){return(n+7)/8|0},Ct=function(n,A,t){return(A==null||A<0)&&(A=0),(t==null||t>n.length)&&(t=n.length),new eA(n.subarray(A,t))},Li=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],sA=function(n,A,t){var e=new Error(A||Li[n]);if(e.code=n,Error.captureStackTrace&&Error.captureStackTrace(e,sA),!t)throw e;return e},Fs=function(n,A,t,e){var s=n.length,i=e?e.length:0;if(!s||A.f&&!A.l)return t||new eA(0);var r=!t,a=r||A.i!=2,g=A.i;r&&(t=new eA(s*3));var o=function(pA){var MA=t.length;if(pA>MA){var SA=new eA(Math.max(MA*2,pA));SA.set(t),t=SA}},I=A.f||0,B=A.p||0,Q=A.b||0,h=A.l,C=A.d,E=A.m,l=A.n,c=s*8;do{if(!h){I=LA(n,B,1);var u=LA(n,B+1,3);if(B+=3,u)if(u==1)h=Gi,C=Ui,E=9,l=5;else if(u==2){var x=LA(n,B,31)+257,M=LA(n,B+10,15)+4,p=x+LA(n,B+5,31)+1;B+=14;for(var D=new eA(p),F=new eA(19),m=0;m<M;++m)F[Si[m]]=LA(n,B+m*3,7);B+=M*3;for(var S=Ge(F),N=(1<<S)-1,k=bt(F,S,1),m=0;m<p;){var G=k[LA(n,B,N)];B+=G&15;var d=G>>4;if(d<16)D[m++]=d;else{var R=0,L=0;for(d==16?(L=3+LA(n,B,3),B+=2,R=D[m-1]):d==17?(L=3+LA(n,B,7),B+=3):d==18&&(L=11+LA(n,B,127),B+=7);L--;)D[m++]=R}}var W=D.subarray(0,x),_=D.subarray(x);E=Ge(W),l=Ge(_),h=bt(W,E,1),C=bt(_,l,1)}else sA(1);else{var d=Ss(B)+4,y=n[d-4]|n[d-3]<<8,w=d+y;if(w>s){g&&sA(0);break}a&&o(Q+y),t.set(n.subarray(d,w),Q),A.b=Q+=y,A.p=B=w*8,A.f=I;continue}if(B>c){g&&sA(0);break}}a&&o(Q+131072);for(var j=(1<<E)-1,X=(1<<l)-1,$=B;;$=B){var R=h[Ue(n,B)&j],q=R>>4;if(B+=R&15,B>c){g&&sA(0);break}if(R||sA(2),q<256)t[Q++]=q;else if(q==256){$=B,h=null;break}else{var z=q-254;if(q>264){var m=q-257,b=ms[m];z=LA(n,B,(1<<b)-1)+Ms[m],B+=b}var O=C[Ue(n,B)&X],U=O>>4;O||sA(3),B+=O&15;var _=ki[U];if(U>3){var b=xs[U];_+=Ue(n,B)&(1<<b)-1,B+=b}if(B>c){g&&sA(0);break}a&&o(Q+131072);var yA=Q+z;if(Q<_){var dA=i-_,UA=Math.min(_,yA);for(dA+Q<0&&sA(3);Q<UA;++Q)t[Q]=e[dA+Q]}for(;Q<yA;++Q)t[Q]=t[Q-_]}}A.l=h,A.p=$,A.b=Q,A.f=I,h&&(I=1,A.m=E,A.d=C,A.n=l)}while(!I);return Q!=t.length&&r?Ct(t,0,Q):t.subarray(0,Q)},Sr=new eA(0),Fr=function(n,A){var t={};for(var e in n)t[e]=n[e];for(var e in A)t[e]=A[e];return t},bi=function(n,A,t){for(var e=n(),s=n.toString(),i=s.slice(s.indexOf("[")+1,s.lastIndexOf("]")).replace(/\\s+/g,"").split(","),r=0;r<e.length;++r){var a=e[r],g=i[r];if(typeof a=="function"){A+=";"+g+"=";var o=a.toString();if(a.prototype)if(o.indexOf("[native code]")!=-1){var I=o.indexOf(" ",8)+1;A+=o.slice(I,o.indexOf("(",I))}else{A+=o;for(var B in a.prototype)A+=";"+g+".prototype."+B+"="+a.prototype[B].toString()}else A+=o}else t[g]=a}return A},Le=[],Nr=function(n){var A=[];for(var t in n)n[t].buffer&&A.push((n[t]=new n[t].constructor(n[t])).buffer);return A},kr=function(n,A,t,e){if(!Le[t]){for(var s="",i={},r=n.length-1,a=0;a<r;++a)s=bi(n[a],s,i);Le[t]={c:bi(n[r],s,i),e:i}}var g=Fr({},Le[t].e);return mr(Le[t].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+A.toString()+"}",t,g,Nr(g),e)},Rr=function(){return[eA,xt,Mi,ms,xs,Si,Ms,ki,Gi,Ui,Re,Li,bt,Ge,LA,Ue,Ss,Ct,sA,Fs,be,Yi,Ji]},Yi=function(n){return postMessage(n,[n.buffer])},Ji=function(n){return n&&{out:n.size&&new eA(n.size),dictionary:n.dictionary}},Gr=function(n,A,t,e,s,i){var r=kr(t,e,s,function(a,g){r.terminate(),i(a,g)});return r.postMessage([n,A],A.consume?[n.buffer]:[]),function(){r.terminate()}},TA=function(n,A){return n[A]|n[A+1]<<8},CA=function(n,A){return(n[A]|n[A+1]<<8|n[A+2]<<16|n[A+3]<<24)>>>0},Ns=function(n,A){return CA(n,A)+CA(n,A+4)*4294967296},Ur=function(n){(n[0]!=31||n[1]!=139||n[2]!=8)&&sA(6,"invalid gzip data");var A=n[3],t=10;A&4&&(t+=(n[10]|n[11]<<8)+2);for(var e=(A>>3&1)+(A>>4&1);e>0;e-=!n[t++]);return t+(A&2)},ks=function(){function n(A,t){typeof A=="function"&&(t=A,A={}),this.ondata=t;var e=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:e?e.length:0},this.o=new eA(32768),this.p=new eA(0),e&&this.o.set(e)}return n.prototype.e=function(A){if(this.ondata||sA(5),this.d&&sA(4),!this.p.length)this.p=A;else if(A.length){var t=new eA(this.p.length+A.length);t.set(this.p),t.set(A,this.p.length),this.p=t}},n.prototype.c=function(A){this.s.i=+(this.d=A||!1);var t=this.s.b,e=Fs(this.p,this.s,this.o);this.ondata(Ct(e,t,this.s.b),this.d),this.o=Ct(e,this.s.b-32768),this.s.b=this.o.length,this.p=Ct(this.p,this.s.p/8|0),this.s.p&=7},n.prototype.push=function(A,t){this.e(A),this.c(t)},n}();function Lr(n,A,t){return t||(t=A,A={}),typeof t!="function"&&sA(7),Gr(n,A,[Rr],function(e){return Yi(be(e.data[0],Ji(e.data[1])))},1,t)}function be(n,A){return Fs(n,{i:2},A&&A.out,A&&A.dictionary)}var Hi=function(){function n(A,t){this.v=1,this.r=0,ks.call(this,A,t)}return n.prototype.push=function(A,t){if(ks.prototype.e.call(this,A),this.r+=A.length,this.v){var e=this.p.subarray(this.v-1),s=e.length>3?Ur(e):4;if(s>e.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-e.length);this.p=e.subarray(s),this.v=0}ks.prototype.c.call(this,t),this.s.f&&!this.s.l&&!t&&(this.v=Ss(this.s.p)+9,this.s={i:0},this.o=new eA(0),this.push(new eA(0),t))},n}(),Rs=typeof TextDecoder<"u"&&new TextDecoder,br=0;try{Rs.decode(Sr,{stream:!0}),br=1}catch{}var Yr=function(n){for(var A="",t=0;;){var e=n[t++],s=(e>127)+(e>223)+(e>239);if(t+s>n.length)return{s:A,r:Ct(n,t-1)};s?s==3?(e=((e&15)<<18|(n[t++]&63)<<12|(n[t++]&63)<<6|n[t++]&63)-65536,A+=String.fromCharCode(55296|e>>10,56320|e&1023)):s&1?A+=String.fromCharCode((e&31)<<6|n[t++]&63):A+=String.fromCharCode((e&15)<<12|(n[t++]&63)<<6|n[t++]&63):A+=String.fromCharCode(e)}};function Jr(n,A){if(A){for(var t="",e=0;e<n.length;e+=16384)t+=String.fromCharCode.apply(null,n.subarray(e,e+16384));return t}else{if(Rs)return Rs.decode(n);var s=Yr(n),i=s.s,t=s.r;return t.length&&sA(8),i}}var Ti=function(n,A){return A+30+TA(n,A+26)+TA(n,A+28)},vi=function(n,A,t){var e=TA(n,A+28),s=Jr(n.subarray(A+46,A+46+e),!(TA(n,A+8)&2048)),i=A+46+e,r=CA(n,A+20),a=t&&r==4294967295?Hr(n,i):[r,CA(n,A+24),CA(n,A+42)],g=a[0],o=a[1],I=a[2];return[TA(n,A+10),g,o,s,i+TA(n,A+30)+TA(n,A+32),I]},Hr=function(n,A){for(;TA(n,A)!=1;A+=4+TA(n,A+2));return[Ns(n,A+12),Ns(n,A+4),Ns(n,A+20)]},zi=typeof queueMicrotask=="function"?queueMicrotask:typeof setTimeout=="function"?setTimeout:function(n){n()};function Tr(n,A,t){t||(t=A,A={}),typeof t!="function"&&sA(7);var e=[],s=function(){for(var l=0;l<e.length;++l)e[l]()},i={},r=function(l,c){zi(function(){t(l,c)})};zi(function(){r=t});for(var a=n.length-22;CA(n,a)!=101010256;--a)if(!a||n.length-a>65558)return r(sA(13,0,1),null),s;var g=TA(n,a+8);if(g){var o=g,I=CA(n,a+16),B=I==4294967295||o==65535;if(B){var Q=CA(n,a-12);B=CA(n,Q)==101075792,B&&(o=g=CA(n,Q+32),I=CA(n,Q+48))}for(var h=A&&A.filter,C=function(l){var c=vi(n,I,B),u=c[0],d=c[1],y=c[2],w=c[3],x=c[4],M=c[5],p=Ti(n,M);I=x;var D=function(m,S){m?(s(),r(m,null)):(S&&(i[w]=S),--g||r(null,i))};if(!h||h({name:w,size:d,originalSize:y,compression:u}))if(!u)D(null,Ct(n,p,p+d));else if(u==8){var F=n.subarray(p,p+d);if(y<524288||d>.8*y)try{D(null,be(F,{out:new eA(y)}))}catch(m){D(m,null)}else e.push(Lr(F,{size:y},D))}else D(sA(14,"unknown compression type "+u,1),null);else D(null,null)},E=0;E<o;++E)C(E)}else r(null,{});return s}function vr(n,A){for(var t={},e=n.length-22;CA(n,e)!=101010256;--e)(!e||n.length-e>65558)&&sA(13);var s=TA(n,e+8);if(!s)return{};var i=CA(n,e+16),r=i==4294967295||s==65535;if(r){var a=CA(n,e-12);r=CA(n,a)==101075792,r&&(s=CA(n,a+32),i=CA(n,a+48))}for(var g=A&&A.filter,o=0;o<s;++o){var I=vi(n,i,r),B=I[0],Q=I[1],h=I[2],C=I[3],E=I[4],l=I[5],c=Ti(n,l);i=E,(!g||g({name:C,size:Q,originalSize:h,compression:B}))&&(B?B==8?t[C]=be(n.subarray(c,c+Q),{out:new eA(h)}):sA(14,"unknown compression type "+B):t[C]=Ct(n,c,c+Q))}return t}/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */const qi="172",Gs=0,zr=1,Ki=1,_i=100,Oi=204,Zi=205,Pi=3,qr=0,Wi=300,Xi=1e3,Ce=1001,Vi=1002,Et=1003,ji=1006,Kr=1008,Ye=1009,Mt=1014,_r=1015,Je=1023,Or=1031,Yt=1033,$i="",vA="srgb",An="srgb-linear",tn="linear",Us="srgb",Jt=7680,en=519,sn=35044,Zr="300 es",Ee=2e3,nn=2001;class ce{addEventListener(A,t){this._listeners===void 0&&(this._listeners={});const e=this._listeners;e[A]===void 0&&(e[A]=[]),e[A].indexOf(t)===-1&&e[A].push(t)}hasEventListener(A,t){if(this._listeners===void 0)return!1;const e=this._listeners;return e[A]!==void 0&&e[A].indexOf(t)!==-1}removeEventListener(A,t){if(this._listeners===void 0)return;const s=this._listeners[A];if(s!==void 0){const i=s.indexOf(t);i!==-1&&s.splice(i,1)}}dispatchEvent(A){if(this._listeners===void 0)return;const e=this._listeners[A.type];if(e!==void 0){A.target=this;const s=e.slice(0);for(let i=0,r=s.length;i<r;i++)s[i].call(this,A);A.target=null}}}const EA=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function le(){const n=Math.random()*4294967295|0,A=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0;return(EA[n&255]+EA[n>>8&255]+EA[n>>16&255]+EA[n>>24&255]+"-"+EA[A&255]+EA[A>>8&255]+"-"+EA[A>>16&15|64]+EA[A>>24&255]+"-"+EA[t&63|128]+EA[t>>8&255]+"-"+EA[t>>16&255]+EA[t>>24&255]+EA[e&255]+EA[e>>8&255]+EA[e>>16&255]+EA[e>>24&255]).toLowerCase()}function T(n,A,t){return Math.max(A,Math.min(t,n))}function Pr(n,A){return(n%A+A)%A}function Ls(n,A,t){return(1-t)*n+t*A}function ue(n,A){switch(A.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function wA(n,A){switch(A.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}class DA{constructor(A=0,t=0){DA.prototype.isVector2=!0,this.x=A,this.y=t}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,t){return this.x=A,this.y=t,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){const t=this.x,e=this.y,s=A.elements;return this.x=s[0]*t+s[3]*e+s[6],this.y=s[1]*t+s[4]*e+s[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,t){return this.x=T(this.x,A.x,t.x),this.y=T(this.y,A.y,t.y),this}clampScalar(A,t){return this.x=T(this.x,A,t),this.y=T(this.y,A,t),this}clampLength(A,t){const e=this.length();return this.divideScalar(e||1).multiplyScalar(T(e,A,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const e=this.dot(A)/t;return Math.acos(T(e,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,e=this.y-A.y;return t*t+e*e}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this}lerpVectors(A,t,e){return this.x=A.x+(t.x-A.x)*e,this.y=A.y+(t.y-A.y)*e,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this}rotateAround(A,t){const e=Math.cos(t),s=Math.sin(t),i=this.x-A.x,r=this.y-A.y;return this.x=i*e-r*s+A.x,this.y=i*s+r*e+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class VA{constructor(A,t,e,s,i,r,a,g,o){VA.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,t,e,s,i,r,a,g,o)}set(A,t,e,s,i,r,a,g,o){const I=this.elements;return I[0]=A,I[1]=s,I[2]=a,I[3]=t,I[4]=i,I[5]=g,I[6]=e,I[7]=r,I[8]=o,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const t=this.elements,e=A.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],this}extractBasis(A,t,e){return A.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),e.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const t=A.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const e=A.elements,s=t.elements,i=this.elements,r=e[0],a=e[3],g=e[6],o=e[1],I=e[4],B=e[7],Q=e[2],h=e[5],C=e[8],E=s[0],l=s[3],c=s[6],u=s[1],d=s[4],y=s[7],w=s[2],x=s[5],M=s[8];return i[0]=r*E+a*u+g*w,i[3]=r*l+a*d+g*x,i[6]=r*c+a*y+g*M,i[1]=o*E+I*u+B*w,i[4]=o*l+I*d+B*x,i[7]=o*c+I*y+B*M,i[2]=Q*E+h*u+C*w,i[5]=Q*l+h*d+C*x,i[8]=Q*c+h*y+C*M,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[3]*=A,t[6]*=A,t[1]*=A,t[4]*=A,t[7]*=A,t[2]*=A,t[5]*=A,t[8]*=A,this}determinant(){const A=this.elements,t=A[0],e=A[1],s=A[2],i=A[3],r=A[4],a=A[5],g=A[6],o=A[7],I=A[8];return t*r*I-t*a*o-e*i*I+e*a*g+s*i*o-s*r*g}invert(){const A=this.elements,t=A[0],e=A[1],s=A[2],i=A[3],r=A[4],a=A[5],g=A[6],o=A[7],I=A[8],B=I*r-a*o,Q=a*g-I*i,h=o*i-r*g,C=t*B+e*Q+s*h;if(C===0)return this.set(0,0,0,0,0,0,0,0,0);const E=1/C;return A[0]=B*E,A[1]=(s*o-I*e)*E,A[2]=(a*e-s*r)*E,A[3]=Q*E,A[4]=(I*t-s*g)*E,A[5]=(s*i-a*t)*E,A[6]=h*E,A[7]=(e*g-o*t)*E,A[8]=(r*t-e*i)*E,this}transpose(){let A;const t=this.elements;return A=t[1],t[1]=t[3],t[3]=A,A=t[2],t[2]=t[6],t[6]=A,A=t[5],t[5]=t[7],t[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const t=this.elements;return A[0]=t[0],A[1]=t[3],A[2]=t[6],A[3]=t[1],A[4]=t[4],A[5]=t[7],A[6]=t[2],A[7]=t[5],A[8]=t[8],this}setUvTransform(A,t,e,s,i,r,a){const g=Math.cos(i),o=Math.sin(i);return this.set(e*g,e*o,-e*(g*r+o*a)+r+A,-s*o,s*g,-s*(-o*r+g*a)+a+t,0,0,1),this}scale(A,t){return this.premultiply(bs.makeScale(A,t)),this}rotate(A){return this.premultiply(bs.makeRotation(-A)),this}translate(A,t){return this.premultiply(bs.makeTranslation(A,t)),this}makeTranslation(A,t){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,t,0,0,1),this}makeRotation(A){const t=Math.cos(A),e=Math.sin(A);return this.set(t,-e,0,e,t,0,0,0,1),this}makeScale(A,t){return this.set(A,0,0,0,t,0,0,0,1),this}equals(A){const t=this.elements,e=A.elements;for(let s=0;s<9;s++)if(t[s]!==e[s])return!1;return!0}fromArray(A,t=0){for(let e=0;e<9;e++)this.elements[e]=A[e+t];return this}toArray(A=[],t=0){const e=this.elements;return A[t]=e[0],A[t+1]=e[1],A[t+2]=e[2],A[t+3]=e[3],A[t+4]=e[4],A[t+5]=e[5],A[t+6]=e[6],A[t+7]=e[7],A[t+8]=e[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const bs=new VA;function Wr(n){for(let A=n.length-1;A>=0;--A)if(n[A]>=65535)return!0;return!1}function rn(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}const an=new VA().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),gn=new VA().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Xr(){const n={enabled:!0,workingColorSpace:An,spaces:{},convert:function(s,i,r){return this.enabled===!1||i===r||!i||!r||(this.spaces[i].transfer===Us&&(s.r=tt(s.r),s.g=tt(s.g),s.b=tt(s.b)),this.spaces[i].primaries!==this.spaces[r].primaries&&(s.applyMatrix3(this.spaces[i].toXYZ),s.applyMatrix3(this.spaces[r].fromXYZ)),this.spaces[r].transfer===Us&&(s.r=Ht(s.r),s.g=Ht(s.g),s.b=Ht(s.b))),s},fromWorkingColorSpace:function(s,i){return this.convert(s,this.workingColorSpace,i)},toWorkingColorSpace:function(s,i){return this.convert(s,i,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===$i?tn:this.spaces[s].transfer},getLuminanceCoefficients:function(s,i=this.workingColorSpace){return s.fromArray(this.spaces[i].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,i,r){return s.copy(this.spaces[i].toXYZ).multiply(this.spaces[r].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace}},A=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],e=[.3127,.329];return n.define({[An]:{primaries:A,whitePoint:e,transfer:tn,toXYZ:an,fromXYZ:gn,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:vA},outputColorSpaceConfig:{drawingBufferColorSpace:vA}},[vA]:{primaries:A,whitePoint:e,transfer:Us,toXYZ:an,fromXYZ:gn,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:vA}}}),n}const zA=Xr();function tt(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Ht(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let Tt;class Vr{static getDataURL(A){if(/^data:/i.test(A.src)||typeof HTMLCanvasElement>"u")return A.src;let t;if(A instanceof HTMLCanvasElement)t=A;else{Tt===void 0&&(Tt=rn("canvas")),Tt.width=A.width,Tt.height=A.height;const e=Tt.getContext("2d");A instanceof ImageData?e.putImageData(A,0,0):e.drawImage(A,0,0,A.width,A.height),t=Tt}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",A),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(A){if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap){const t=rn("canvas");t.width=A.width,t.height=A.height;const e=t.getContext("2d");e.drawImage(A,0,0,A.width,A.height);const s=e.getImageData(0,0,A.width,A.height),i=s.data;for(let r=0;r<i.length;r++)i[r]=tt(i[r]/255)*255;return e.putImageData(s,0,0),t}else if(A.data){const t=A.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(tt(t[e]/255)*255):t[e]=tt(t[e]);return{data:t,width:A.width,height:A.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),A}}let jr=0;class on{constructor(A=null){this.isSource=!0,Object.defineProperty(this,"id",{value:jr++}),this.uuid=le(),this.data=A,this.dataReady=!0,this.version=0}set needsUpdate(A){A===!0&&this.version++}toJSON(A){const t=A===void 0||typeof A=="string";if(!t&&A.images[this.uuid]!==void 0)return A.images[this.uuid];const e={uuid:this.uuid,url:""},s=this.data;if(s!==null){let i;if(Array.isArray(s)){i=[];for(let r=0,a=s.length;r<a;r++)s[r].isDataTexture?i.push(Ys(s[r].image)):i.push(Ys(s[r]))}else i=Ys(s);e.url=i}return t||(A.images[this.uuid]=e),e}}function Ys(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?Vr.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let $r=0;class jA extends ce{constructor(A=jA.DEFAULT_IMAGE,t=jA.DEFAULT_MAPPING,e=Ce,s=Ce,i=ji,r=Kr,a=Je,g=Ye,o=jA.DEFAULT_ANISOTROPY,I=$i){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:$r++}),this.uuid=le(),this.name="",this.source=new on(A),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=e,this.wrapT=s,this.magFilter=i,this.minFilter=r,this.anisotropy=o,this.format=a,this.internalFormat=null,this.type=g,this.offset=new DA(0,0),this.repeat=new DA(1,1),this.center=new DA(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new VA,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=I,this.userData={},this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(A=null){this.source.data=A}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(A){return this.name=A.name,this.source=A.source,this.mipmaps=A.mipmaps.slice(0),this.mapping=A.mapping,this.channel=A.channel,this.wrapS=A.wrapS,this.wrapT=A.wrapT,this.magFilter=A.magFilter,this.minFilter=A.minFilter,this.anisotropy=A.anisotropy,this.format=A.format,this.internalFormat=A.internalFormat,this.type=A.type,this.offset.copy(A.offset),this.repeat.copy(A.repeat),this.center.copy(A.center),this.rotation=A.rotation,this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrix.copy(A.matrix),this.generateMipmaps=A.generateMipmaps,this.premultiplyAlpha=A.premultiplyAlpha,this.flipY=A.flipY,this.unpackAlignment=A.unpackAlignment,this.colorSpace=A.colorSpace,this.renderTarget=A.renderTarget,this.isRenderTargetTexture=A.isRenderTargetTexture,this.userData=JSON.parse(JSON.stringify(A.userData)),this.needsUpdate=!0,this}toJSON(A){const t=A===void 0||typeof A=="string";if(!t&&A.textures[this.uuid]!==void 0)return A.textures[this.uuid];const e={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(A).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(e.userData=this.userData),t||(A.textures[this.uuid]=e),e}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==Wi)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case Xi:A.x=A.x-Math.floor(A.x);break;case Ce:A.x=A.x<0?0:1;break;case Vi:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case Xi:A.y=A.y-Math.floor(A.y);break;case Ce:A.y=A.y<0?0:1;break;case Vi:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(A){A===!0&&this.pmremVersion++}}jA.DEFAULT_IMAGE=null,jA.DEFAULT_MAPPING=Wi,jA.DEFAULT_ANISOTROPY=1;class fA{constructor(A=0,t=0,e=0,s=1){fA.prototype.isVector4=!0,this.x=A,this.y=t,this.z=e,this.w=s}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,t,e,s){return this.x=A,this.y=t,this.z=e,this.w=s,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this.w=A.w+t.w,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this.w+=A.w*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this.w=A.w-t.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){const t=this.x,e=this.y,s=this.z,i=this.w,r=A.elements;return this.x=r[0]*t+r[4]*e+r[8]*s+r[12]*i,this.y=r[1]*t+r[5]*e+r[9]*s+r[13]*i,this.z=r[2]*t+r[6]*e+r[10]*s+r[14]*i,this.w=r[3]*t+r[7]*e+r[11]*s+r[15]*i,this}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this.w/=A.w,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);const t=Math.sqrt(1-A.w*A.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/t,this.y=A.y/t,this.z=A.z/t),this}setAxisAngleFromRotationMatrix(A){let t,e,s,i;const g=A.elements,o=g[0],I=g[4],B=g[8],Q=g[1],h=g[5],C=g[9],E=g[2],l=g[6],c=g[10];if(Math.abs(I-Q)<.01&&Math.abs(B-E)<.01&&Math.abs(C-l)<.01){if(Math.abs(I+Q)<.1&&Math.abs(B+E)<.1&&Math.abs(C+l)<.1&&Math.abs(o+h+c-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const d=(o+1)/2,y=(h+1)/2,w=(c+1)/2,x=(I+Q)/4,M=(B+E)/4,p=(C+l)/4;return d>y&&d>w?d<.01?(e=0,s=.707106781,i=.707106781):(e=Math.sqrt(d),s=x/e,i=M/e):y>w?y<.01?(e=.707106781,s=0,i=.707106781):(s=Math.sqrt(y),e=x/s,i=p/s):w<.01?(e=.707106781,s=.707106781,i=0):(i=Math.sqrt(w),e=M/i,s=p/i),this.set(e,s,i,t),this}let u=Math.sqrt((l-C)*(l-C)+(B-E)*(B-E)+(Q-I)*(Q-I));return Math.abs(u)<.001&&(u=1),this.x=(l-C)/u,this.y=(B-E)/u,this.z=(Q-I)/u,this.w=Math.acos((o+h+c-1)/2),this}setFromMatrixPosition(A){const t=A.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,t){return this.x=T(this.x,A.x,t.x),this.y=T(this.y,A.y,t.y),this.z=T(this.z,A.z,t.z),this.w=T(this.w,A.w,t.w),this}clampScalar(A,t){return this.x=T(this.x,A,t),this.y=T(this.y,A,t),this.z=T(this.z,A,t),this.w=T(this.w,A,t),this}clampLength(A,t){const e=this.length();return this.divideScalar(e||1).multiplyScalar(T(e,A,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this.w+=(A.w-this.w)*t,this}lerpVectors(A,t,e){return this.x=A.x+(t.x-A.x)*e,this.y=A.y+(t.y-A.y)*e,this.z=A.z+(t.z-A.z)*e,this.w=A.w+(t.w-A.w)*e,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this.w=A[t+3],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A[t+3]=this.w,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this.w=A.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Aa extends ce{constructor(A=1,t=1,e={}){super(),this.isRenderTarget=!0,this.width=A,this.height=t,this.depth=1,this.scissor=new fA(0,0,A,t),this.scissorTest=!1,this.viewport=new fA(0,0,A,t);const s={width:A,height:t,depth:1};e=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:ji,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},e);const i=new jA(s,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace);i.flipY=!1,i.generateMipmaps=e.generateMipmaps,i.internalFormat=e.internalFormat,this.textures=[];const r=e.count;for(let a=0;a<r;a++)this.textures[a]=i.clone(),this.textures[a].isRenderTargetTexture=!0,this.textures[a].renderTarget=this;this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=e.depthTexture,this.samples=e.samples}get texture(){return this.textures[0]}set texture(A){this.textures[0]=A}set depthTexture(A){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),A!==null&&(A.renderTarget=this),this._depthTexture=A}get depthTexture(){return this._depthTexture}setSize(A,t,e=1){if(this.width!==A||this.height!==t||this.depth!==e){this.width=A,this.height=t,this.depth=e;for(let s=0,i=this.textures.length;s<i;s++)this.textures[s].image.width=A,this.textures[s].image.height=t,this.textures[s].image.depth=e;this.dispose()}this.viewport.set(0,0,A,t),this.scissor.set(0,0,A,t)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.scissor.copy(A.scissor),this.scissorTest=A.scissorTest,this.viewport.copy(A.viewport),this.textures.length=0;for(let e=0,s=A.textures.length;e<s;e++)this.textures[e]=A.textures[e].clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;const t=Object.assign({},A.texture.image);return this.texture.source=new on(t),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,this.resolveDepthBuffer=A.resolveDepthBuffer,this.resolveStencilBuffer=A.resolveStencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class ta extends Aa{constructor(A=1,t=1,e={}){super(A,t,e),this.isWebGLRenderTarget=!0}}class ct extends jA{constructor(A=null,t=1,e=1,s=1){super(null),this.isDataArrayTexture=!0,this.image={data:A,width:t,height:e,depth:s},this.magFilter=Et,this.minFilter=Et,this.wrapR=Ce,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(A){this.layerUpdates.add(A)}clearLayerUpdates(){this.layerUpdates.clear()}}class In extends ta{constructor(A=1,t=1,e=1,s={}){super(A,t,s),this.isWebGLArrayRenderTarget=!0,this.depth=e,this.texture=new ct(null,A,t,e),this.texture.isRenderTargetTexture=!0}}class gA{constructor(A=0,t=0,e=0,s=1){this.isQuaternion=!0,this._x=A,this._y=t,this._z=e,this._w=s}static slerpFlat(A,t,e,s,i,r,a){let g=e[s+0],o=e[s+1],I=e[s+2],B=e[s+3];const Q=i[r+0],h=i[r+1],C=i[r+2],E=i[r+3];if(a===0){A[t+0]=g,A[t+1]=o,A[t+2]=I,A[t+3]=B;return}if(a===1){A[t+0]=Q,A[t+1]=h,A[t+2]=C,A[t+3]=E;return}if(B!==E||g!==Q||o!==h||I!==C){let l=1-a;const c=g*Q+o*h+I*C+B*E,u=c>=0?1:-1,d=1-c*c;if(d>Number.EPSILON){const w=Math.sqrt(d),x=Math.atan2(w,c*u);l=Math.sin(l*x)/w,a=Math.sin(a*x)/w}const y=a*u;if(g=g*l+Q*y,o=o*l+h*y,I=I*l+C*y,B=B*l+E*y,l===1-a){const w=1/Math.sqrt(g*g+o*o+I*I+B*B);g*=w,o*=w,I*=w,B*=w}}A[t]=g,A[t+1]=o,A[t+2]=I,A[t+3]=B}static multiplyQuaternionsFlat(A,t,e,s,i,r){const a=e[s],g=e[s+1],o=e[s+2],I=e[s+3],B=i[r],Q=i[r+1],h=i[r+2],C=i[r+3];return A[t]=a*C+I*B+g*h-o*Q,A[t+1]=g*C+I*Q+o*B-a*h,A[t+2]=o*C+I*h+a*Q-g*B,A[t+3]=I*C-a*B-g*Q-o*h,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,t,e,s){return this._x=A,this._y=t,this._z=e,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,t=!0){const e=A._x,s=A._y,i=A._z,r=A._order,a=Math.cos,g=Math.sin,o=a(e/2),I=a(s/2),B=a(i/2),Q=g(e/2),h=g(s/2),C=g(i/2);switch(r){case"XYZ":this._x=Q*I*B+o*h*C,this._y=o*h*B-Q*I*C,this._z=o*I*C+Q*h*B,this._w=o*I*B-Q*h*C;break;case"YXZ":this._x=Q*I*B+o*h*C,this._y=o*h*B-Q*I*C,this._z=o*I*C-Q*h*B,this._w=o*I*B+Q*h*C;break;case"ZXY":this._x=Q*I*B-o*h*C,this._y=o*h*B+Q*I*C,this._z=o*I*C+Q*h*B,this._w=o*I*B-Q*h*C;break;case"ZYX":this._x=Q*I*B-o*h*C,this._y=o*h*B+Q*I*C,this._z=o*I*C-Q*h*B,this._w=o*I*B+Q*h*C;break;case"YZX":this._x=Q*I*B+o*h*C,this._y=o*h*B+Q*I*C,this._z=o*I*C-Q*h*B,this._w=o*I*B-Q*h*C;break;case"XZY":this._x=Q*I*B-o*h*C,this._y=o*h*B-Q*I*C,this._z=o*I*C+Q*h*B,this._w=o*I*B+Q*h*C;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+r)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,t){const e=t/2,s=Math.sin(e);return this._x=A.x*s,this._y=A.y*s,this._z=A.z*s,this._w=Math.cos(e),this._onChangeCallback(),this}setFromRotationMatrix(A){const t=A.elements,e=t[0],s=t[4],i=t[8],r=t[1],a=t[5],g=t[9],o=t[2],I=t[6],B=t[10],Q=e+a+B;if(Q>0){const h=.5/Math.sqrt(Q+1);this._w=.25/h,this._x=(I-g)*h,this._y=(i-o)*h,this._z=(r-s)*h}else if(e>a&&e>B){const h=2*Math.sqrt(1+e-a-B);this._w=(I-g)/h,this._x=.25*h,this._y=(s+r)/h,this._z=(i+o)/h}else if(a>B){const h=2*Math.sqrt(1+a-e-B);this._w=(i-o)/h,this._x=(s+r)/h,this._y=.25*h,this._z=(g+I)/h}else{const h=2*Math.sqrt(1+B-e-a);this._w=(r-s)/h,this._x=(i+o)/h,this._y=(g+I)/h,this._z=.25*h}return this._onChangeCallback(),this}setFromUnitVectors(A,t){let e=A.dot(t)+1;return e<Number.EPSILON?(e=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=e):(this._x=0,this._y=-A.z,this._z=A.y,this._w=e)):(this._x=A.y*t.z-A.z*t.y,this._y=A.z*t.x-A.x*t.z,this._z=A.x*t.y-A.y*t.x,this._w=e),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(T(this.dot(A),-1,1)))}rotateTowards(A,t){const e=this.angleTo(A);if(e===0)return this;const s=Math.min(1,t/e);return this.slerp(A,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,t){const e=A._x,s=A._y,i=A._z,r=A._w,a=t._x,g=t._y,o=t._z,I=t._w;return this._x=e*I+r*a+s*o-i*g,this._y=s*I+r*g+i*a-e*o,this._z=i*I+r*o+e*g-s*a,this._w=r*I-e*a-s*g-i*o,this._onChangeCallback(),this}slerp(A,t){if(t===0)return this;if(t===1)return this.copy(A);const e=this._x,s=this._y,i=this._z,r=this._w;let a=r*A._w+e*A._x+s*A._y+i*A._z;if(a<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,a=-a):this.copy(A),a>=1)return this._w=r,this._x=e,this._y=s,this._z=i,this;const g=1-a*a;if(g<=Number.EPSILON){const h=1-t;return this._w=h*r+t*this._w,this._x=h*e+t*this._x,this._y=h*s+t*this._y,this._z=h*i+t*this._z,this.normalize(),this}const o=Math.sqrt(g),I=Math.atan2(o,a),B=Math.sin((1-t)*I)/o,Q=Math.sin(t*I)/o;return this._w=r*B+this._w*Q,this._x=e*B+this._x*Q,this._y=s*B+this._y*Q,this._z=i*B+this._z*Q,this._onChangeCallback(),this}slerpQuaternions(A,t,e){return this.copy(A).slerp(t,e)}random(){const A=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),e=Math.random(),s=Math.sqrt(1-e),i=Math.sqrt(e);return this.set(s*Math.sin(A),s*Math.cos(A),i*Math.sin(t),i*Math.cos(t))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,t=0){return this._x=A[t],this._y=A[t+1],this._z=A[t+2],this._w=A[t+3],this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._w,A}fromBufferAttribute(A,t){return this._x=A.getX(t),this._y=A.getY(t),this._z=A.getZ(t),this._w=A.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class f{constructor(A=0,t=0,e=0){f.prototype.isVector3=!0,this.x=A,this.y=t,this.z=e}set(A,t,e){return e===void 0&&(e=this.z),this.x=A,this.y=t,this.z=e,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,t){return this.x=A.x*t.x,this.y=A.y*t.y,this.z=A.z*t.z,this}applyEuler(A){return this.applyQuaternion(Bn.setFromEuler(A))}applyAxisAngle(A,t){return this.applyQuaternion(Bn.setFromAxisAngle(A,t))}applyMatrix3(A){const t=this.x,e=this.y,s=this.z,i=A.elements;return this.x=i[0]*t+i[3]*e+i[6]*s,this.y=i[1]*t+i[4]*e+i[7]*s,this.z=i[2]*t+i[5]*e+i[8]*s,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const t=this.x,e=this.y,s=this.z,i=A.elements,r=1/(i[3]*t+i[7]*e+i[11]*s+i[15]);return this.x=(i[0]*t+i[4]*e+i[8]*s+i[12])*r,this.y=(i[1]*t+i[5]*e+i[9]*s+i[13])*r,this.z=(i[2]*t+i[6]*e+i[10]*s+i[14])*r,this}applyQuaternion(A){const t=this.x,e=this.y,s=this.z,i=A.x,r=A.y,a=A.z,g=A.w,o=2*(r*s-a*e),I=2*(a*t-i*s),B=2*(i*e-r*t);return this.x=t+g*o+r*B-a*I,this.y=e+g*I+a*o-i*B,this.z=s+g*B+i*I-r*o,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const t=this.x,e=this.y,s=this.z,i=A.elements;return this.x=i[0]*t+i[4]*e+i[8]*s,this.y=i[1]*t+i[5]*e+i[9]*s,this.z=i[2]*t+i[6]*e+i[10]*s,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,t){return this.x=T(this.x,A.x,t.x),this.y=T(this.y,A.y,t.y),this.z=T(this.z,A.z,t.z),this}clampScalar(A,t){return this.x=T(this.x,A,t),this.y=T(this.y,A,t),this.z=T(this.z,A,t),this}clampLength(A,t){const e=this.length();return this.divideScalar(e||1).multiplyScalar(T(e,A,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this}lerpVectors(A,t,e){return this.x=A.x+(t.x-A.x)*e,this.y=A.y+(t.y-A.y)*e,this.z=A.z+(t.z-A.z)*e,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,t){const e=A.x,s=A.y,i=A.z,r=t.x,a=t.y,g=t.z;return this.x=s*g-i*a,this.y=i*r-e*g,this.z=e*a-s*r,this}projectOnVector(A){const t=A.lengthSq();if(t===0)return this.set(0,0,0);const e=A.dot(this)/t;return this.copy(A).multiplyScalar(e)}projectOnPlane(A){return Js.copy(this).projectOnVector(A),this.sub(Js)}reflect(A){return this.sub(Js.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const e=this.dot(A)/t;return Math.acos(T(e,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,e=this.y-A.y,s=this.z-A.z;return t*t+e*e+s*s}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,t,e){const s=Math.sin(t)*A;return this.x=s*Math.sin(e),this.y=Math.cos(t)*A,this.z=s*Math.cos(e),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,t,e){return this.x=A*Math.sin(t),this.y=e,this.z=A*Math.cos(t),this}setFromMatrixPosition(A){const t=A.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(A){const t=this.setFromMatrixColumn(A,0).length(),e=this.setFromMatrixColumn(A,1).length(),s=this.setFromMatrixColumn(A,2).length();return this.x=t,this.y=e,this.z=s,this}setFromMatrixColumn(A,t){return this.fromArray(A.elements,t*4)}setFromMatrix3Column(A,t){return this.fromArray(A.elements,t*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,t=Math.random()*2-1,e=Math.sqrt(1-t*t);return this.x=e*Math.cos(A),this.y=t,this.z=e*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Js=new f,Bn=new gA;class vt{constructor(A=new f(1/0,1/0,1/0),t=new f(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=t}set(A,t){return this.min.copy(A),this.max.copy(t),this}setFromArray(A){this.makeEmpty();for(let t=0,e=A.length;t<e;t+=3)this.expandByPoint(qA.fromArray(A,t));return this}setFromBufferAttribute(A){this.makeEmpty();for(let t=0,e=A.count;t<e;t++)this.expandByPoint(qA.fromBufferAttribute(A,t));return this}setFromPoints(A){this.makeEmpty();for(let t=0,e=A.length;t<e;t++)this.expandByPoint(A[t]);return this}setFromCenterAndSize(A,t){const e=qA.copy(t).multiplyScalar(.5);return this.min.copy(A).sub(e),this.max.copy(A).add(e),this}setFromObject(A,t=!1){return this.makeEmpty(),this.expandByObject(A,t)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,t=!1){A.updateWorldMatrix(!1,!1);const e=A.geometry;if(e!==void 0){const i=e.getAttribute("position");if(t===!0&&i!==void 0&&A.isInstancedMesh!==!0)for(let r=0,a=i.count;r<a;r++)A.isMesh===!0?A.getVertexPosition(r,qA):qA.fromBufferAttribute(i,r),qA.applyMatrix4(A.matrixWorld),this.expandByPoint(qA);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),He.copy(A.boundingBox)):(e.boundingBox===null&&e.computeBoundingBox(),He.copy(e.boundingBox)),He.applyMatrix4(A.matrixWorld),this.union(He)}const s=A.children;for(let i=0,r=s.length;i<r;i++)this.expandByObject(s[i],t);return this}containsPoint(A){return A.x>=this.min.x&&A.x<=this.max.x&&A.y>=this.min.y&&A.y<=this.max.y&&A.z>=this.min.z&&A.z<=this.max.z}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,t){return t.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return A.max.x>=this.min.x&&A.min.x<=this.max.x&&A.max.y>=this.min.y&&A.min.y<=this.max.y&&A.max.z>=this.min.z&&A.min.z<=this.max.z}intersectsSphere(A){return this.clampPoint(A.center,qA),qA.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let t,e;return A.normal.x>0?(t=A.normal.x*this.min.x,e=A.normal.x*this.max.x):(t=A.normal.x*this.max.x,e=A.normal.x*this.min.x),A.normal.y>0?(t+=A.normal.y*this.min.y,e+=A.normal.y*this.max.y):(t+=A.normal.y*this.max.y,e+=A.normal.y*this.min.y),A.normal.z>0?(t+=A.normal.z*this.min.z,e+=A.normal.z*this.max.z):(t+=A.normal.z*this.max.z,e+=A.normal.z*this.min.z),t<=-A.constant&&e>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(de),Te.subVectors(this.max,de),zt.subVectors(A.a,de),qt.subVectors(A.b,de),Kt.subVectors(A.c,de),lt.subVectors(qt,zt),ut.subVectors(Kt,qt),St.subVectors(zt,Kt);let t=[0,-lt.z,lt.y,0,-ut.z,ut.y,0,-St.z,St.y,lt.z,0,-lt.x,ut.z,0,-ut.x,St.z,0,-St.x,-lt.y,lt.x,0,-ut.y,ut.x,0,-St.y,St.x,0];return!Hs(t,zt,qt,Kt,Te)||(t=[1,0,0,0,1,0,0,0,1],!Hs(t,zt,qt,Kt,Te))?!1:(ve.crossVectors(lt,ut),t=[ve.x,ve.y,ve.z],Hs(t,zt,qt,Kt,Te))}clampPoint(A,t){return t.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,qA).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(qA).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(et[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),et[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),et[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),et[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),et[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),et[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),et[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),et[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(et),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const et=[new f,new f,new f,new f,new f,new f,new f,new f],qA=new f,He=new vt,zt=new f,qt=new f,Kt=new f,lt=new f,ut=new f,St=new f,de=new f,Te=new f,ve=new f,Ft=new f;function Hs(n,A,t,e,s){for(let i=0,r=n.length-3;i<=r;i+=3){Ft.fromArray(n,i);const a=s.x*Math.abs(Ft.x)+s.y*Math.abs(Ft.y)+s.z*Math.abs(Ft.z),g=A.dot(Ft),o=t.dot(Ft),I=e.dot(Ft);if(Math.max(-Math.max(g,o,I),Math.min(g,o,I))>a)return!1}return!0}const ea=new vt,fe=new f,Ts=new f;class Qn{constructor(A=new f,t=-1){this.isSphere=!0,this.center=A,this.radius=t}set(A,t){return this.center.copy(A),this.radius=t,this}setFromPoints(A,t){const e=this.center;t!==void 0?e.copy(t):ea.setFromPoints(A).getCenter(e);let s=0;for(let i=0,r=A.length;i<r;i++)s=Math.max(s,e.distanceToSquared(A[i]));return this.radius=Math.sqrt(s),this}copy(A){return this.center.copy(A.center),this.radius=A.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(A){return A.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(A){return A.distanceTo(this.center)-this.radius}intersectsSphere(A){const t=this.radius+A.radius;return A.center.distanceToSquared(this.center)<=t*t}intersectsBox(A){return A.intersectsSphere(this)}intersectsPlane(A){return Math.abs(A.distanceToPoint(this.center))<=this.radius}clampPoint(A,t){const e=this.center.distanceToSquared(A);return t.copy(A),e>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;fe.subVectors(A,this.center);const t=fe.lengthSq();if(t>this.radius*this.radius){const e=Math.sqrt(t),s=(e-this.radius)*.5;this.center.addScaledVector(fe,s/e),this.radius+=s}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(Ts.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(fe.copy(A.center).add(Ts)),this.expandByPoint(fe.copy(A.center).sub(Ts))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}}const st=new f,vs=new f,ze=new f,dt=new f,zs=new f,qe=new f,qs=new f;class sa{constructor(A=new f,t=new f(0,0,-1)){this.origin=A,this.direction=t}set(A,t){return this.origin.copy(A),this.direction.copy(t),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,t){return t.copy(this.origin).addScaledVector(this.direction,A)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,st)),this}closestPointToPoint(A,t){t.subVectors(A,this.origin);const e=t.dot(this.direction);return e<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,e)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){const t=st.subVectors(A,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(A):(st.copy(this.origin).addScaledVector(this.direction,t),st.distanceToSquared(A))}distanceSqToSegment(A,t,e,s){vs.copy(A).add(t).multiplyScalar(.5),ze.copy(t).sub(A).normalize(),dt.copy(this.origin).sub(vs);const i=A.distanceTo(t)*.5,r=-this.direction.dot(ze),a=dt.dot(this.direction),g=-dt.dot(ze),o=dt.lengthSq(),I=Math.abs(1-r*r);let B,Q,h,C;if(I>0)if(B=r*g-a,Q=r*a-g,C=i*I,B>=0)if(Q>=-C)if(Q<=C){const E=1/I;B*=E,Q*=E,h=B*(B+r*Q+2*a)+Q*(r*B+Q+2*g)+o}else Q=i,B=Math.max(0,-(r*Q+a)),h=-B*B+Q*(Q+2*g)+o;else Q=-i,B=Math.max(0,-(r*Q+a)),h=-B*B+Q*(Q+2*g)+o;else Q<=-C?(B=Math.max(0,-(-r*i+a)),Q=B>0?-i:Math.min(Math.max(-i,-g),i),h=-B*B+Q*(Q+2*g)+o):Q<=C?(B=0,Q=Math.min(Math.max(-i,-g),i),h=Q*(Q+2*g)+o):(B=Math.max(0,-(r*i+a)),Q=B>0?i:Math.min(Math.max(-i,-g),i),h=-B*B+Q*(Q+2*g)+o);else Q=r>0?-i:i,B=Math.max(0,-(r*Q+a)),h=-B*B+Q*(Q+2*g)+o;return e&&e.copy(this.origin).addScaledVector(this.direction,B),s&&s.copy(vs).addScaledVector(ze,Q),h}intersectSphere(A,t){st.subVectors(A.center,this.origin);const e=st.dot(this.direction),s=st.dot(st)-e*e,i=A.radius*A.radius;if(s>i)return null;const r=Math.sqrt(i-s),a=e-r,g=e+r;return g<0?null:a<0?this.at(g,t):this.at(a,t)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){const t=A.normal.dot(this.direction);if(t===0)return A.distanceToPoint(this.origin)===0?0:null;const e=-(this.origin.dot(A.normal)+A.constant)/t;return e>=0?e:null}intersectPlane(A,t){const e=this.distanceToPlane(A);return e===null?null:this.at(e,t)}intersectsPlane(A){const t=A.distanceToPoint(this.origin);return t===0||A.normal.dot(this.direction)*t<0}intersectBox(A,t){let e,s,i,r,a,g;const o=1/this.direction.x,I=1/this.direction.y,B=1/this.direction.z,Q=this.origin;return o>=0?(e=(A.min.x-Q.x)*o,s=(A.max.x-Q.x)*o):(e=(A.max.x-Q.x)*o,s=(A.min.x-Q.x)*o),I>=0?(i=(A.min.y-Q.y)*I,r=(A.max.y-Q.y)*I):(i=(A.max.y-Q.y)*I,r=(A.min.y-Q.y)*I),e>r||i>s||((i>e||isNaN(e))&&(e=i),(r<s||isNaN(s))&&(s=r),B>=0?(a=(A.min.z-Q.z)*B,g=(A.max.z-Q.z)*B):(a=(A.max.z-Q.z)*B,g=(A.min.z-Q.z)*B),e>g||a>s)||((a>e||e!==e)&&(e=a),(g<s||s!==s)&&(s=g),s<0)?null:this.at(e>=0?e:s,t)}intersectsBox(A){return this.intersectBox(A,st)!==null}intersectTriangle(A,t,e,s,i){zs.subVectors(t,A),qe.subVectors(e,A),qs.crossVectors(zs,qe);let r=this.direction.dot(qs),a;if(r>0){if(s)return null;a=1}else if(r<0)a=-1,r=-r;else return null;dt.subVectors(this.origin,A);const g=a*this.direction.dot(qe.crossVectors(dt,qe));if(g<0)return null;const o=a*this.direction.dot(zs.cross(dt));if(o<0||g+o>r)return null;const I=-a*dt.dot(qs);return I<0?null:this.at(I/r,i)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class cA{constructor(A,t,e,s,i,r,a,g,o,I,B,Q,h,C,E,l){cA.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A!==void 0&&this.set(A,t,e,s,i,r,a,g,o,I,B,Q,h,C,E,l)}set(A,t,e,s,i,r,a,g,o,I,B,Q,h,C,E,l){const c=this.elements;return c[0]=A,c[4]=t,c[8]=e,c[12]=s,c[1]=i,c[5]=r,c[9]=a,c[13]=g,c[2]=o,c[6]=I,c[10]=B,c[14]=Q,c[3]=h,c[7]=C,c[11]=E,c[15]=l,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new cA().fromArray(this.elements)}copy(A){const t=this.elements,e=A.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],this}copyPosition(A){const t=this.elements,e=A.elements;return t[12]=e[12],t[13]=e[13],t[14]=e[14],this}setFromMatrix3(A){const t=A.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(A,t,e){return A.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this}makeBasis(A,t,e){return this.set(A.x,t.x,e.x,0,A.y,t.y,e.y,0,A.z,t.z,e.z,0,0,0,0,1),this}extractRotation(A){const t=this.elements,e=A.elements,s=1/_t.setFromMatrixColumn(A,0).length(),i=1/_t.setFromMatrixColumn(A,1).length(),r=1/_t.setFromMatrixColumn(A,2).length();return t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t[3]=0,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=0,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(A){const t=this.elements,e=A.x,s=A.y,i=A.z,r=Math.cos(e),a=Math.sin(e),g=Math.cos(s),o=Math.sin(s),I=Math.cos(i),B=Math.sin(i);if(A.order==="XYZ"){const Q=r*I,h=r*B,C=a*I,E=a*B;t[0]=g*I,t[4]=-g*B,t[8]=o,t[1]=h+C*o,t[5]=Q-E*o,t[9]=-a*g,t[2]=E-Q*o,t[6]=C+h*o,t[10]=r*g}else if(A.order==="YXZ"){const Q=g*I,h=g*B,C=o*I,E=o*B;t[0]=Q+E*a,t[4]=C*a-h,t[8]=r*o,t[1]=r*B,t[5]=r*I,t[9]=-a,t[2]=h*a-C,t[6]=E+Q*a,t[10]=r*g}else if(A.order==="ZXY"){const Q=g*I,h=g*B,C=o*I,E=o*B;t[0]=Q-E*a,t[4]=-r*B,t[8]=C+h*a,t[1]=h+C*a,t[5]=r*I,t[9]=E-Q*a,t[2]=-r*o,t[6]=a,t[10]=r*g}else if(A.order==="ZYX"){const Q=r*I,h=r*B,C=a*I,E=a*B;t[0]=g*I,t[4]=C*o-h,t[8]=Q*o+E,t[1]=g*B,t[5]=E*o+Q,t[9]=h*o-C,t[2]=-o,t[6]=a*g,t[10]=r*g}else if(A.order==="YZX"){const Q=r*g,h=r*o,C=a*g,E=a*o;t[0]=g*I,t[4]=E-Q*B,t[8]=C*B+h,t[1]=B,t[5]=r*I,t[9]=-a*I,t[2]=-o*I,t[6]=h*B+C,t[10]=Q-E*B}else if(A.order==="XZY"){const Q=r*g,h=r*o,C=a*g,E=a*o;t[0]=g*I,t[4]=-B,t[8]=o*I,t[1]=Q*B+E,t[5]=r*I,t[9]=h*B-C,t[2]=C*B-h,t[6]=a*I,t[10]=E*B+Q}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(A){return this.compose(ia,A,na)}lookAt(A,t,e){const s=this.elements;return NA.subVectors(A,t),NA.lengthSq()===0&&(NA.z=1),NA.normalize(),ft.crossVectors(e,NA),ft.lengthSq()===0&&(Math.abs(e.z)===1?NA.x+=1e-4:NA.z+=1e-4,NA.normalize(),ft.crossVectors(e,NA)),ft.normalize(),Ke.crossVectors(NA,ft),s[0]=ft.x,s[4]=Ke.x,s[8]=NA.x,s[1]=ft.y,s[5]=Ke.y,s[9]=NA.y,s[2]=ft.z,s[6]=Ke.z,s[10]=NA.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const e=A.elements,s=t.elements,i=this.elements,r=e[0],a=e[4],g=e[8],o=e[12],I=e[1],B=e[5],Q=e[9],h=e[13],C=e[2],E=e[6],l=e[10],c=e[14],u=e[3],d=e[7],y=e[11],w=e[15],x=s[0],M=s[4],p=s[8],D=s[12],F=s[1],m=s[5],S=s[9],N=s[13],k=s[2],G=s[6],R=s[10],L=s[14],W=s[3],_=s[7],j=s[11],X=s[15];return i[0]=r*x+a*F+g*k+o*W,i[4]=r*M+a*m+g*G+o*_,i[8]=r*p+a*S+g*R+o*j,i[12]=r*D+a*N+g*L+o*X,i[1]=I*x+B*F+Q*k+h*W,i[5]=I*M+B*m+Q*G+h*_,i[9]=I*p+B*S+Q*R+h*j,i[13]=I*D+B*N+Q*L+h*X,i[2]=C*x+E*F+l*k+c*W,i[6]=C*M+E*m+l*G+c*_,i[10]=C*p+E*S+l*R+c*j,i[14]=C*D+E*N+l*L+c*X,i[3]=u*x+d*F+y*k+w*W,i[7]=u*M+d*m+y*G+w*_,i[11]=u*p+d*S+y*R+w*j,i[15]=u*D+d*N+y*L+w*X,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[4]*=A,t[8]*=A,t[12]*=A,t[1]*=A,t[5]*=A,t[9]*=A,t[13]*=A,t[2]*=A,t[6]*=A,t[10]*=A,t[14]*=A,t[3]*=A,t[7]*=A,t[11]*=A,t[15]*=A,this}determinant(){const A=this.elements,t=A[0],e=A[4],s=A[8],i=A[12],r=A[1],a=A[5],g=A[9],o=A[13],I=A[2],B=A[6],Q=A[10],h=A[14],C=A[3],E=A[7],l=A[11],c=A[15];return C*(+i*g*B-s*o*B-i*a*Q+e*o*Q+s*a*h-e*g*h)+E*(+t*g*h-t*o*Q+i*r*Q-s*r*h+s*o*I-i*g*I)+l*(+t*o*B-t*a*h-i*r*B+e*r*h+i*a*I-e*o*I)+c*(-s*a*I-t*g*B+t*a*Q+s*r*B-e*r*Q+e*g*I)}transpose(){const A=this.elements;let t;return t=A[1],A[1]=A[4],A[4]=t,t=A[2],A[2]=A[8],A[8]=t,t=A[6],A[6]=A[9],A[9]=t,t=A[3],A[3]=A[12],A[12]=t,t=A[7],A[7]=A[13],A[13]=t,t=A[11],A[11]=A[14],A[14]=t,this}setPosition(A,t,e){const s=this.elements;return A.isVector3?(s[12]=A.x,s[13]=A.y,s[14]=A.z):(s[12]=A,s[13]=t,s[14]=e),this}invert(){const A=this.elements,t=A[0],e=A[1],s=A[2],i=A[3],r=A[4],a=A[5],g=A[6],o=A[7],I=A[8],B=A[9],Q=A[10],h=A[11],C=A[12],E=A[13],l=A[14],c=A[15],u=B*l*o-E*Q*o+E*g*h-a*l*h-B*g*c+a*Q*c,d=C*Q*o-I*l*o-C*g*h+r*l*h+I*g*c-r*Q*c,y=I*E*o-C*B*o+C*a*h-r*E*h-I*a*c+r*B*c,w=C*B*g-I*E*g-C*a*Q+r*E*Q+I*a*l-r*B*l,x=t*u+e*d+s*y+i*w;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const M=1/x;return A[0]=u*M,A[1]=(E*Q*i-B*l*i-E*s*h+e*l*h+B*s*c-e*Q*c)*M,A[2]=(a*l*i-E*g*i+E*s*o-e*l*o-a*s*c+e*g*c)*M,A[3]=(B*g*i-a*Q*i-B*s*o+e*Q*o+a*s*h-e*g*h)*M,A[4]=d*M,A[5]=(I*l*i-C*Q*i+C*s*h-t*l*h-I*s*c+t*Q*c)*M,A[6]=(C*g*i-r*l*i-C*s*o+t*l*o+r*s*c-t*g*c)*M,A[7]=(r*Q*i-I*g*i+I*s*o-t*Q*o-r*s*h+t*g*h)*M,A[8]=y*M,A[9]=(C*B*i-I*E*i-C*e*h+t*E*h+I*e*c-t*B*c)*M,A[10]=(r*E*i-C*a*i+C*e*o-t*E*o-r*e*c+t*a*c)*M,A[11]=(I*a*i-r*B*i-I*e*o+t*B*o+r*e*h-t*a*h)*M,A[12]=w*M,A[13]=(I*E*s-C*B*s+C*e*Q-t*E*Q-I*e*l+t*B*l)*M,A[14]=(C*a*s-r*E*s-C*e*g+t*E*g+r*e*l-t*a*l)*M,A[15]=(r*B*s-I*a*s+I*e*g-t*B*g-r*e*Q+t*a*Q)*M,this}scale(A){const t=this.elements,e=A.x,s=A.y,i=A.z;return t[0]*=e,t[4]*=s,t[8]*=i,t[1]*=e,t[5]*=s,t[9]*=i,t[2]*=e,t[6]*=s,t[10]*=i,t[3]*=e,t[7]*=s,t[11]*=i,this}getMaxScaleOnAxis(){const A=this.elements,t=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],e=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],s=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(t,e,s))}makeTranslation(A,t,e){return A.isVector3?this.set(1,0,0,A.x,0,1,0,A.y,0,0,1,A.z,0,0,0,1):this.set(1,0,0,A,0,1,0,t,0,0,1,e,0,0,0,1),this}makeRotationX(A){const t=Math.cos(A),e=Math.sin(A);return this.set(1,0,0,0,0,t,-e,0,0,e,t,0,0,0,0,1),this}makeRotationY(A){const t=Math.cos(A),e=Math.sin(A);return this.set(t,0,e,0,0,1,0,0,-e,0,t,0,0,0,0,1),this}makeRotationZ(A){const t=Math.cos(A),e=Math.sin(A);return this.set(t,-e,0,0,e,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,t){const e=Math.cos(t),s=Math.sin(t),i=1-e,r=A.x,a=A.y,g=A.z,o=i*r,I=i*a;return this.set(o*r+e,o*a-s*g,o*g+s*a,0,o*a+s*g,I*a+e,I*g-s*r,0,o*g-s*a,I*g+s*r,i*g*g+e,0,0,0,0,1),this}makeScale(A,t,e){return this.set(A,0,0,0,0,t,0,0,0,0,e,0,0,0,0,1),this}makeShear(A,t,e,s,i,r){return this.set(1,e,i,0,A,1,r,0,t,s,1,0,0,0,0,1),this}compose(A,t,e){const s=this.elements,i=t._x,r=t._y,a=t._z,g=t._w,o=i+i,I=r+r,B=a+a,Q=i*o,h=i*I,C=i*B,E=r*I,l=r*B,c=a*B,u=g*o,d=g*I,y=g*B,w=e.x,x=e.y,M=e.z;return s[0]=(1-(E+c))*w,s[1]=(h+y)*w,s[2]=(C-d)*w,s[3]=0,s[4]=(h-y)*x,s[5]=(1-(Q+c))*x,s[6]=(l+u)*x,s[7]=0,s[8]=(C+d)*M,s[9]=(l-u)*M,s[10]=(1-(Q+E))*M,s[11]=0,s[12]=A.x,s[13]=A.y,s[14]=A.z,s[15]=1,this}decompose(A,t,e){const s=this.elements;let i=_t.set(s[0],s[1],s[2]).length();const r=_t.set(s[4],s[5],s[6]).length(),a=_t.set(s[8],s[9],s[10]).length();this.determinant()<0&&(i=-i),A.x=s[12],A.y=s[13],A.z=s[14],KA.copy(this);const o=1/i,I=1/r,B=1/a;return KA.elements[0]*=o,KA.elements[1]*=o,KA.elements[2]*=o,KA.elements[4]*=I,KA.elements[5]*=I,KA.elements[6]*=I,KA.elements[8]*=B,KA.elements[9]*=B,KA.elements[10]*=B,t.setFromRotationMatrix(KA),e.x=i,e.y=r,e.z=a,this}makePerspective(A,t,e,s,i,r,a=Ee){const g=this.elements,o=2*i/(t-A),I=2*i/(e-s),B=(t+A)/(t-A),Q=(e+s)/(e-s);let h,C;if(a===Ee)h=-(r+i)/(r-i),C=-2*r*i/(r-i);else if(a===nn)h=-r/(r-i),C=-r*i/(r-i);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return g[0]=o,g[4]=0,g[8]=B,g[12]=0,g[1]=0,g[5]=I,g[9]=Q,g[13]=0,g[2]=0,g[6]=0,g[10]=h,g[14]=C,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this}makeOrthographic(A,t,e,s,i,r,a=Ee){const g=this.elements,o=1/(t-A),I=1/(e-s),B=1/(r-i),Q=(t+A)*o,h=(e+s)*I;let C,E;if(a===Ee)C=(r+i)*B,E=-2*B;else if(a===nn)C=i*B,E=-1*B;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return g[0]=2*o,g[4]=0,g[8]=0,g[12]=-Q,g[1]=0,g[5]=2*I,g[9]=0,g[13]=-h,g[2]=0,g[6]=0,g[10]=E,g[14]=-C,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this}equals(A){const t=this.elements,e=A.elements;for(let s=0;s<16;s++)if(t[s]!==e[s])return!1;return!0}fromArray(A,t=0){for(let e=0;e<16;e++)this.elements[e]=A[e+t];return this}toArray(A=[],t=0){const e=this.elements;return A[t]=e[0],A[t+1]=e[1],A[t+2]=e[2],A[t+3]=e[3],A[t+4]=e[4],A[t+5]=e[5],A[t+6]=e[6],A[t+7]=e[7],A[t+8]=e[8],A[t+9]=e[9],A[t+10]=e[10],A[t+11]=e[11],A[t+12]=e[12],A[t+13]=e[13],A[t+14]=e[14],A[t+15]=e[15],A}}const _t=new f,KA=new cA,ia=new f(0,0,0),na=new f(1,1,1),ft=new f,Ke=new f,NA=new f,hn=new cA,Cn=new gA;class Nt{constructor(A=0,t=0,e=0,s=Nt.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=t,this._z=e,this._order=s}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get order(){return this._order}set order(A){this._order=A,this._onChangeCallback()}set(A,t,e,s=this._order){return this._x=A,this._y=t,this._z=e,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,t=this._order,e=!0){const s=A.elements,i=s[0],r=s[4],a=s[8],g=s[1],o=s[5],I=s[9],B=s[2],Q=s[6],h=s[10];switch(t){case"XYZ":this._y=Math.asin(T(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-I,h),this._z=Math.atan2(-r,i)):(this._x=Math.atan2(Q,o),this._z=0);break;case"YXZ":this._x=Math.asin(-T(I,-1,1)),Math.abs(I)<.9999999?(this._y=Math.atan2(a,h),this._z=Math.atan2(g,o)):(this._y=Math.atan2(-B,i),this._z=0);break;case"ZXY":this._x=Math.asin(T(Q,-1,1)),Math.abs(Q)<.9999999?(this._y=Math.atan2(-B,h),this._z=Math.atan2(-r,o)):(this._y=0,this._z=Math.atan2(g,i));break;case"ZYX":this._y=Math.asin(-T(B,-1,1)),Math.abs(B)<.9999999?(this._x=Math.atan2(Q,h),this._z=Math.atan2(g,i)):(this._x=0,this._z=Math.atan2(-r,o));break;case"YZX":this._z=Math.asin(T(g,-1,1)),Math.abs(g)<.9999999?(this._x=Math.atan2(-I,o),this._y=Math.atan2(-B,i)):(this._x=0,this._y=Math.atan2(a,h));break;case"XZY":this._z=Math.asin(-T(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(Q,o),this._y=Math.atan2(a,i)):(this._x=Math.atan2(-I,h),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,e===!0&&this._onChangeCallback(),this}setFromQuaternion(A,t,e){return hn.makeRotationFromQuaternion(A),this.setFromRotationMatrix(hn,t,e)}setFromVector3(A,t=this._order){return this.set(A.x,A.y,A.z,t)}reorder(A){return Cn.setFromEuler(this),this.setFromQuaternion(Cn,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Nt.DEFAULT_ORDER="XYZ";class ra{constructor(){this.mask=1}set(A){this.mask=(1<<A|0)>>>0}enable(A){this.mask|=1<<A|0}enableAll(){this.mask=-1}toggle(A){this.mask^=1<<A|0}disable(A){this.mask&=~(1<<A|0)}disableAll(){this.mask=0}test(A){return(this.mask&A.mask)!==0}isEnabled(A){return(this.mask&(1<<A|0))!==0}}let aa=0;const En=new f,Ot=new gA,it=new cA,_e=new f,ye=new f,ga=new f,oa=new gA,cn=new f(1,0,0),ln=new f(0,1,0),un=new f(0,0,1),dn={type:"added"},Ia={type:"removed"},Zt={type:"childadded",child:null},Ks={type:"childremoved",child:null};class mA extends ce{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:aa++}),this.uuid=le(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=mA.DEFAULT_UP.clone();const A=new f,t=new Nt,e=new gA,s=new f(1,1,1);function i(){e.setFromEuler(t,!1)}function r(){t.setFromQuaternion(e,void 0,!1)}t._onChange(i),e._onChange(r),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:A},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:e},scale:{configurable:!0,enumerable:!0,value:s},modelViewMatrix:{value:new cA},normalMatrix:{value:new VA}}),this.matrix=new cA,this.matrixWorld=new cA,this.matrixAutoUpdate=mA.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=mA.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new ra,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(A){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(A),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(A){return this.quaternion.premultiply(A),this}setRotationFromAxisAngle(A,t){this.quaternion.setFromAxisAngle(A,t)}setRotationFromEuler(A){this.quaternion.setFromEuler(A,!0)}setRotationFromMatrix(A){this.quaternion.setFromRotationMatrix(A)}setRotationFromQuaternion(A){this.quaternion.copy(A)}rotateOnAxis(A,t){return Ot.setFromAxisAngle(A,t),this.quaternion.multiply(Ot),this}rotateOnWorldAxis(A,t){return Ot.setFromAxisAngle(A,t),this.quaternion.premultiply(Ot),this}rotateX(A){return this.rotateOnAxis(cn,A)}rotateY(A){return this.rotateOnAxis(ln,A)}rotateZ(A){return this.rotateOnAxis(un,A)}translateOnAxis(A,t){return En.copy(A).applyQuaternion(this.quaternion),this.position.add(En.multiplyScalar(t)),this}translateX(A){return this.translateOnAxis(cn,A)}translateY(A){return this.translateOnAxis(ln,A)}translateZ(A){return this.translateOnAxis(un,A)}localToWorld(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(this.matrixWorld)}worldToLocal(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(it.copy(this.matrixWorld).invert())}lookAt(A,t,e){A.isVector3?_e.copy(A):_e.set(A,t,e);const s=this.parent;this.updateWorldMatrix(!0,!1),ye.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?it.lookAt(ye,_e,this.up):it.lookAt(_e,ye,this.up),this.quaternion.setFromRotationMatrix(it),s&&(it.extractRotation(s.matrixWorld),Ot.setFromRotationMatrix(it),this.quaternion.premultiply(Ot.invert()))}add(A){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return A===this?(console.error("THREE.Object3D.add: object can\'t be added as a child of itself.",A),this):(A&&A.isObject3D?(A.removeFromParent(),A.parent=this,this.children.push(A),A.dispatchEvent(dn),Zt.child=A,this.dispatchEvent(Zt),Zt.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",A),this)}remove(A){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}const t=this.children.indexOf(A);return t!==-1&&(A.parent=null,this.children.splice(t,1),A.dispatchEvent(Ia),Ks.child=A,this.dispatchEvent(Ks),Ks.child=null),this}removeFromParent(){const A=this.parent;return A!==null&&A.remove(this),this}clear(){return this.remove(...this.children)}attach(A){return this.updateWorldMatrix(!0,!1),it.copy(this.matrixWorld).invert(),A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),it.multiply(A.parent.matrixWorld)),A.applyMatrix4(it),A.removeFromParent(),A.parent=this,this.children.push(A),A.updateWorldMatrix(!1,!0),A.dispatchEvent(dn),Zt.child=A,this.dispatchEvent(Zt),Zt.child=null,this}getObjectById(A){return this.getObjectByProperty("id",A)}getObjectByName(A){return this.getObjectByProperty("name",A)}getObjectByProperty(A,t){if(this[A]===t)return this;for(let e=0,s=this.children.length;e<s;e++){const r=this.children[e].getObjectByProperty(A,t);if(r!==void 0)return r}}getObjectsByProperty(A,t,e=[]){this[A]===t&&e.push(this);const s=this.children;for(let i=0,r=s.length;i<r;i++)s[i].getObjectsByProperty(A,t,e);return e}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ye,A,ga),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ye,oa,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return A.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(A){A(this);const t=this.children;for(let e=0,s=t.length;e<s;e++)t[e].traverse(A)}traverseVisible(A){if(this.visible===!1)return;A(this);const t=this.children;for(let e=0,s=t.length;e<s;e++)t[e].traverseVisible(A)}traverseAncestors(A){const t=this.parent;t!==null&&(A(t),t.traverseAncestors(A))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,A=!0);const t=this.children;for(let e=0,s=t.length;e<s;e++)t[e].updateMatrixWorld(A)}updateWorldMatrix(A,t){const e=this.parent;if(A===!0&&e!==null&&e.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const s=this.children;for(let i=0,r=s.length;i<r;i++)s[i].updateWorldMatrix(!1,!0)}}toJSON(A){const t=A===void 0||typeof A=="string",e={};t&&(A={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},e.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const s={};s.uuid=this.uuid,s.type=this.type,this.name!==""&&(s.name=this.name),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.visibility=this._visibility,s.active=this._active,s.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.geometryCount=this._geometryCount,s.matricesTexture=this._matricesTexture.toJSON(A),this._colorsTexture!==null&&(s.colorsTexture=this._colorsTexture.toJSON(A)),this.boundingSphere!==null&&(s.boundingSphere={center:s.boundingSphere.center.toArray(),radius:s.boundingSphere.radius}),this.boundingBox!==null&&(s.boundingBox={min:s.boundingBox.min.toArray(),max:s.boundingBox.max.toArray()}));function i(a,g){return a[g.uuid]===void 0&&(a[g.uuid]=g.toJSON(A)),g.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=i(A.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const g=a.shapes;if(Array.isArray(g))for(let o=0,I=g.length;o<I;o++){const B=g[o];i(A.shapes,B)}else i(A.shapes,g)}}if(this.isSkinnedMesh&&(s.bindMode=this.bindMode,s.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(i(A.skeletons,this.skeleton),s.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const a=[];for(let g=0,o=this.material.length;g<o;g++)a.push(i(A.materials,this.material[g]));s.material=a}else s.material=i(A.materials,this.material);if(this.children.length>0){s.children=[];for(let a=0;a<this.children.length;a++)s.children.push(this.children[a].toJSON(A).object)}if(this.animations.length>0){s.animations=[];for(let a=0;a<this.animations.length;a++){const g=this.animations[a];s.animations.push(i(A.animations,g))}}if(t){const a=r(A.geometries),g=r(A.materials),o=r(A.textures),I=r(A.images),B=r(A.shapes),Q=r(A.skeletons),h=r(A.animations),C=r(A.nodes);a.length>0&&(e.geometries=a),g.length>0&&(e.materials=g),o.length>0&&(e.textures=o),I.length>0&&(e.images=I),B.length>0&&(e.shapes=B),Q.length>0&&(e.skeletons=Q),h.length>0&&(e.animations=h),C.length>0&&(e.nodes=C)}return e.object=s,e;function r(a){const g=[];for(const o in a){const I=a[o];delete I.metadata,g.push(I)}return g}}clone(A){return new this.constructor().copy(this,A)}copy(A,t=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.animations=A.animations.slice(),this.userData=JSON.parse(JSON.stringify(A.userData)),t===!0)for(let e=0;e<A.children.length;e++){const s=A.children[e];this.add(s.clone())}return this}}mA.DEFAULT_UP=new f(0,1,0),mA.DEFAULT_MATRIX_AUTO_UPDATE=!0,mA.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const _A=new f,nt=new f,_s=new f,rt=new f,Pt=new f,Wt=new f,fn=new f,Os=new f,Zs=new f,Ps=new f,Ws=new fA,Xs=new fA,Vs=new fA;class OA{constructor(A=new f,t=new f,e=new f){this.a=A,this.b=t,this.c=e}static getNormal(A,t,e,s){s.subVectors(e,t),_A.subVectors(A,t),s.cross(_A);const i=s.lengthSq();return i>0?s.multiplyScalar(1/Math.sqrt(i)):s.set(0,0,0)}static getBarycoord(A,t,e,s,i){_A.subVectors(s,t),nt.subVectors(e,t),_s.subVectors(A,t);const r=_A.dot(_A),a=_A.dot(nt),g=_A.dot(_s),o=nt.dot(nt),I=nt.dot(_s),B=r*o-a*a;if(B===0)return i.set(0,0,0),null;const Q=1/B,h=(o*g-a*I)*Q,C=(r*I-a*g)*Q;return i.set(1-h-C,C,h)}static containsPoint(A,t,e,s){return this.getBarycoord(A,t,e,s,rt)===null?!1:rt.x>=0&&rt.y>=0&&rt.x+rt.y<=1}static getInterpolation(A,t,e,s,i,r,a,g){return this.getBarycoord(A,t,e,s,rt)===null?(g.x=0,g.y=0,"z"in g&&(g.z=0),"w"in g&&(g.w=0),null):(g.setScalar(0),g.addScaledVector(i,rt.x),g.addScaledVector(r,rt.y),g.addScaledVector(a,rt.z),g)}static getInterpolatedAttribute(A,t,e,s,i,r){return Ws.setScalar(0),Xs.setScalar(0),Vs.setScalar(0),Ws.fromBufferAttribute(A,t),Xs.fromBufferAttribute(A,e),Vs.fromBufferAttribute(A,s),r.setScalar(0),r.addScaledVector(Ws,i.x),r.addScaledVector(Xs,i.y),r.addScaledVector(Vs,i.z),r}static isFrontFacing(A,t,e,s){return _A.subVectors(e,t),nt.subVectors(A,t),_A.cross(nt).dot(s)<0}set(A,t,e){return this.a.copy(A),this.b.copy(t),this.c.copy(e),this}setFromPointsAndIndices(A,t,e,s){return this.a.copy(A[t]),this.b.copy(A[e]),this.c.copy(A[s]),this}setFromAttributeAndIndices(A,t,e,s){return this.a.fromBufferAttribute(A,t),this.b.fromBufferAttribute(A,e),this.c.fromBufferAttribute(A,s),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return _A.subVectors(this.c,this.b),nt.subVectors(this.a,this.b),_A.cross(nt).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return OA.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,t){return OA.getBarycoord(A,this.a,this.b,this.c,t)}getInterpolation(A,t,e,s,i){return OA.getInterpolation(A,this.a,this.b,this.c,t,e,s,i)}containsPoint(A){return OA.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return OA.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,t){const e=this.a,s=this.b,i=this.c;let r,a;Pt.subVectors(s,e),Wt.subVectors(i,e),Os.subVectors(A,e);const g=Pt.dot(Os),o=Wt.dot(Os);if(g<=0&&o<=0)return t.copy(e);Zs.subVectors(A,s);const I=Pt.dot(Zs),B=Wt.dot(Zs);if(I>=0&&B<=I)return t.copy(s);const Q=g*B-I*o;if(Q<=0&&g>=0&&I<=0)return r=g/(g-I),t.copy(e).addScaledVector(Pt,r);Ps.subVectors(A,i);const h=Pt.dot(Ps),C=Wt.dot(Ps);if(C>=0&&h<=C)return t.copy(i);const E=h*o-g*C;if(E<=0&&o>=0&&C<=0)return a=o/(o-C),t.copy(e).addScaledVector(Wt,a);const l=I*C-h*B;if(l<=0&&B-I>=0&&h-C>=0)return fn.subVectors(i,s),a=(B-I)/(B-I+(h-C)),t.copy(s).addScaledVector(fn,a);const c=1/(l+E+Q);return r=E*c,a=Q*c,t.copy(e).addScaledVector(Pt,r).addScaledVector(Wt,a)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}}const yn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},yt={h:0,s:0,l:0},Oe={h:0,s:0,l:0};function js(n,A,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(A-n)*6*t:t<1/2?A:t<2/3?n+(A-n)*6*(2/3-t):n}class kt{constructor(A,t,e){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,t,e)}set(A,t,e){if(t===void 0&&e===void 0){const s=A;s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s)}else this.setRGB(A,t,e);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,t=vA){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,zA.toWorkingColorSpace(this,t),this}setRGB(A,t,e,s=zA.workingColorSpace){return this.r=A,this.g=t,this.b=e,zA.toWorkingColorSpace(this,s),this}setHSL(A,t,e,s=zA.workingColorSpace){if(A=Pr(A,1),t=T(t,0,1),e=T(e,0,1),t===0)this.r=this.g=this.b=e;else{const i=e<=.5?e*(1+t):e+t-e*t,r=2*e-i;this.r=js(r,i,A+1/3),this.g=js(r,i,A),this.b=js(r,i,A-1/3)}return zA.toWorkingColorSpace(this,s),this}setStyle(A,t=vA){function e(i){i!==void 0&&parseFloat(i)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let s;if(s=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let i;const r=s[1],a=s[2];switch(r){case"rgb":case"rgba":if(i=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return e(i[4]),this.setRGB(Math.min(255,parseInt(i[1],10))/255,Math.min(255,parseInt(i[2],10))/255,Math.min(255,parseInt(i[3],10))/255,t);if(i=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return e(i[4]),this.setRGB(Math.min(100,parseInt(i[1],10))/100,Math.min(100,parseInt(i[2],10))/100,Math.min(100,parseInt(i[3],10))/100,t);break;case"hsl":case"hsla":if(i=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return e(i[4]),this.setHSL(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(s=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const i=s[1],r=i.length;if(r===3)return this.setRGB(parseInt(i.charAt(0),16)/15,parseInt(i.charAt(1),16)/15,parseInt(i.charAt(2),16)/15,t);if(r===6)return this.setHex(parseInt(i,16),t);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,t);return this}setColorName(A,t=vA){const e=yn[A.toLowerCase()];return e!==void 0?this.setHex(e,t):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=tt(A.r),this.g=tt(A.g),this.b=tt(A.b),this}copyLinearToSRGB(A){return this.r=Ht(A.r),this.g=Ht(A.g),this.b=Ht(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=vA){return zA.fromWorkingColorSpace(lA.copy(this),A),Math.round(T(lA.r*255,0,255))*65536+Math.round(T(lA.g*255,0,255))*256+Math.round(T(lA.b*255,0,255))}getHexString(A=vA){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,t=zA.workingColorSpace){zA.fromWorkingColorSpace(lA.copy(this),t);const e=lA.r,s=lA.g,i=lA.b,r=Math.max(e,s,i),a=Math.min(e,s,i);let g,o;const I=(a+r)/2;if(a===r)g=0,o=0;else{const B=r-a;switch(o=I<=.5?B/(r+a):B/(2-r-a),r){case e:g=(s-i)/B+(s<i?6:0);break;case s:g=(i-e)/B+2;break;case i:g=(e-s)/B+4;break}g/=6}return A.h=g,A.s=o,A.l=I,A}getRGB(A,t=zA.workingColorSpace){return zA.fromWorkingColorSpace(lA.copy(this),t),A.r=lA.r,A.g=lA.g,A.b=lA.b,A}getStyle(A=vA){zA.fromWorkingColorSpace(lA.copy(this),A);const t=lA.r,e=lA.g,s=lA.b;return A!==vA?`color(${A} ${t.toFixed(3)} ${e.toFixed(3)} ${s.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(e*255)},${Math.round(s*255)})`}offsetHSL(A,t,e){return this.getHSL(yt),this.setHSL(yt.h+A,yt.s+t,yt.l+e)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,t){return this.r=A.r+t.r,this.g=A.g+t.g,this.b=A.b+t.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,t){return this.r+=(A.r-this.r)*t,this.g+=(A.g-this.g)*t,this.b+=(A.b-this.b)*t,this}lerpColors(A,t,e){return this.r=A.r+(t.r-A.r)*e,this.g=A.g+(t.g-A.g)*e,this.b=A.b+(t.b-A.b)*e,this}lerpHSL(A,t){this.getHSL(yt),A.getHSL(Oe);const e=Ls(yt.h,Oe.h,t),s=Ls(yt.s,Oe.s,t),i=Ls(yt.l,Oe.l,t);return this.setHSL(e,s,i),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const t=this.r,e=this.g,s=this.b,i=A.elements;return this.r=i[0]*t+i[3]*e+i[6]*s,this.g=i[1]*t+i[4]*e+i[7]*s,this.b=i[2]*t+i[5]*e+i[8]*s,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,t=0){return this.r=A[t],this.g=A[t+1],this.b=A[t+2],this}toArray(A=[],t=0){return A[t]=this.r,A[t+1]=this.g,A[t+2]=this.b,A}fromBufferAttribute(A,t){return this.r=A.getX(t),this.g=A.getY(t),this.b=A.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const lA=new kt;kt.NAMES=yn;let Ba=0;class pn extends ce{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Ba++}),this.uuid=le(),this.name="",this.type="Material",this.blending=Ki,this.side=Gs,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=Oi,this.blendDst=Zi,this.blendEquation=_i,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new kt(0,0,0),this.blendAlpha=0,this.depthFunc=Pi,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=en,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Jt,this.stencilZFail=Jt,this.stencilZPass=Jt,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(A){this._alphaTest>0!=A>0&&this.version++,this._alphaTest=A}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(A){if(A!==void 0)for(const t in A){const e=A[t];if(e===void 0){console.warn(`THREE.Material: parameter \'${t}\' has value of undefined.`);continue}const s=this[t];if(s===void 0){console.warn(`THREE.Material: \'${t}\' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(e):s&&s.isVector3&&e&&e.isVector3?s.copy(e):this[t]=e}}toJSON(A){const t=A===void 0||typeof A=="string";t&&(A={textures:{},images:{}});const e={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.color&&this.color.isColor&&(e.color=this.color.getHex()),this.roughness!==void 0&&(e.roughness=this.roughness),this.metalness!==void 0&&(e.metalness=this.metalness),this.sheen!==void 0&&(e.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(e.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(e.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(e.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(e.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(e.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(e.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(e.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(e.shininess=this.shininess),this.clearcoat!==void 0&&(e.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(e.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(e.clearcoatMap=this.clearcoatMap.toJSON(A).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(e.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(A).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(e.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(A).uuid,e.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(e.dispersion=this.dispersion),this.iridescence!==void 0&&(e.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(e.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(e.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(e.iridescenceMap=this.iridescenceMap.toJSON(A).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(e.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(A).uuid),this.anisotropy!==void 0&&(e.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(e.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(e.anisotropyMap=this.anisotropyMap.toJSON(A).uuid),this.map&&this.map.isTexture&&(e.map=this.map.toJSON(A).uuid),this.matcap&&this.matcap.isTexture&&(e.matcap=this.matcap.toJSON(A).uuid),this.alphaMap&&this.alphaMap.isTexture&&(e.alphaMap=this.alphaMap.toJSON(A).uuid),this.lightMap&&this.lightMap.isTexture&&(e.lightMap=this.lightMap.toJSON(A).uuid,e.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(e.aoMap=this.aoMap.toJSON(A).uuid,e.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(e.bumpMap=this.bumpMap.toJSON(A).uuid,e.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(e.normalMap=this.normalMap.toJSON(A).uuid,e.normalMapType=this.normalMapType,e.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(e.displacementMap=this.displacementMap.toJSON(A).uuid,e.displacementScale=this.displacementScale,e.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(e.roughnessMap=this.roughnessMap.toJSON(A).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(e.metalnessMap=this.metalnessMap.toJSON(A).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(e.emissiveMap=this.emissiveMap.toJSON(A).uuid),this.specularMap&&this.specularMap.isTexture&&(e.specularMap=this.specularMap.toJSON(A).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(e.specularIntensityMap=this.specularIntensityMap.toJSON(A).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(e.specularColorMap=this.specularColorMap.toJSON(A).uuid),this.envMap&&this.envMap.isTexture&&(e.envMap=this.envMap.toJSON(A).uuid,this.combine!==void 0&&(e.combine=this.combine)),this.envMapRotation!==void 0&&(e.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(e.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(e.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(e.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(e.gradientMap=this.gradientMap.toJSON(A).uuid),this.transmission!==void 0&&(e.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(e.transmissionMap=this.transmissionMap.toJSON(A).uuid),this.thickness!==void 0&&(e.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(e.thicknessMap=this.thicknessMap.toJSON(A).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(e.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(e.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(e.size=this.size),this.shadowSide!==null&&(e.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(e.sizeAttenuation=this.sizeAttenuation),this.blending!==Ki&&(e.blending=this.blending),this.side!==Gs&&(e.side=this.side),this.vertexColors===!0&&(e.vertexColors=!0),this.opacity<1&&(e.opacity=this.opacity),this.transparent===!0&&(e.transparent=!0),this.blendSrc!==Oi&&(e.blendSrc=this.blendSrc),this.blendDst!==Zi&&(e.blendDst=this.blendDst),this.blendEquation!==_i&&(e.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(e.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(e.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(e.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(e.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(e.blendAlpha=this.blendAlpha),this.depthFunc!==Pi&&(e.depthFunc=this.depthFunc),this.depthTest===!1&&(e.depthTest=this.depthTest),this.depthWrite===!1&&(e.depthWrite=this.depthWrite),this.colorWrite===!1&&(e.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(e.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==en&&(e.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(e.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(e.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Jt&&(e.stencilFail=this.stencilFail),this.stencilZFail!==Jt&&(e.stencilZFail=this.stencilZFail),this.stencilZPass!==Jt&&(e.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(e.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(e.rotation=this.rotation),this.polygonOffset===!0&&(e.polygonOffset=!0),this.polygonOffsetFactor!==0&&(e.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(e.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(e.linewidth=this.linewidth),this.dashSize!==void 0&&(e.dashSize=this.dashSize),this.gapSize!==void 0&&(e.gapSize=this.gapSize),this.scale!==void 0&&(e.scale=this.scale),this.dithering===!0&&(e.dithering=!0),this.alphaTest>0&&(e.alphaTest=this.alphaTest),this.alphaHash===!0&&(e.alphaHash=!0),this.alphaToCoverage===!0&&(e.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(e.premultipliedAlpha=!0),this.forceSinglePass===!0&&(e.forceSinglePass=!0),this.wireframe===!0&&(e.wireframe=!0),this.wireframeLinewidth>1&&(e.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(e.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(e.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(e.flatShading=!0),this.visible===!1&&(e.visible=!1),this.toneMapped===!1&&(e.toneMapped=!1),this.fog===!1&&(e.fog=!1),Object.keys(this.userData).length>0&&(e.userData=this.userData);function s(i){const r=[];for(const a in i){const g=i[a];delete g.metadata,r.push(g)}return r}if(t){const i=s(A.textures),r=s(A.images);i.length>0&&(e.textures=i),r.length>0&&(e.images=r)}return e}clone(){return new this.constructor().copy(this)}copy(A){this.name=A.name,this.blending=A.blending,this.side=A.side,this.vertexColors=A.vertexColors,this.opacity=A.opacity,this.transparent=A.transparent,this.blendSrc=A.blendSrc,this.blendDst=A.blendDst,this.blendEquation=A.blendEquation,this.blendSrcAlpha=A.blendSrcAlpha,this.blendDstAlpha=A.blendDstAlpha,this.blendEquationAlpha=A.blendEquationAlpha,this.blendColor.copy(A.blendColor),this.blendAlpha=A.blendAlpha,this.depthFunc=A.depthFunc,this.depthTest=A.depthTest,this.depthWrite=A.depthWrite,this.stencilWriteMask=A.stencilWriteMask,this.stencilFunc=A.stencilFunc,this.stencilRef=A.stencilRef,this.stencilFuncMask=A.stencilFuncMask,this.stencilFail=A.stencilFail,this.stencilZFail=A.stencilZFail,this.stencilZPass=A.stencilZPass,this.stencilWrite=A.stencilWrite;const t=A.clippingPlanes;let e=null;if(t!==null){const s=t.length;e=new Array(s);for(let i=0;i!==s;++i)e[i]=t[i].clone()}return this.clippingPlanes=e,this.clipIntersection=A.clipIntersection,this.clipShadows=A.clipShadows,this.shadowSide=A.shadowSide,this.colorWrite=A.colorWrite,this.precision=A.precision,this.polygonOffset=A.polygonOffset,this.polygonOffsetFactor=A.polygonOffsetFactor,this.polygonOffsetUnits=A.polygonOffsetUnits,this.dithering=A.dithering,this.alphaTest=A.alphaTest,this.alphaHash=A.alphaHash,this.alphaToCoverage=A.alphaToCoverage,this.premultipliedAlpha=A.premultipliedAlpha,this.forceSinglePass=A.forceSinglePass,this.visible=A.visible,this.toneMapped=A.toneMapped,this.userData=JSON.parse(JSON.stringify(A.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(A){A===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Qa extends pn{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new kt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Nt,this.combine=qr,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}}const iA=new f,Ze=new DA;class Xt{constructor(A,t,e=!1){if(Array.isArray(A))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=A,this.itemSize=t,this.count=A!==void 0?A.length/t:0,this.normalized=e,this.usage=sn,this.updateRanges=[],this.gpuType=_r,this.version=0}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}setUsage(A){return this.usage=A,this}addUpdateRange(A,t){this.updateRanges.push({start:A,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.name=A.name,this.array=new A.array.constructor(A.array),this.itemSize=A.itemSize,this.count=A.count,this.normalized=A.normalized,this.usage=A.usage,this.gpuType=A.gpuType,this}copyAt(A,t,e){A*=this.itemSize,e*=t.itemSize;for(let s=0,i=this.itemSize;s<i;s++)this.array[A+s]=t.array[e+s];return this}copyArray(A){return this.array.set(A),this}applyMatrix3(A){if(this.itemSize===2)for(let t=0,e=this.count;t<e;t++)Ze.fromBufferAttribute(this,t),Ze.applyMatrix3(A),this.setXY(t,Ze.x,Ze.y);else if(this.itemSize===3)for(let t=0,e=this.count;t<e;t++)iA.fromBufferAttribute(this,t),iA.applyMatrix3(A),this.setXYZ(t,iA.x,iA.y,iA.z);return this}applyMatrix4(A){for(let t=0,e=this.count;t<e;t++)iA.fromBufferAttribute(this,t),iA.applyMatrix4(A),this.setXYZ(t,iA.x,iA.y,iA.z);return this}applyNormalMatrix(A){for(let t=0,e=this.count;t<e;t++)iA.fromBufferAttribute(this,t),iA.applyNormalMatrix(A),this.setXYZ(t,iA.x,iA.y,iA.z);return this}transformDirection(A){for(let t=0,e=this.count;t<e;t++)iA.fromBufferAttribute(this,t),iA.transformDirection(A),this.setXYZ(t,iA.x,iA.y,iA.z);return this}set(A,t=0){return this.array.set(A,t),this}getComponent(A,t){let e=this.array[A*this.itemSize+t];return this.normalized&&(e=ue(e,this.array)),e}setComponent(A,t,e){return this.normalized&&(e=wA(e,this.array)),this.array[A*this.itemSize+t]=e,this}getX(A){let t=this.array[A*this.itemSize];return this.normalized&&(t=ue(t,this.array)),t}setX(A,t){return this.normalized&&(t=wA(t,this.array)),this.array[A*this.itemSize]=t,this}getY(A){let t=this.array[A*this.itemSize+1];return this.normalized&&(t=ue(t,this.array)),t}setY(A,t){return this.normalized&&(t=wA(t,this.array)),this.array[A*this.itemSize+1]=t,this}getZ(A){let t=this.array[A*this.itemSize+2];return this.normalized&&(t=ue(t,this.array)),t}setZ(A,t){return this.normalized&&(t=wA(t,this.array)),this.array[A*this.itemSize+2]=t,this}getW(A){let t=this.array[A*this.itemSize+3];return this.normalized&&(t=ue(t,this.array)),t}setW(A,t){return this.normalized&&(t=wA(t,this.array)),this.array[A*this.itemSize+3]=t,this}setXY(A,t,e){return A*=this.itemSize,this.normalized&&(t=wA(t,this.array),e=wA(e,this.array)),this.array[A+0]=t,this.array[A+1]=e,this}setXYZ(A,t,e,s){return A*=this.itemSize,this.normalized&&(t=wA(t,this.array),e=wA(e,this.array),s=wA(s,this.array)),this.array[A+0]=t,this.array[A+1]=e,this.array[A+2]=s,this}setXYZW(A,t,e,s,i){return A*=this.itemSize,this.normalized&&(t=wA(t,this.array),e=wA(e,this.array),s=wA(s,this.array),i=wA(i,this.array)),this.array[A+0]=t,this.array[A+1]=e,this.array[A+2]=s,this.array[A+3]=i,this}onUpload(A){return this.onUploadCallback=A,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const A={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(A.name=this.name),this.usage!==sn&&(A.usage=this.usage),A}}class ha extends Xt{constructor(A,t,e){super(new Uint16Array(A),t,e)}}class Ca extends Xt{constructor(A,t,e){super(new Uint32Array(A),t,e)}}class Pe extends Xt{constructor(A,t,e){super(new Float32Array(A),t,e)}}let Ea=0;const bA=new cA,$s=new mA,Vt=new f,kA=new vt,pe=new vt,oA=new f;class We extends ce{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Ea++}),this.uuid=le(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(A){return Array.isArray(A)?this.index=new(Wr(A)?Ca:ha)(A,1):this.index=A,this}setIndirect(A){return this.indirect=A,this}getIndirect(){return this.indirect}getAttribute(A){return this.attributes[A]}setAttribute(A,t){return this.attributes[A]=t,this}deleteAttribute(A){return delete this.attributes[A],this}hasAttribute(A){return this.attributes[A]!==void 0}addGroup(A,t,e=0){this.groups.push({start:A,count:t,materialIndex:e})}clearGroups(){this.groups=[]}setDrawRange(A,t){this.drawRange.start=A,this.drawRange.count=t}applyMatrix4(A){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(A),t.needsUpdate=!0);const e=this.attributes.normal;if(e!==void 0){const i=new VA().getNormalMatrix(A);e.applyNormalMatrix(i),e.needsUpdate=!0}const s=this.attributes.tangent;return s!==void 0&&(s.transformDirection(A),s.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(A){return bA.makeRotationFromQuaternion(A),this.applyMatrix4(bA),this}rotateX(A){return bA.makeRotationX(A),this.applyMatrix4(bA),this}rotateY(A){return bA.makeRotationY(A),this.applyMatrix4(bA),this}rotateZ(A){return bA.makeRotationZ(A),this.applyMatrix4(bA),this}translate(A,t,e){return bA.makeTranslation(A,t,e),this.applyMatrix4(bA),this}scale(A,t,e){return bA.makeScale(A,t,e),this.applyMatrix4(bA),this}lookAt(A){return $s.lookAt(A),$s.updateMatrix(),this.applyMatrix4($s.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Vt).negate(),this.translate(Vt.x,Vt.y,Vt.z),this}setFromPoints(A){const t=this.getAttribute("position");if(t===void 0){const e=[];for(let s=0,i=A.length;s<i;s++){const r=A[s];e.push(r.x,r.y,r.z||0)}this.setAttribute("position",new Pe(e,3))}else{const e=Math.min(A.length,t.count);for(let s=0;s<e;s++){const i=A[s];t.setXYZ(s,i.x,i.y,i.z||0)}A.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new vt);const A=this.attributes.position,t=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new f(-1/0,-1/0,-1/0),new f(1/0,1/0,1/0));return}if(A!==void 0){if(this.boundingBox.setFromBufferAttribute(A),t)for(let e=0,s=t.length;e<s;e++){const i=t[e];kA.setFromBufferAttribute(i),this.morphTargetsRelative?(oA.addVectors(this.boundingBox.min,kA.min),this.boundingBox.expandByPoint(oA),oA.addVectors(this.boundingBox.max,kA.max),this.boundingBox.expandByPoint(oA)):(this.boundingBox.expandByPoint(kA.min),this.boundingBox.expandByPoint(kA.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error(\'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.\',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Qn);const A=this.attributes.position,t=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new f,1/0);return}if(A){const e=this.boundingSphere.center;if(kA.setFromBufferAttribute(A),t)for(let i=0,r=t.length;i<r;i++){const a=t[i];pe.setFromBufferAttribute(a),this.morphTargetsRelative?(oA.addVectors(kA.min,pe.min),kA.expandByPoint(oA),oA.addVectors(kA.max,pe.max),kA.expandByPoint(oA)):(kA.expandByPoint(pe.min),kA.expandByPoint(pe.max))}kA.getCenter(e);let s=0;for(let i=0,r=A.count;i<r;i++)oA.fromBufferAttribute(A,i),s=Math.max(s,e.distanceToSquared(oA));if(t)for(let i=0,r=t.length;i<r;i++){const a=t[i],g=this.morphTargetsRelative;for(let o=0,I=a.count;o<I;o++)oA.fromBufferAttribute(a,o),g&&(Vt.fromBufferAttribute(A,o),oA.add(Vt)),s=Math.max(s,e.distanceToSquared(oA))}this.boundingSphere.radius=Math.sqrt(s),isNaN(this.boundingSphere.radius)&&console.error(\'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.\',this)}}computeTangents(){const A=this.index,t=this.attributes;if(A===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const e=t.position,s=t.normal,i=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new Xt(new Float32Array(4*e.count),4));const r=this.getAttribute("tangent"),a=[],g=[];for(let p=0;p<e.count;p++)a[p]=new f,g[p]=new f;const o=new f,I=new f,B=new f,Q=new DA,h=new DA,C=new DA,E=new f,l=new f;function c(p,D,F){o.fromBufferAttribute(e,p),I.fromBufferAttribute(e,D),B.fromBufferAttribute(e,F),Q.fromBufferAttribute(i,p),h.fromBufferAttribute(i,D),C.fromBufferAttribute(i,F),I.sub(o),B.sub(o),h.sub(Q),C.sub(Q);const m=1/(h.x*C.y-C.x*h.y);isFinite(m)&&(E.copy(I).multiplyScalar(C.y).addScaledVector(B,-h.y).multiplyScalar(m),l.copy(B).multiplyScalar(h.x).addScaledVector(I,-C.x).multiplyScalar(m),a[p].add(E),a[D].add(E),a[F].add(E),g[p].add(l),g[D].add(l),g[F].add(l))}let u=this.groups;u.length===0&&(u=[{start:0,count:A.count}]);for(let p=0,D=u.length;p<D;++p){const F=u[p],m=F.start,S=F.count;for(let N=m,k=m+S;N<k;N+=3)c(A.getX(N+0),A.getX(N+1),A.getX(N+2))}const d=new f,y=new f,w=new f,x=new f;function M(p){w.fromBufferAttribute(s,p),x.copy(w);const D=a[p];d.copy(D),d.sub(w.multiplyScalar(w.dot(D))).normalize(),y.crossVectors(x,D);const m=y.dot(g[p])<0?-1:1;r.setXYZW(p,d.x,d.y,d.z,m)}for(let p=0,D=u.length;p<D;++p){const F=u[p],m=F.start,S=F.count;for(let N=m,k=m+S;N<k;N+=3)M(A.getX(N+0)),M(A.getX(N+1)),M(A.getX(N+2))}}computeVertexNormals(){const A=this.index,t=this.getAttribute("position");if(t!==void 0){let e=this.getAttribute("normal");if(e===void 0)e=new Xt(new Float32Array(t.count*3),3),this.setAttribute("normal",e);else for(let Q=0,h=e.count;Q<h;Q++)e.setXYZ(Q,0,0,0);const s=new f,i=new f,r=new f,a=new f,g=new f,o=new f,I=new f,B=new f;if(A)for(let Q=0,h=A.count;Q<h;Q+=3){const C=A.getX(Q+0),E=A.getX(Q+1),l=A.getX(Q+2);s.fromBufferAttribute(t,C),i.fromBufferAttribute(t,E),r.fromBufferAttribute(t,l),I.subVectors(r,i),B.subVectors(s,i),I.cross(B),a.fromBufferAttribute(e,C),g.fromBufferAttribute(e,E),o.fromBufferAttribute(e,l),a.add(I),g.add(I),o.add(I),e.setXYZ(C,a.x,a.y,a.z),e.setXYZ(E,g.x,g.y,g.z),e.setXYZ(l,o.x,o.y,o.z)}else for(let Q=0,h=t.count;Q<h;Q+=3)s.fromBufferAttribute(t,Q+0),i.fromBufferAttribute(t,Q+1),r.fromBufferAttribute(t,Q+2),I.subVectors(r,i),B.subVectors(s,i),I.cross(B),e.setXYZ(Q+0,I.x,I.y,I.z),e.setXYZ(Q+1,I.x,I.y,I.z),e.setXYZ(Q+2,I.x,I.y,I.z);this.normalizeNormals(),e.needsUpdate=!0}}normalizeNormals(){const A=this.attributes.normal;for(let t=0,e=A.count;t<e;t++)oA.fromBufferAttribute(A,t),oA.normalize(),A.setXYZ(t,oA.x,oA.y,oA.z)}toNonIndexed(){function A(a,g){const o=a.array,I=a.itemSize,B=a.normalized,Q=new o.constructor(g.length*I);let h=0,C=0;for(let E=0,l=g.length;E<l;E++){a.isInterleavedBufferAttribute?h=g[E]*a.data.stride+a.offset:h=g[E]*I;for(let c=0;c<I;c++)Q[C++]=o[h++]}return new Xt(Q,I,B)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new We,e=this.index.array,s=this.attributes;for(const a in s){const g=s[a],o=A(g,e);t.setAttribute(a,o)}const i=this.morphAttributes;for(const a in i){const g=[],o=i[a];for(let I=0,B=o.length;I<B;I++){const Q=o[I],h=A(Q,e);g.push(h)}t.morphAttributes[a]=g}t.morphTargetsRelative=this.morphTargetsRelative;const r=this.groups;for(let a=0,g=r.length;a<g;a++){const o=r[a];t.addGroup(o.start,o.count,o.materialIndex)}return t}toJSON(){const A={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(A.uuid=this.uuid,A.type=this.type,this.name!==""&&(A.name=this.name),Object.keys(this.userData).length>0&&(A.userData=this.userData),this.parameters!==void 0){const g=this.parameters;for(const o in g)g[o]!==void 0&&(A[o]=g[o]);return A}A.data={attributes:{}};const t=this.index;t!==null&&(A.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const e=this.attributes;for(const g in e){const o=e[g];A.data.attributes[g]=o.toJSON(A.data)}const s={};let i=!1;for(const g in this.morphAttributes){const o=this.morphAttributes[g],I=[];for(let B=0,Q=o.length;B<Q;B++){const h=o[B];I.push(h.toJSON(A.data))}I.length>0&&(s[g]=I,i=!0)}i&&(A.data.morphAttributes=s,A.data.morphTargetsRelative=this.morphTargetsRelative);const r=this.groups;r.length>0&&(A.data.groups=JSON.parse(JSON.stringify(r)));const a=this.boundingSphere;return a!==null&&(A.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=A.name;const e=A.index;e!==null&&this.setIndex(e.clone(t));const s=A.attributes;for(const o in s){const I=s[o];this.setAttribute(o,I.clone(t))}const i=A.morphAttributes;for(const o in i){const I=[],B=i[o];for(let Q=0,h=B.length;Q<h;Q++)I.push(B[Q].clone(t));this.morphAttributes[o]=I}this.morphTargetsRelative=A.morphTargetsRelative;const r=A.groups;for(let o=0,I=r.length;o<I;o++){const B=r[o];this.addGroup(B.start,B.count,B.materialIndex)}const a=A.boundingBox;a!==null&&(this.boundingBox=a.clone());const g=A.boundingSphere;return g!==null&&(this.boundingSphere=g.clone()),this.drawRange.start=A.drawRange.start,this.drawRange.count=A.drawRange.count,this.userData=A.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const wn=new cA,Rt=new sa,Xe=new Qn,Dn=new f,Ve=new f,je=new f,$e=new f,Ai=new f,As=new f,mn=new f,ts=new f;class xn extends mA{constructor(A=new We,t=new Qa){super(),this.isMesh=!0,this.type="Mesh",this.geometry=A,this.material=t,this.updateMorphTargets()}copy(A,t){return super.copy(A,t),A.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=A.morphTargetInfluences.slice()),A.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},A.morphTargetDictionary)),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const s=t[e[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let i=0,r=s.length;i<r;i++){const a=s[i].name||String(i);this.morphTargetInfluences.push(0),this.morphTargetDictionary[a]=i}}}}getVertexPosition(A,t){const e=this.geometry,s=e.attributes.position,i=e.morphAttributes.position,r=e.morphTargetsRelative;t.fromBufferAttribute(s,A);const a=this.morphTargetInfluences;if(i&&a){As.set(0,0,0);for(let g=0,o=i.length;g<o;g++){const I=a[g],B=i[g];I!==0&&(Ai.fromBufferAttribute(B,A),r?As.addScaledVector(Ai,I):As.addScaledVector(Ai.sub(t),I))}t.add(As)}return t}raycast(A,t){const e=this.geometry,s=this.material,i=this.matrixWorld;s!==void 0&&(e.boundingSphere===null&&e.computeBoundingSphere(),Xe.copy(e.boundingSphere),Xe.applyMatrix4(i),Rt.copy(A.ray).recast(A.near),!(Xe.containsPoint(Rt.origin)===!1&&(Rt.intersectSphere(Xe,Dn)===null||Rt.origin.distanceToSquared(Dn)>(A.far-A.near)**2))&&(wn.copy(i).invert(),Rt.copy(A.ray).applyMatrix4(wn),!(e.boundingBox!==null&&Rt.intersectsBox(e.boundingBox)===!1)&&this._computeIntersections(A,t,Rt)))}_computeIntersections(A,t,e){let s;const i=this.geometry,r=this.material,a=i.index,g=i.attributes.position,o=i.attributes.uv,I=i.attributes.uv1,B=i.attributes.normal,Q=i.groups,h=i.drawRange;if(a!==null)if(Array.isArray(r))for(let C=0,E=Q.length;C<E;C++){const l=Q[C],c=r[l.materialIndex],u=Math.max(l.start,h.start),d=Math.min(a.count,Math.min(l.start+l.count,h.start+h.count));for(let y=u,w=d;y<w;y+=3){const x=a.getX(y),M=a.getX(y+1),p=a.getX(y+2);s=es(this,c,A,e,o,I,B,x,M,p),s&&(s.faceIndex=Math.floor(y/3),s.face.materialIndex=l.materialIndex,t.push(s))}}else{const C=Math.max(0,h.start),E=Math.min(a.count,h.start+h.count);for(let l=C,c=E;l<c;l+=3){const u=a.getX(l),d=a.getX(l+1),y=a.getX(l+2);s=es(this,r,A,e,o,I,B,u,d,y),s&&(s.faceIndex=Math.floor(l/3),t.push(s))}}else if(g!==void 0)if(Array.isArray(r))for(let C=0,E=Q.length;C<E;C++){const l=Q[C],c=r[l.materialIndex],u=Math.max(l.start,h.start),d=Math.min(g.count,Math.min(l.start+l.count,h.start+h.count));for(let y=u,w=d;y<w;y+=3){const x=y,M=y+1,p=y+2;s=es(this,c,A,e,o,I,B,x,M,p),s&&(s.faceIndex=Math.floor(y/3),s.face.materialIndex=l.materialIndex,t.push(s))}}else{const C=Math.max(0,h.start),E=Math.min(g.count,h.start+h.count);for(let l=C,c=E;l<c;l+=3){const u=l,d=l+1,y=l+2;s=es(this,r,A,e,o,I,B,u,d,y),s&&(s.faceIndex=Math.floor(l/3),t.push(s))}}}}function ca(n,A,t,e,s,i,r,a){let g;if(A.side===zr?g=e.intersectTriangle(r,i,s,!0,a):g=e.intersectTriangle(s,i,r,A.side===Gs,a),g===null)return null;ts.copy(a),ts.applyMatrix4(n.matrixWorld);const o=t.ray.origin.distanceTo(ts);return o<t.near||o>t.far?null:{distance:o,point:ts.clone(),object:n}}function es(n,A,t,e,s,i,r,a,g,o){n.getVertexPosition(a,Ve),n.getVertexPosition(g,je),n.getVertexPosition(o,$e);const I=ca(n,A,t,e,Ve,je,$e,mn);if(I){const B=new f;OA.getBarycoord(mn,Ve,je,$e,B),s&&(I.uv=OA.getInterpolatedAttribute(s,a,g,o,B,new DA)),i&&(I.uv1=OA.getInterpolatedAttribute(i,a,g,o,B,new DA)),r&&(I.normal=OA.getInterpolatedAttribute(r,a,g,o,B,new f),I.normal.dot(e.direction)>0&&I.normal.multiplyScalar(-1));const Q={a,b:g,c:o,normal:new f,materialIndex:0};OA.getNormal(Ve,je,$e,Q.normal),I.face=Q,I.barycoord=B}return I}function la(n){const A={};for(const t in n){A[t]={};for(const e in n[t]){const s=n[t][e];s&&(s.isColor||s.isMatrix3||s.isMatrix4||s.isVector2||s.isVector3||s.isVector4||s.isTexture||s.isQuaternion)?s.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),A[t][e]=null):A[t][e]=s.clone():Array.isArray(s)?A[t][e]=s.slice():A[t][e]=s}}return A}function ua(n){const A=[];for(let t=0;t<n.length;t++)A.push(n[t].clone());return A}var da=`void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}`,fa=`void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}`;class ya extends pn{constructor(A){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=da,this.fragmentShader=fa,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,A!==void 0&&this.setValues(A)}copy(A){return super.copy(A),this.fragmentShader=A.fragmentShader,this.vertexShader=A.vertexShader,this.uniforms=la(A.uniforms),this.uniformsGroups=ua(A.uniformsGroups),this.defines=Object.assign({},A.defines),this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.fog=A.fog,this.lights=A.lights,this.clipping=A.clipping,this.extensions=Object.assign({},A.extensions),this.glslVersion=A.glslVersion,this}toJSON(A){const t=super.toJSON(A);t.glslVersion=this.glslVersion,t.uniforms={};for(const s in this.uniforms){const r=this.uniforms[s].value;r&&r.isTexture?t.uniforms[s]={type:"t",value:r.toJSON(A).uuid}:r&&r.isColor?t.uniforms[s]={type:"c",value:r.getHex()}:r&&r.isVector2?t.uniforms[s]={type:"v2",value:r.toArray()}:r&&r.isVector3?t.uniforms[s]={type:"v3",value:r.toArray()}:r&&r.isVector4?t.uniforms[s]={type:"v4",value:r.toArray()}:r&&r.isMatrix3?t.uniforms[s]={type:"m3",value:r.toArray()}:r&&r.isMatrix4?t.uniforms[s]={type:"m4",value:r.toArray()}:t.uniforms[s]={value:r}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const e={};for(const s in this.extensions)this.extensions[s]===!0&&(e[s]=!0);return Object.keys(e).length>0&&(t.extensions=e),t}}class Mn extends mA{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new cA,this.projectionMatrix=new cA,this.projectionMatrixInverse=new cA,this.coordinateSystem=Ee}copy(A,t){return super.copy(A,t),this.matrixWorldInverse.copy(A.matrixWorldInverse),this.projectionMatrix.copy(A.projectionMatrix),this.projectionMatrixInverse.copy(A.projectionMatrixInverse),this.coordinateSystem=A.coordinateSystem,this}getWorldDirection(A){return super.getWorldDirection(A).negate()}updateMatrixWorld(A){super.updateMatrixWorld(A),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(A,t){super.updateWorldMatrix(A,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class Sn extends mA{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Nt,this.environmentIntensity=1,this.environmentRotation=new Nt,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(A,t){return super.copy(A,t),A.background!==null&&(this.background=A.background.clone()),A.environment!==null&&(this.environment=A.environment.clone()),A.fog!==null&&(this.fog=A.fog.clone()),this.backgroundBlurriness=A.backgroundBlurriness,this.backgroundIntensity=A.backgroundIntensity,this.backgroundRotation.copy(A.backgroundRotation),this.environmentIntensity=A.environmentIntensity,this.environmentRotation.copy(A.environmentRotation),A.overrideMaterial!==null&&(this.overrideMaterial=A.overrideMaterial.clone()),this.matrixAutoUpdate=A.matrixAutoUpdate,this}toJSON(A){const t=super.toJSON(A);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class pa extends jA{constructor(A=null,t=1,e=1,s,i,r,a,g,o=Et,I=Et,B,Q){super(null,r,a,g,o,I,s,i,B,Q),this.isDataTexture=!0,this.image={data:A,width:t,height:e},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ss extends We{constructor(A=1,t=1,e=1,s=1){super(),this.type="PlaneGeometry",this.parameters={width:A,height:t,widthSegments:e,heightSegments:s};const i=A/2,r=t/2,a=Math.floor(e),g=Math.floor(s),o=a+1,I=g+1,B=A/a,Q=t/g,h=[],C=[],E=[],l=[];for(let c=0;c<I;c++){const u=c*Q-r;for(let d=0;d<o;d++){const y=d*B-i;C.push(y,-u,0),E.push(0,0,1),l.push(d/a),l.push(1-c/g)}}for(let c=0;c<g;c++)for(let u=0;u<a;u++){const d=u+o*c,y=u+o*(c+1),w=u+1+o*(c+1),x=u+1+o*c;h.push(d,y,x),h.push(y,w,x)}this.setIndex(h),this.setAttribute("position",new Pe(C,3)),this.setAttribute("normal",new Pe(E,3)),this.setAttribute("uv",new Pe(l,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new ss(A.width,A.height,A.widthSegments,A.heightSegments)}}class ti extends ya{constructor(A){super(A),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}const Fn={enabled:!1,files:{},add:function(n,A){this.enabled!==!1&&(this.files[n]=A)},get:function(n){if(this.enabled!==!1)return this.files[n]},remove:function(n){delete this.files[n]},clear:function(){this.files={}}};class wa{constructor(A,t,e){const s=this;let i=!1,r=0,a=0,g;const o=[];this.onStart=void 0,this.onLoad=A,this.onProgress=t,this.onError=e,this.itemStart=function(I){a++,i===!1&&s.onStart!==void 0&&s.onStart(I,r,a),i=!0},this.itemEnd=function(I){r++,s.onProgress!==void 0&&s.onProgress(I,r,a),r===a&&(i=!1,s.onLoad!==void 0&&s.onLoad())},this.itemError=function(I){s.onError!==void 0&&s.onError(I)},this.resolveURL=function(I){return g?g(I):I},this.setURLModifier=function(I){return g=I,this},this.addHandler=function(I,B){return o.push(I,B),this},this.removeHandler=function(I){const B=o.indexOf(I);return B!==-1&&o.splice(B,2),this},this.getHandler=function(I){for(let B=0,Q=o.length;B<Q;B+=2){const h=o[B],C=o[B+1];if(h.global&&(h.lastIndex=0),h.test(I))return C}return null}}}const Da=new wa;class ei{constructor(A){this.manager=A!==void 0?A:Da,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(A,t){const e=this;return new Promise(function(s,i){e.load(A,s,t,i)})}parse(){}setCrossOrigin(A){return this.crossOrigin=A,this}setWithCredentials(A){return this.withCredentials=A,this}setPath(A){return this.path=A,this}setResourcePath(A){return this.resourcePath=A,this}setRequestHeader(A){return this.requestHeader=A,this}}ei.DEFAULT_MATERIAL_NAME="__DEFAULT";const at={};class ma extends Error{constructor(A,t){super(A),this.response=t}}class xa extends ei{constructor(A){super(A)}load(A,t,e,s){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const i=Fn.get(A);if(i!==void 0)return this.manager.itemStart(A),setTimeout(()=>{t&&t(i),this.manager.itemEnd(A)},0),i;if(at[A]!==void 0){at[A].push({onLoad:t,onProgress:e,onError:s});return}at[A]=[],at[A].push({onLoad:t,onProgress:e,onError:s});const r=new Request(A,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,g=this.responseType;fetch(r).then(o=>{if(o.status===200||o.status===0){if(o.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||o.body===void 0||o.body.getReader===void 0)return o;const I=at[A],B=o.body.getReader(),Q=o.headers.get("X-File-Size")||o.headers.get("Content-Length"),h=Q?parseInt(Q):0,C=h!==0;let E=0;const l=new ReadableStream({start(c){u();function u(){B.read().then(({done:d,value:y})=>{if(d)c.close();else{E+=y.byteLength;const w=new ProgressEvent("progress",{lengthComputable:C,loaded:E,total:h});for(let x=0,M=I.length;x<M;x++){const p=I[x];p.onProgress&&p.onProgress(w)}c.enqueue(y),u()}},d=>{c.error(d)})}}});return new Response(l)}else throw new ma(`fetch for "${o.url}" responded with ${o.status}: ${o.statusText}`,o)}).then(o=>{switch(g){case"arraybuffer":return o.arrayBuffer();case"blob":return o.blob();case"document":return o.text().then(I=>new DOMParser().parseFromString(I,a));case"json":return o.json();default:if(a===void 0)return o.text();{const B=/charset="?([^;"\\s]*)"?/i.exec(a),Q=B&&B[1]?B[1].toLowerCase():void 0,h=new TextDecoder(Q);return o.arrayBuffer().then(C=>h.decode(C))}}}).then(o=>{Fn.add(A,o);const I=at[A];delete at[A];for(let B=0,Q=I.length;B<Q;B++){const h=I[B];h.onLoad&&h.onLoad(o)}}).catch(o=>{const I=at[A];if(I===void 0)throw this.manager.itemError(A),o;delete at[A];for(let B=0,Q=I.length;B<Q;B++){const h=I[B];h.onError&&h.onError(o)}this.manager.itemError(A)}).finally(()=>{this.manager.itemEnd(A)}),this.manager.itemStart(A)}setResponseType(A){return this.responseType=A,this}setMimeType(A){return this.mimeType=A,this}}class si{constructor(A,t,e,s){si.prototype.isMatrix2=!0,this.elements=[1,0,0,1],A!==void 0&&this.set(A,t,e,s)}identity(){return this.set(1,0,0,1),this}fromArray(A,t=0){for(let e=0;e<4;e++)this.elements[e]=A[e+t];return this}set(A,t,e,s){const i=this.elements;return i[0]=A,i[2]=t,i[1]=e,i[3]=s,this}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:qi}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=qi);const $A=-12,gt=(9-$A)/254,jt=Math.exp(-30),Ma=11,Sa=11,Z=1<<Ma,pt=1<<Sa,Nn=1,Fa=!0;function $t(n){return n==="int"||n==="ivec2"||n==="ivec3"||n==="ivec4"}function Ae(n){return n==="uint"||n==="uvec2"||n==="uvec3"||n==="uvec4"}function Na(n){return n==="float"||n==="vec2"||n==="vec3"||n==="vec4"}function ka(n){return n==="mat2"||n==="mat2x2"||n==="mat2x3"||n==="mat2x4"||n==="mat3"||n==="mat3x2"||n==="mat3x3"||n==="mat3x4"||n==="mat4"||n==="mat4x2"||n==="mat4x3"||n==="mat4x4"}function is(n){return Na(n)||ka(n)}function te(n){return n==="mat2"||n==="mat2x2"}function ee(n){return n==="mat3"||n==="mat3x3"}function se(n){return n==="mat4"||n==="mat4x4"}function rA(n){return Math.trunc(n).toString()}function aA(n){return`${Math.max(0,Math.trunc(n)).toString()}u`}function K(n){return n===Number.POSITIVE_INFINITY?"INFINITY":n===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(n)?n.toFixed(1):n.toString()}function Gt(n){return n instanceof Ut?n.type:n.dynoOut().type}class Ut{constructor(A){this.__isDynoValue=!0,this.type=A}}class RA extends Ut{constructor(A,t){super(A.outTypes[t]),this.dyno=A,this.key=t}}class ns extends Ut{constructor(A,t){super(A),this.literal=t}getLiteral(){return this.literal}}class Ra extends ns{constructor(A,t){super(A,""),this.value=t}getLiteral(){const{type:A,value:t}=this;switch(A){case"bool":return t?"true":"false";case"uint":return aA(t);case"int":return rA(t);case"float":return K(t);case"bvec2":{const e=t;return`bvec2(${e[0]}, ${e[1]})`}case"uvec2":{if(t instanceof DA)return`uvec2(${aA(t.x)}, ${aA(t.y)})`;const e=t;return`uvec2(${aA(e[0])}, ${aA(e[1])})`}case"ivec2":{if(t instanceof DA)return`ivec2(${rA(t.x)}, ${rA(t.y)})`;const e=t;return`ivec2(${rA(e[0])}, ${rA(e[1])})`}case"vec2":{if(t instanceof DA)return`vec2(${K(t.x)}, ${K(t.y)})`;const e=t;return`vec2(${K(e[0])}, ${K(e[1])})`}case"bvec3":{const e=t;return`bvec3(${e[0]}, ${e[1]}, ${e[2]})`}case"uvec3":{if(t instanceof f)return`uvec3(${aA(t.x)}, ${aA(t.y)}, ${aA(t.z)})`;const e=t;return`uvec3(${aA(e[0])}, ${aA(e[1])}, ${aA(e[2])})`}case"ivec3":{if(t instanceof f)return`ivec3(${rA(t.x)}, ${rA(t.y)}, ${rA(t.z)})`;const e=t;return`ivec3(${rA(e[0])}, ${rA(e[1])}, ${rA(e[2])})`}case"vec3":{if(t instanceof f)return`vec3(${K(t.x)}, ${K(t.y)}, ${K(t.z)})`;const e=t;return`vec3(${K(e[0])}, ${K(e[1])}, ${K(e[2])})`}case"bvec4":{const e=t;return`bvec4(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`}case"uvec4":{if(t instanceof fA)return`uvec4(${aA(t.x)}, ${aA(t.y)}, ${aA(t.z)}, ${aA(t.w)})`;const e=t;return`uvec4(${aA(e[0])}, ${aA(e[1])}, ${aA(e[2])}, ${aA(e[3])})`}case"ivec4":{if(t instanceof fA)return`ivec4(${rA(t.x)}, ${rA(t.y)}, ${rA(t.z)}, ${rA(t.w)})`;const e=t;return`ivec4(${rA(e[0])}, ${rA(e[1])}, ${rA(e[2])}, ${rA(e[3])})`}case"vec4":{if(t instanceof fA)return`vec4(${K(t.x)}, ${K(t.y)}, ${K(t.z)}, ${K(t.w)})`;if(t instanceof gA)return`vec4(${K(t.x)}, ${K(t.y)}, ${K(t.z)}, ${K(t.w)})`;const e=t;return`vec4(${K(e[0])}, ${K(e[1])}, ${K(e[2])}, ${K(e[3])})`}case"mat2":case"mat2x2":{const e=t,s=e instanceof si?e.elements:t,i=new Array(4).fill(0).map((r,a)=>K(s[a]));return`${A}(${i.join(", ")})`}case"mat2x3":{const e=t,s=new Array(6).fill(0).map((i,r)=>K(e[r]));return`${A}(${s.join(", ")})`}case"mat2x4":{const e=t,s=new Array(8).fill(0).map((i,r)=>K(e[r]));return`${A}(${s.join(", ")})`}case"mat3":case"mat3x3":{const e=t,s=e instanceof VA?e.elements:t,i=new Array(9).fill(0).map((r,a)=>K(s[a]));return`${A}(${i.join(", ")})`}case"mat3x2":{const e=t,s=new Array(6).fill(0).map((i,r)=>K(e[r]));return`${A}(${s.join(", ")})`}case"mat3x4":{const e=t,s=new Array(12).fill(0).map((i,r)=>K(e[r]));return`${A}(${s.join(", ")})`}case"mat4":case"mat4x4":{const e=t,s=e instanceof cA?e.elements:t,i=new Array(16).fill(0).map((r,a)=>K(s[a]));return`${A}(${i.join(", ")})`}case"mat4x2":{const e=t,s=new Array(8).fill(0).map((i,r)=>K(e[r]));return`${A}(${s.join(", ")})`}case"mat4x3":{const e=t,s=new Array(12).fill(0).map((i,r)=>K(e[r]));return`${A}(${s.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function Ga(n,A){return new Ra(n,A)}const kn=" ";class Ua{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=kn,this.indent=A??kn}nextSequence(){return this.sequence++}}class uA{constructor({inTypes:A,outTypes:t,inputs:e,update:s,globals:i,statements:r,generate:a}){this.inTypes=A??{},this.outTypes=t??{},this.inputs=e??{},this.update=s,this.globals=i,this.statements=r,this.generate=a??(({inputs:g,outputs:o,compile:I})=>{var B,Q;return{globals:(B=this.globals)==null?void 0:B.call(this,{inputs:g,outputs:o,compile:I}),statements:(Q=this.statements)==null?void 0:Q.call(this,{inputs:g,outputs:o,compile:I})}})}get outputs(){const A={};for(const t in this.outTypes)A[t]=new RA(this,t);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:t,compile:e}){const s=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(t).join(", ")})`],i=[];for(const o in t){const I=t[o];I&&!e.declares.has(I)&&(e.declares.add(I),i.push(o))}const{globals:r,statements:a,uniforms:g}=this.generate({inputs:A,outputs:t,compile:e});for(const o of r??[])e.globals.add(o);for(const o in g)e.uniforms[o]=g[o];this.update&&e.updaters.push(this.update);for(const o of i){const I=t[o];I&&(e.uniforms[I]||s.push(`${Rn(I,this.outTypes[o])};`))}return a!=null&&a.length&&(s.push("{"),s.push(...a.map(o=>e.indent+o)),s.push("}")),s}}class La extends uA{constructor({inTypes:A,outTypes:t,inputs:e,update:s,globals:i,construct:r}){super({inTypes:A,outTypes:t,inputs:e,update:s,globals:i,generate:a=>this.generateBlock(a)}),this.construct=r}generateBlock({inputs:A,outputs:t,compile:e}){var C,E;const s={},i={};for(const l in A)A[l]!=null&&(s[l]=new ns(this.inTypes[l],A[l]));for(const l in t)t[l]!=null&&(i[l]=new Ut(this.outTypes[l]));const r={roots:[]},a=this.construct(s,i,r);for(const l of((C=this.globals)==null?void 0:C.call(this,{inputs:A,outputs:t,compile:e}))??[])e.globals.add(l);const g=[],o=new Map;function I(l,c,u){let d=o.get(l);if(!d){d={sequence:e.nextSequence(),outNames:new Map,newOuts:new Set},o.set(l,d);for(const y in l.inputs){let w=l.inputs[y];for(;w;){if(w instanceof Ut){w instanceof RA&&I(w.dyno,w.key);break}w=w.dynoOut()}}g.push(l)}c&&(u||d.newOuts.add(c),d.outNames.set(c,u??`${c}_${d.sequence}`))}for(const l of r.roots)I(l);for(const l in i){let c=(a==null?void 0:a[l])??i[l];for(;c;){if(c instanceof Ut){c instanceof RA&&I(c.dyno,c.key,t[l]);break}c=c.dynoOut()}i[l]=c}const B=[];for(const l of g){const c={},u={};for(const w in l.inputs){let x=l.inputs[w];for(;x;){if(x instanceof Ut){if(x instanceof ns)c[w]=x.getLiteral();else if(x instanceof RA){const M=(E=o.get(x.dyno))==null?void 0:E.outNames.get(x.key);if(!M)throw new Error(`Source not found for ${x.dyno.constructor.name}.${x.key}`);c[w]=M}break}x=x.dynoOut()}}const d=o.get(l)??{outNames:new Map};for(const[w,x]of d.outNames.entries())u[w]=x;const y=l.compile({inputs:c,outputs:u,compile:e});B.push(y)}const Q=[];for(const l in t)i[l]instanceof ns&&Q.push(`${t[l]} = ${i[l].getLiteral()};`);return Q.length>0&&B.push(Q),{statements:B.flatMap((l,c)=>c===0?l:["",...l])}}}function rs(n,A,t,{update:e,globals:s}={}){return new La({inTypes:n,outTypes:A,construct:t,update:e,globals:s})}function ii({inTypes:n,outTypes:A,inputs:t,update:e,globals:s,statements:i,generate:r}){return new uA({inTypes:n,outTypes:A,inputs:t,update:e,globals:s,statements:i,generate:r})}function Rn(n,A,t){const e=typeof A=="string"?A:A.type;if(!e)throw new Error(`Invalid DynoType: ${String(A)}`);return`${e} ${n}${t!=null?`[${t}]`:""}`}function ot(n){var i;let A=!1;const t=n.split(`\n`).map(r=>{const a=r.trimEnd();return A?a:a.length>0?(A=!0,a):null}).filter(r=>r!=null);for(;t.length>0&&t[t.length-1].length===0;)t.pop();if(t.length===0)return[];const e=(i=t[0].match(/^\\s*/))==null?void 0:i[0];if(!e)return t;const s=new RegExp(`^${e}`);return t.map(r=>r.replace(s,""))}function ZA(n){return ot(n).join(`\n`)}class ba extends uA{constructor({a:A,outKey:t,outTypeFunc:e}){const s={a:Gt(A)},i=e(Gt(A)),r={[t]:i};super({inTypes:s,outTypes:r,inputs:{a:A}}),this.outKey=t}dynoOut(){return new RA(this,this.outKey)}}class as extends uA{constructor({a:A,b:t,outKey:e,outTypeFunc:s}){const i={a:Gt(A),b:Gt(t)},r=s(Gt(A),Gt(t)),a={[e]:r};super({inTypes:i,outTypes:a,inputs:{a:A,b:t}}),this.outKey=e}dynoOut(){return new RA(this,this.outKey)}}const ni=new Float32Array(1),Gn=new Uint32Array(ni.buffer);function ie(n){ni[0]=n;const A=Gn[0],t=A>>31&1,e=A>>23&255,s=A&8388607,i=t<<15;if(e===255)return s!==0?i|32767:i|31744;const r=e-127+15;if(r>=31)return i|31744;if(r<=0){if(r<-10)return i;const g=(s|8388608)>>1-r+13;return i|g}const a=s>>13;return i|r<<10|a}function tA(n){const A=n>>15&1,t=n>>10&31,e=n&1023;let s;if(t===0)if(e===0)s=A<<31;else{let i=e,r=-14;for(;(i&1024)===0;)i<<=1,r--;i&=1023;const a=r+127,g=i<<13;s=A<<31|a<<23|g}else if(t===31)e===0?s=A<<31|2139095040:s=A<<31|2143289344;else{const i=t-15+127,r=e<<13;s=A<<31|i<<23|r}return Gn[0]=s,ni[0]}function YA(n){return Math.max(0,Math.min(255,Math.round(n*255)))}function Un(n){const A=[],t=new Set;function e(s){s&&typeof s=="object"&&!t.has(s)&&(t.add(s),s instanceof ArrayBuffer?A.push(s):ArrayBuffer.isView(s)?A.push(s.buffer):Array.isArray(s)?s.forEach(e):Object.values(s).forEach(e))}return e(n),A}function we(n,A,t,e,s,i,r,a,g,o,I,B,Q,h,C,E){const l=YA(h),c=YA(C),u=YA(E),d=YA(Q),y=Hn(new gA(g,o,I,B)),w=y&255,x=y>>>8&255,M=y>>>16&255,p=i<jt?0:Math.min(255,Math.max(1,Math.round((Math.log(i)-$A)/gt)+1)),D=r<jt?0:Math.min(255,Math.max(1,Math.round((Math.log(r)-$A)/gt)+1)),F=a<jt?0:Math.min(255,Math.max(1,Math.round((Math.log(a)-$A)/gt)+1)),m=ie(t),S=ie(e),N=ie(s),k=A*4;n[k]=l|c<<8|u<<16|d<<24,n[k+1]=m|S<<16,n[k+2]=N|w<<16|x<<24,n[k+3]=p|D<<8|F<<16|M<<24}function Ln(n,A,t,e,s){const i=ie(t),r=ie(e),a=ie(s),g=A*4;n[g+1]=i|r<<16,n[g+2]=a|n[g+2]&4294901760}function bn(n,A,t,e,s){const i=t<jt?0:Math.min(255,Math.max(1,Math.round((Math.log(t)-$A)/gt)+1)),r=e<jt?0:Math.min(255,Math.max(1,Math.round((Math.log(e)-$A)/gt)+1)),a=s<jt?0:Math.min(255,Math.max(1,Math.round((Math.log(s)-$A)/gt)+1)),g=A*4;n[g+3]=i|r<<8|a<<16|n[g+3]&4278190080}function Yn(n,A,t,e,s,i){const r=Hn(new gA(t,e,s,i)),a=r&255,g=r>>>8&255,o=r>>>16&255,I=A*4;n[I+2]=n[I+2]&65535|a<<16|g<<24,n[I+3]=n[I+3]&16777215|o<<24}function Ya(n,A,t,e,s,i){const r=YA(t),a=YA(e),g=YA(s),o=YA(i),I=A*4;n[I]=r|a<<8|g<<16|o<<24}function Ja(n,A,t,e,s){const i=YA(t),r=YA(e),a=YA(s),g=A*4;n[g]=i|r<<8|a<<16|n[g]&4278190080}function Ha(n,A,t){const e=YA(t),s=A*4;n[s]=n[s]&16777215|e<<24}const Ta=new f,va=new f,za=new gA,qa=new kt,Ka={center:Ta,scales:va,quaternion:za,color:qa,opacity:0};function Jn(n,A){const t=Ka,e=A*4,s=n[e],i=n[e+1],r=n[e+2],a=n[e+3];t.color.set((s&255)/255,(s>>>8&255)/255,(s>>>16&255)/255),t.opacity=(s>>>24&255)/255,t.center.set(tA(i&65535),tA(i>>>16&65535),tA(r&65535));const g=a&255;t.scales.x=g===0?0:Math.exp($A+(g-1)*gt);const o=a>>>8&255;t.scales.y=o===0?0:Math.exp($A+(o-1)*gt);const I=a>>>16&255;t.scales.z=I===0?0:Math.exp($A+(I-1)*gt);const B=r>>>16&65535|a>>>8&16711680;return Oa(B,t.quaternion),t}function GA(n){const A=Z,t=Math.max(Nn,Math.min(pt,Math.ceil(n/A))),e=Math.ceil(n/(A*t)),s=A*t*e;return{width:A,height:t,depth:e,maxSplats:s}}function gs(n){const A=Z,t=Math.max(Nn,Math.min(pt,Math.ceil(n/A))),e=Math.ceil(n/(A*t));return A*t*e}const _a=ZA(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);function Hn(n){const A=n.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const t=2*Math.acos(A.w),e=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),s=e<1e-6?new f(1,0,0):new f(A.x,A.y,A.z).divideScalar(e),i=Math.abs(s.x)+Math.abs(s.y)+Math.abs(s.z);let r=s.x/i,a=s.y/i;if(s.z<0){const h=r;r=(1-Math.abs(a))*(r>=0?1:-1),a=(1-Math.abs(h))*(a>=0?1:-1)}const g=r*.5+.5,o=a*.5+.5,I=Math.round(g*255),B=Math.round(o*255);return Math.round(t*(255/Math.PI))<<16|B<<8|I}function Oa(n,A){const t=n&255,e=n>>>8&255,s=n>>>16&255,i=t/255,r=e/255;let a=(i-.5)*2,g=(r-.5)*2;const o=1-(Math.abs(a)+Math.abs(g)),I=Math.max(-o,0);a+=a>=0?-I:I,g+=g>=0?-I:I;const B=new f(a,g,o).normalize(),h=s/255*Math.PI*.5,C=Math.sin(h),E=Math.cos(h);return A.set(B.x*C,B.y*C,B.z*C,E),A}function os(n,A,t,e){const s=Math.max(-127,Math.min(127,n*127)),i=Math.max(-127,Math.min(127,A*127)),r=Math.max(-127,Math.min(127,t*127)),a=Math.max(-127,Math.min(127,e*127));return s&255|(i&255)<<8|(r&255)<<16|(a&255)<<24}function Is(n,A,t){const e=A*2;for(let s=0;s<9;++s){const i=Math.max(-63,Math.min(63,t[s]*63))&127,r=s*7,a=r+7,g=Math.floor(r/32),o=r-g*32,I=i<<o&4294967295;if(n[e+g]|=I,a>g*32+32){const B=i>>>32-o&4294967295;n[e+g+1]|=B}}}function Bs(n,A,t){n[A*4+0]=os(t[0],t[1],t[2],t[3]),n[A*4+1]=os(t[4],t[5],t[6],t[7]),n[A*4+2]=os(t[8],t[9],t[10],t[11]),n[A*4+3]=os(t[12],t[13],t[14],0)}function Qs(n,A,t){const e=A*4;for(let s=0;s<21;++s){const i=Math.max(-31,Math.min(31,t[s]*31))&63,r=s*6,a=r+6,g=Math.floor(r/32),o=r-g*32,I=i<<o&4294967295;if(n[e+g]|=I,a>g*32+32){const B=i>>>32-o&4294967295;n[e+g+1]|=B}}}function Za(n,A){const t=[];let e=0,s=null;const i=new Hi((g,o)=>{if(t.push(g),e+=g.length,o||e>=A){const I=new Uint8Array(e);let B=0;for(const Q of t)I.set(Q,B),B+=Q.length;s=I.slice(0,A)}}),r=1024;let a=0;for(;s==null&&a<n.length;){const g=n.slice(a,a+r);i.push(g,!1),a+=r}if(s==null&&(i.push(new Uint8Array,!0),s==null))throw new Error("Failed to decompress partial gzip");return s}class Pa{constructor({fileBytes:A,chunkBytes:t=64*1024}){this.fileBytes=A,this.chunkBytes=t,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new Hi((e,s)=>{this.chunks.push(e),this.totalBytes+=e.length})}read(A){for(;this.totalBytes<A&&this.offset<this.fileBytes.length;){const i=Math.min(this.offset+this.chunkBytes,this.fileBytes.length);this.gunzip.push(this.fileBytes.subarray(this.offset,i),!1),this.offset=i}if(this.totalBytes<A&&this.offset>=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes<A)throw new Error(`Unexpected EOF: needed ${A}, got ${this.totalBytes}`);const t=new Uint8Array(this.totalBytes);let e=0;for(const i of this.chunks)t.set(i,e),e+=i.length;const s=t.subarray(0,A);return this.chunks=[t.subarray(A)],this.totalBytes-=A,s}}function Tn(n,A,t){const e=Math.floor(n.length/32);if(e*32!==n.length)throw new Error("Invalid .splat file size");A(e);const s=new Float32Array(n.buffer);for(let i=0;i<e;++i){const r=i*32,a=i*8,g=s[a+0],o=s[a+1],I=s[a+2],B=s[a+3],Q=s[a+4],h=s[a+5],C=n[r+24]/255,E=n[r+25]/255,l=n[r+26]/255,c=n[r+27]/255,u=(n[r+28]-128)/128,d=(n[r+29]-128)/128,y=(n[r+30]-128)/128,w=(n[r+31]-128)/128;t(i,g,o,I,B,Q,h,d,y,w,u,c,C,E,l)}}function Wa(n){let A=0,t=0,e=new Uint32Array(0);return Tn(n,s=>{A=s,t=gs(A),e=new Uint32Array(t*4)},(s,i,r,a,g,o,I,B,Q,h,C,E,l,c,u)=>{we(e,s,i,r,a,g,o,I,B,Q,h,C,E,l,c,u)}),{packedArray:e,numSplats:A}}const hs={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},vn={0:0,1:9,2:24,3:45};function Xa(n,A,t,e){var E;let r=0;const a=new DataView(n.buffer,r,4096);r+=4096;const g=a.getUint8(0),o=a.getUint8(1);if(g!==0||o<1)throw new Error(`Unsupported .ksplat version: ${g}.${o}`);const I=a.getUint32(4,!0);a.getUint32(16,!0);const B=a.getUint16(20,!0);if(B<0||B>2)throw new Error(`Invalid .ksplat compression level: ${B}`);const Q=a.getFloat32(36,!0)||-1.5,h=a.getFloat32(40,!0)||1.5;let C=4096+I*1024;for(let l=0;l<I;++l){let c=function(hA,H){if(B===0)return J.getFloat32(hA+b+H*4,!0);if(B===1)return tA(J.getUint16(hA+b+H*2,!0));const AA=J.getUint8(hA+b+H)/255;return Q+AA*(h-Q)};const u=new DataView(n.buffer,r,1024);r+=1024;const d=u.getUint32(0,!0),y=u.getUint32(4,!0),w=u.getUint32(8,!0),x=u.getUint32(12,!0),M=u.getFloat32(16,!0),p=u.getUint16(20,!0),D=(u.getUint32(24,!0)||((E=hs[B])==null?void 0:E.scaleRange))??1,F=u.getUint32(32,!0),m=F*w,S=u.getUint32(36,!0),N=S*4,k=p*x+N,G=u.getUint16(40,!0),R=vn[G],{bytesPerCenter:L,bytesPerScale:W,bytesPerRotation:_,bytesPerColor:j,bytesPerSphericalHarmonicsComponent:X,scaleOffsetBytes:$,rotationOffsetBytes:q,colorOffsetBytes:z,sphericalHarmonicsOffsetBytes:b}=hs[B],O=L+W+_+j+R*X,U=O*y,yA=U+k,dA=[0,3,6,1,4,7,2,5,8],UA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],pA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],MA=G>=1?new Float32Array(3*3):void 0,SA=G>=2?new Float32Array(5*3):void 0,PA=G>=3?new Float32Array(7*3):void 0,FA=M/2/D,JA=C+N,HA=C+k,J=new DataView(n.buffer,HA,U),QA=new Float32Array(n.buffer,JA,x*3),Y=new Uint32Array(n.buffer,C,S);let Qt=F,Be=m;for(let hA=0;hA<d;++hA){const H=hA*O;let AA;if(hA<m)AA=Math.floor(hA/w);else{const At=Y[Qt-F];hA>=Be+At&&(Qt+=1,Be+=At),AA=Qt}const v=B===0?J.getFloat32(H+0,!0):(J.getUint16(H+0,!0)-D)*FA+QA[3*AA+0],WA=B===0?J.getFloat32(H+4,!0):(J.getUint16(H+2,!0)-D)*FA+QA[3*AA+1],Se=B===0?J.getFloat32(H+8,!0):(J.getUint16(H+4,!0)-D)*FA+QA[3*AA+2],Fe=B===0?J.getFloat32(H+$+0,!0):tA(J.getUint16(H+$+0,!0)),Ne=B===0?J.getFloat32(H+$+4,!0):tA(J.getUint16(H+$+2,!0)),ci=B===0?J.getFloat32(H+$+8,!0):tA(J.getUint16(H+$+4,!0)),li=B===0?J.getFloat32(H+q+0,!0):tA(J.getUint16(H+q+0,!0)),ui=B===0?J.getFloat32(H+q+4,!0):tA(J.getUint16(H+q+2,!0)),di=B===0?J.getFloat32(H+q+8,!0):tA(J.getUint16(H+q+4,!0)),fi=B===0?J.getFloat32(H+q+12,!0):tA(J.getUint16(H+q+6,!0)),yi=J.getUint8(H+z+0)/255,pi=J.getUint8(H+z+1)/255,wi=J.getUint8(H+z+2)/255,Di=J.getUint8(H+z+3)/255;if(t(hA,v,WA,Se,Fe,Ne,ci,ui,di,fi,li,Di,yi,pi,wi),G>=1&&MA){for(const[At,Lt]of dA.entries())MA[At]=c(H,Lt);if(SA)for(const[At,Lt]of UA.entries())SA[At]=c(H,Lt);if(PA)for(const[At,Lt]of pA.entries())PA[At]=c(H,Lt);e==null||e(hA,MA,SA,PA)}}C+=yA}}function Va(n){var c;let e=0;const s=new DataView(n.buffer,e,4096);e+=4096;const i=s.getUint8(0),r=s.getUint8(1);if(i!==0||r<1)throw new Error(`Unsupported .ksplat version: ${i}.${r}`);const a=s.getUint32(4,!0),g=s.getUint32(16,!0),o=s.getUint16(20,!0);if(o<0||o>2)throw new Error(`Invalid .ksplat compression level: ${o}`);const I=s.getFloat32(36,!0)||-1.5,B=s.getFloat32(40,!0)||1.5,Q=g,h=gs(Q),C=new Uint32Array(h*4),E={};let l=4096+a*1024;for(let u=0;u<a;++u){let d=function(AA,v){if(o===0)return Y.getFloat32(AA+U+v*4,!0);if(o===1)return tA(Y.getUint16(AA+U+v*2,!0));const WA=Y.getUint8(AA+U+v)/255;return I+WA*(B-I)};const y=new DataView(n.buffer,e,1024);e+=1024;const w=y.getUint32(0,!0),x=y.getUint32(4,!0),M=y.getUint32(8,!0),p=y.getUint32(12,!0),D=y.getFloat32(16,!0),F=y.getUint16(20,!0),m=(y.getUint32(24,!0)||((c=hs[o])==null?void 0:c.scaleRange))??1,S=y.getUint32(32,!0),N=S*M,k=y.getUint32(36,!0),G=k*4,R=F*p+G,L=y.getUint16(40,!0),W=vn[L],{bytesPerCenter:_,bytesPerScale:j,bytesPerRotation:X,bytesPerColor:$,bytesPerSphericalHarmonicsComponent:q,scaleOffsetBytes:z,rotationOffsetBytes:b,colorOffsetBytes:O,sphericalHarmonicsOffsetBytes:U}=hs[o],yA=_+j+X+$+W*q,dA=yA*x,UA=dA+R,pA=[0,3,6,1,4,7,2,5,8],MA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],SA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],PA=L>=1?new Float32Array(3*3):void 0,FA=L>=2?new Float32Array(5*3):void 0,JA=L>=3?new Float32Array(7*3):void 0,HA=D/2/m,J=l+G,QA=l+R,Y=new DataView(n.buffer,QA,dA),Qt=new Float32Array(n.buffer,J,p*3),Be=new Uint32Array(n.buffer,l,k);let hA=S,H=N;for(let AA=0;AA<w;++AA){const v=AA*yA;let WA;if(AA<N)WA=Math.floor(AA/M);else{const mt=Be[hA-S];AA>=H+mt&&(hA+=1,H+=mt),WA=hA}const Se=o===0?Y.getFloat32(v+0,!0):(Y.getUint16(v+0,!0)-m)*HA+Qt[3*WA+0],Fe=o===0?Y.getFloat32(v+4,!0):(Y.getUint16(v+2,!0)-m)*HA+Qt[3*WA+1],Ne=o===0?Y.getFloat32(v+8,!0):(Y.getUint16(v+4,!0)-m)*HA+Qt[3*WA+2],ci=o===0?Y.getFloat32(v+z+0,!0):tA(Y.getUint16(v+z+0,!0)),li=o===0?Y.getFloat32(v+z+4,!0):tA(Y.getUint16(v+z+2,!0)),ui=o===0?Y.getFloat32(v+z+8,!0):tA(Y.getUint16(v+z+4,!0)),di=o===0?Y.getFloat32(v+b+0,!0):tA(Y.getUint16(v+b+0,!0)),fi=o===0?Y.getFloat32(v+b+4,!0):tA(Y.getUint16(v+b+2,!0)),yi=o===0?Y.getFloat32(v+b+8,!0):tA(Y.getUint16(v+b+4,!0)),pi=o===0?Y.getFloat32(v+b+12,!0):tA(Y.getUint16(v+b+6,!0)),wi=Y.getUint8(v+O+0)/255,Di=Y.getUint8(v+O+1)/255,At=Y.getUint8(v+O+2)/255,Lt=Y.getUint8(v+O+3)/255;if(we(C,AA,Se,Fe,Ne,ci,li,ui,fi,yi,pi,di,Lt,wi,Di,At),L>=1){if(PA){E.sh1||(E.sh1=new Uint32Array(Q*2));for(const[mt,ke]of pA.entries())PA[mt]=d(v,ke);Is(E.sh1,AA,PA)}if(FA){E.sh2||(E.sh2=new Uint32Array(Q*4));for(const[mt,ke]of MA.entries())FA[mt]=d(v,ke);Bs(E.sh2,AA,FA)}if(JA){E.sh3||(E.sh3=new Uint32Array(Q*4));for(const[mt,ke]of SA.entries())JA[mt]=d(v,ke);Qs(E.sh3,AA,JA)}}}l+=UA}return{packedArray:C,numSplats:Q,extra:E}}const xA={type:"Gsplat"},ri={type:"PackedSplats"},ja=(n,A)=>new tg({packedSplats:n,index:A}),$a=(n,A,t,e)=>new eg({packedSplats:n,index:A,base:t,count:e}),Cs=n=>new sg({gsplat:n}),ai=({gsplat:n,flags:A,index:t,center:e,scales:s,quaternion:i,rgba:r,rgb:a,opacity:g,x:o,y:I,z:B,r:Q,g:h,b:C})=>new ig({gsplat:n,flags:A,index:t,center:e,scales:s,quaternion:i,rgba:r,rgb:a,opacity:g,x:o,y:I,z:B,r:Q,g:h,b:C}),Ag=(n,{scale:A,rotate:t,translate:e,recolor:s})=>new ng({gsplat:n,scale:A,rotate:t,translate:e,recolor:s}),It=ZA(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`),gi=ZA(`\n struct PackedSplats {\n usampler2DArray texture;\n int numSplats;\n };\n`),zn=ZA(`\n bool readPackedSplat(usampler2DArray texture, int numSplats, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packed = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplat(packed, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n return true;\n } else {\n return false;\n }\n }\n`);class tg extends uA{constructor({packedSplats:A,index:t}){super({inTypes:{packedSplats:ri,index:"int"},outTypes:{gsplat:xA},inputs:{packedSplats:A,index:t},globals:()=>[It,gi,zn],statements:({inputs:e,outputs:s})=>{const{gsplat:i}=s;if(!i)return[];const{packedSplats:r,index:a}=e;let g;return r&&a?g=ot(`\n if (readPackedSplat(${r}.texture, ${r}.numSplats, ${a}, ${i})) {\n bool zeroSize = all(equal(${i}.scales, vec3(0.0, 0.0, 0.0)));\n ${i}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n } else {\n ${i}.flags = 0u;\n }\n `):g=[`${i}.flags = 0u;`],g.push(`${i}.index = ${a??"0"};`),g}})}dynoOut(){return new RA(this,"gsplat")}}class eg extends uA{constructor({packedSplats:A,index:t,base:e,count:s}){super({inTypes:{packedSplats:ri,index:"int",base:"int",count:"int"},outTypes:{gsplat:xA},inputs:{packedSplats:A,index:t,base:e,count:s},globals:()=>[It,gi,zn],statements:({inputs:i,outputs:r})=>{const{gsplat:a}=r;if(!a)return[];const{packedSplats:g,index:o,base:I,count:B}=i;let Q;return g&&o&&I&&B?Q=ot(`\n ${a}.flags = 0u;\n if ((${o} >= ${I}) && (${o} < (${I} + ${B}))) {\n if (readPackedSplat(${g}.texture, ${g}.numSplats, ${o}, ${a})) {\n bool zeroSize = all(equal(${a}.scales, vec3(0.0, 0.0, 0.0)));\n ${a}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n }\n `):Q=[`${a}.flags = 0u;`],Q.push(`${a}.index = ${o??"0"};`),Q}})}dynoOut(){return new RA(this,"gsplat")}}class sg extends uA{constructor({gsplat:A}){super({inTypes:{gsplat:xA},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[It],statements:({inputs:t,outputs:e})=>{const{gsplat:s}=t,{flags:i,active:r,index:a,center:g,scales:o,quaternion:I,rgba:B,rgb:Q,opacity:h,x:C,y:E,z:l,r:c,g:u,b:d}=e;return[i?`${i} = ${s?`${s}.flags`:"0u"};`:null,r?`${r} = isGsplatActive(${s?`${s}.flags`:"0u"});`:null,a?`${a} = ${s?`${s}.index`:"0"};`:null,g?`${g} = ${s?`${s}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,o?`${o} = ${s?`${s}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,I?`${I} = ${s?`${s}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,B?`${B} = ${s?`${s}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,Q?`${Q} = ${s?`${s}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,h?`${h} = ${s?`${s}.rgba.a`:"0.0"};`:null,C?`${C} = ${s?`${s}.center.x`:"0.0"};`:null,E?`${E} = ${s?`${s}.center.y`:"0.0"};`:null,l?`${l} = ${s?`${s}.center.z`:"0.0"};`:null,c?`${c} = ${s?`${s}.rgba.r`:"0.0"};`:null,u?`${u} = ${s?`${s}.rgba.g`:"0.0"};`:null,d?`${d} = ${s?`${s}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class ig extends uA{constructor({gsplat:A,flags:t,index:e,center:s,scales:i,quaternion:r,rgba:a,rgb:g,opacity:o,x:I,y:B,z:Q,r:h,g:C,b:E}){super({inTypes:{gsplat:xA,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:xA},inputs:{gsplat:A,flags:t,index:e,center:s,scales:i,quaternion:r,rgba:a,rgb:g,opacity:o,x:I,y:B,z:Q,r:h,g:C,b:E},globals:()=>[It],statements:({inputs:l,outputs:c})=>{const{gsplat:u}=c;if(!u)return[];const{gsplat:d,flags:y,index:w,center:x,scales:M,quaternion:p,rgba:D,rgb:F,opacity:m,x:S,y:N,z:k,r:G,g:R,b:L}=l;return[`${u}.flags = ${y??(d?`${d}.flags`:"0u")};`,`${u}.index = ${w??(d?`${d}.index`:"0")};`,`${u}.center = ${x??(d?`${d}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${u}.scales = ${M??(d?`${d}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${u}.quaternion = ${p??(d?`${d}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${u}.rgba = ${D??(d?`${d}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,F?`${u}.rgba.rgb = ${F};`:null,m?`${u}.rgba.a = ${m};`:null,S?`${u}.center.x = ${S};`:null,N?`${u}.center.y = ${N};`:null,k?`${u}.center.z = ${k};`:null,G?`${u}.rgba.r = ${G};`:null,R?`${u}.rgba.g = ${R};`:null,L?`${u}.rgba.b = ${L};`:null].filter(Boolean)}})}dynoOut(){return new RA(this,"gsplat")}}ZA(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);class ng extends uA{constructor({gsplat:A,scale:t,rotate:e,translate:s,recolor:i}){super({inTypes:{gsplat:xA,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:xA},inputs:{gsplat:A,scale:t,rotate:e,translate:s,recolor:i},globals:()=>[It],statements:({inputs:r,outputs:a,compile:g})=>{const{gsplat:o}=a;if(!o||!r.gsplat)return[];const{scale:I,rotate:B,translate:Q,recolor:h}=r,C=g.indent;return[`${o} = ${r.gsplat};`,`if (isGsplatActive(${o}.flags)) {`,I?`${C}${o}.center *= ${I};`:null,B?`${C}${o}.center = quatVec(${B}, ${o}.center);`:null,Q?`${C}${o}.center += ${Q};`:null,I?`${C}${o}.scales *= ${I};`:null,B?`${C}${o}.quaternion = quatQuat(${B}, ${o}.quaternion);`:null,h?`${C}${o}.rgba *= ${h};`:null,"}"].filter(Boolean)}})}dynoOut(){return new RA(this,"gsplat")}}const rg=n=>new ag({gsplat:n});class ag extends uA{constructor({gsplat:A}){super({inTypes:{gsplat:xA},inputs:{gsplat:A},globals:()=>[It],statements:({inputs:t,outputs:e})=>{const{output:s}=e;if(!s)return[];const{gsplat:i}=t;return i?ot(`\n if (isGsplatActive(${i}.flags)) {\n ${s} = packSplat(${i}.center, ${i}.scales, ${i}.quaternion, ${i}.rgba);\n } else {\n ${s} = uvec4(0u, 0u, 0u, 0u);\n }\n `):[`${s} = uvec4(0u, 0u, 0u, 0u);`]}})}dynoOut(){return new RA(this,"output")}}class gg extends uA{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:t,outputs:e})=>[`target = ${t.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new RA(this,"rgba8")}}class Bt extends uA{constructor({key:A,type:t,count:e,value:s,update:i,globals:r}){A=A??"value",super({outTypes:{[A]:t},update:()=>{if(i){const a=i(this.value);a!==void 0&&(this.value=a)}this.uniform.value=this.value},generate:({inputs:a,outputs:g})=>{const o=(r==null?void 0:r({inputs:a,outputs:g}))??[],I={},B=g[A];return B&&(o.push(`uniform ${Rn(B,t,e)};`),I[B]=this.uniform),{globals:o,uniforms:I}}}),this.type=t,this.count=e,this.value=s,this.uniform={value:s},this.outKey=A}dynoOut(){return new RA(this,this.outKey)}}class oi extends Bt{constructor({key:A,value:t,update:e}){super({key:A,type:"int",value:t,update:e})}}class Es extends Bt{constructor({key:A,value:t,update:e}){super({key:A,type:"float",value:t,update:e})}}class og extends Bt{constructor({key:A,value:t,update:e}){super({key:A,type:"vec3",value:t,update:e})}}class qn extends Bt{constructor({key:A,value:t,update:e}){super({key:A,type:"vec4",value:t,update:e})}}class Ii extends Bt{constructor({key:A,value:t,update:e}){super({key:A,type:"usampler2DArray",value:t,update:e})}}class Kn{constructor({graph:A,inputs:t,outputs:e,template:s}){this.graph=A,this.template=s,this.inputs=t??{},this.outputs=e??{};const i=new Ua({indent:this.template.indent});for(const a in this.outputs)this.outputs[a]&&i.declares.add(this.outputs[a]);const r=A.compile({inputs:this.inputs,outputs:this.outputs,compile:i});this.shader=s.generate({globals:i.globals,statements:r}),this.uniforms=i.uniforms,this.updaters=i.updaters}prepareMaterial(){return Ig(this)}update(){for(const A of this.updaters)A()}}class _n{constructor(A){const t=A.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m),e=A.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);if(!t||!e)throw new Error("Template must contain {{ GLOBALS }} and {{ STATEMENTS }}");this.before=A.substring(0,t.index),this.between=A.substring(t.index+t[0].length,e.index),this.after=A.substring(e.index+e[0].length),this.indent=e[1]}generate({globals:A,statements:t}){return this.before+Array.from(A).join(`\n\n`)+this.between+t.map(e=>this.indent+e).join(`\n`)+this.after}}const On=new Map;function Ig(n){let A=On.get(n);return A||(A=new ti({glslVersion:Zr,vertexShader:_a,fragmentShader:n.shader,uniforms:n.uniforms}),On.set(n,A),A)}function Zn(n,A,t="add"){const e=()=>{throw new Error(`Invalid ${t} types: ${n}, ${A}`)};if(n===A)return n;if(n==="int"){if($t(A))return A;e()}if(A==="int"){if($t(n))return n;e()}if(n==="uint"){if(Ae(A))return A;e()}if(A==="uint"){if(Ae(n))return n;e()}if(n==="float"){if(is(A))return A;e()}if(A==="float"){if(is(n))return n;e()}throw new Error(`Invalid ${t} types: ${n}, ${A}`)}function Bg(n,A){return Zn(n,A,"sub")}function Qg(n,A){const t=()=>{throw new Error(`Invalid mul types: ${n}, ${A}`)},e=s=>s;if(n==="int"){if($t(A))return e(A);t()}if(A==="int"){if($t(n))return e(n);t()}if(n==="uint"){if(Ae(A))return e(A);t()}if(A==="uint"){if(Ae(n))return e(n);t()}if(n==="float"){if(is(A))return e(A);t()}if(A==="float"){if(is(n))return e(n);t()}if($t(n)||Ae(n)||$t(A)||Ae(A)){if(n===A)return e(n);t()}if(n==="vec2"){if(A==="vec2"||te(A))return e("vec2");if(A==="mat3x2")return e("vec3");if(A==="mat4x2")return e("vec4");t()}if(n==="vec3"){if(A==="mat2x3")return e("vec2");if(A==="vec3"||ee(A))return e("vec3");if(A==="mat4x3")return e("vec4");t()}if(n==="vec4"){if(A==="mat2x4")return e("vec2");if(A==="mat3x4")return e("vec3");if(A==="vec4"||se(A))return e("vec4");t()}if(A==="vec2"){if(te(n))return e("vec2");if(n==="mat2x3")return e("vec3");if(n==="mat2x4")return e("vec4");t()}if(A==="vec3"){if(n==="mat3x2")return e("vec2");if(ee(n))return e("vec3");if(n==="mat3x4")return e("vec4");t()}if(A==="vec4"){if(n==="mat4x2")return e("vec2");if(n==="mat4x3")return e("vec3");if(se(n))return e("vec4");t()}if(te(n)){if(te(A))return e("mat2");if(A==="mat3x2")return e("mat3x2");if(A==="mat4x2")return e("mat4x2");t()}if(n==="mat2x3"){if(te(A))return e("mat2x3");if(A==="mat3x2")return e("mat3");if(A==="mat4x2")return e("mat4x3");t()}if(n==="mat2x4"){if(te(A))return e("mat2x4");if(A==="mat3x2")return e("mat3x4");if(A==="mat4x2")return e("mat4");t()}if(n==="mat3x2"){if(A==="mat2x3")return e("mat2");if(ee(A))return e("mat3x2");if(A==="mat4x3")return e("mat4x2");t()}if(ee(n)){if(A==="mat2x3")return e("mat2x3");if(ee(A))return e("mat3");if(A==="mat4x3")return e("mat4x3");t()}if(n==="mat3x4"){if(A==="mat2x3")return e("mat2x4");if(ee(A))return e("mat3x4");if(A==="mat4x3")return e("mat4");t()}if(n==="mat4x2"){if(A==="mat2x4")return e("mat2");if(A==="mat3x4")return e("mat3x2");if(se(A))return e("mat4x2");t()}if(n==="mat4x3"){if(A==="mat2x4")return e("mat2x3");if(A==="mat3x4")return e("mat3");if(se(A))return e("mat4x3");t()}if(se(n)){if(A==="mat2x4")return e("mat2x4");if(A==="mat3x4")return e("mat3x4");if(se(A))return e("mat4");t()}throw new Error(`Invalid mul types: ${n}, ${A}`)}const cs=(n,A)=>new Eg({a:n,b:A}),hg=(n,A)=>new cg({a:n,b:A}),Cg=(n,A)=>new lg({a:n,b:A});class Eg extends as{constructor({a:A,b:t}){super({a:A,b:t,outKey:"sum",outTypeFunc:Zn}),this.statements=({inputs:e,outputs:s})=>[`${s.sum} = ${e.a} + ${e.b};`]}}class cg extends as{constructor({a:A,b:t}){super({a:A,b:t,outKey:"difference",outTypeFunc:Bg}),this.statements=({inputs:e,outputs:s})=>[`${s.difference} = ${e.a} - ${e.b};`]}}class lg extends as{constructor({a:A,b:t}){super({a:A,b:t,outKey:"product",outTypeFunc:Qg}),this.statements=({inputs:e,outputs:s})=>[`${s.product} = ${e.a} * ${e.b};`]}}const ug=n=>new fg({a:n}),dg=(n,A)=>new pg({a:n,b:A});class fg extends ba{constructor({a:A}){super({a:A,outTypeFunc:t=>t,outKey:"normalize"}),this.statements=({inputs:t,outputs:e})=>[`${e.normalize} = normalize(${t.a});`]}}function yg(n){if(n==="float")return"vec2";if(n==="vec2")return"vec3";if(n==="vec3")return"vec4";throw new Error("Invalid type")}class pg extends as{constructor({a:A,b:t}){const e=Gt(A),s=yg(e);super({a:A,b:t,outKey:"extend",outTypeFunc:()=>s}),this.statements=({inputs:i,outputs:r})=>[`${r.extend} = ${s}(${i.a}, ${i.b});`]}}const wg=(n,{scale:A,scales:t,rotate:e,translate:s})=>new mg({position:n,scale:A,scales:t,rotate:e,translate:s}).outputs.position,Dg=(n,{scale:A,scales:t,rotate:e})=>new xg({dir:n,scale:A,scales:t,rotate:e}).outputs.dir;class mg extends uA{constructor({position:A,scale:t,scales:e,rotate:s,translate:i}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:t,scales:e,rotate:s,translate:i},statements:({inputs:r,outputs:a})=>{const{position:g}=a;if(!g)return[];const{scale:o,scales:I,rotate:B,translate:Q}=r;return[`${g} = ${r.position??"vec3(0.0, 0.0, 0.0)"};`,o?`${g} *= ${o};`:null,I?`${g} *= ${I};`:null,B?`${g} = quatVec(${B}, ${g});`:null,Q?`${g} += ${Q};`:null].filter(Boolean)}})}}class xg extends uA{constructor({dir:A,scale:t,scales:e,rotate:s}){super({inTypes:{dir:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{dir:"vec3"},inputs:{dir:A,scale:t,scales:e,rotate:s},statements:({inputs:i,outputs:r})=>{const{dir:a}=r;if(!a)return[];const{scale:g,scales:o,rotate:I}=i;return[`${a} = ${i.dir??"vec3(0.0, 0.0, 0.0)"};`,g?`${a} *= ${g};`:null,o?`${a} *= ${o};`:null,I?`${a} = quatVec(${I}, ${a});`:null].filter(Boolean)}})}}var Mg=`precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include <splatDefines>\n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n}`;const P=class P{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new Pn({packedSplats:this}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,A.url||A.fileBytes||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){A.packedArray?(this.packedArray=A.packedArray,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/Z)*Z,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0),this.extra=A.extra??{}}async asyncInitialize(A){const{url:t,fileBytes:e,construct:s}=A;if(t){const i=new Pg;i.packedSplats=this,await i.loadAsync(t)}else if(e){const i=await Br({input:e,fileType:A.fileType,pathOrUrl:A.fileName??t});this.initialize(i)}if(s){const i=s(this);i instanceof Promise&&await i}}dispose(){this.target&&(this.target.dispose(),this.target=null),this.source&&(this.source.dispose(),this.source=null)}ensureSplats(A){const t=A<=this.maxSplats?this.maxSplats:Math.max(A,2*this.maxSplats),e=this.packedArray?this.packedArray.length/4:0;if(!this.packedArray||t>e){this.maxSplats=GA(t).maxSplats;const s=new Uint32Array(this.maxSplats*4);this.packedArray&&s.set(this.packedArray),this.packedArray=s}return this.packedArray}ensureSplatsSh(A,t){let e,s;if(A===0)return this.ensureSplats(t);if(A===1)e=2,s="sh1";else if(A===2)e=4,s="sh2";else if(A===3)e=4,s="sh3";else throw new Error(`Invalid level: ${A}`);let i=this.extra[s]?this.extra[s].length/e:0;const r=t<=i?i:Math.max(t,2*i);if(!this.extra[s]||r>i){i=GA(r).maxSplats;const a=new Uint32Array(i*e);this.extra[s]&&a.set(this.extra[s]),this.extra[s]=a}return this.extra[s]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return Jn(this.packedArray,A)}setSplat(A,t,e,s,i,r){const a=this.ensureSplats(A+1);we(a,A,t.x,t.y,t.z,e.x,e.y,e.z,s.x,s.y,s.z,s.w,i,r.r,r.g,r.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,t,e,s,i){const r=this.ensureSplats(this.numSplats+1);we(r,this.numSplats,A.x,A.y,A.z,t.x,t.y,t.z,e.x,e.y,e.z,e.w,s,i.r,i.g,i.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let t=0;t<this.numSplats;++t){const e=Jn(this.packedArray,t);A(t,e.center,e.scales,e.quaternion,e.opacity,e.color)}}ensureGenerate(A){if(this.target&&(A??1)<=this.maxSplats)return!1;this.dispose();const t=GA(A??1),{width:e,height:s,depth:i}=t;return this.maxSplats=t.maxSplats,this.target=new In(e,s,i,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:Et,minFilter:Et}),this.target.texture.format=Yt,this.target.texture.type=Mt,this.target.texture.internalFormat="RGBA32UI",this.target.scissorTest=!0,!0}generateMapping(A){let t=0;const e=A.map(s=>{const i=t,r=Math.ceil(s/Z)*Z;return t+=r,{base:i,count:s}});return{maxSplats:t,mapping:e}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():P.getEmpty()}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:t,depth:e}=this.source.image;this.maxSplats!==A*t*e&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:t,depth:e}=GA(this.maxSplats);this.source=new ct(this.packedArray,A,t,e),this.source.format=Yt,this.source.type=Mt,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}static getEmpty(){if(!P.emptySource){const{width:A,height:t,depth:e,maxSplats:s}=GA(1),i=new Uint32Array(s*4);P.emptySource=new ct(i,A,t,e),P.emptySource.format=Yt,P.emptySource.type=Mt,P.emptySource.internalFormat="RGBA32UI",P.emptySource.needsUpdate=!0}return P.emptySource}prepareProgramMaterial(A){let t=P.generatorProgram.get(A);if(!t){const s=rs({index:"int"},{output:"uvec4"},({index:i})=>{A.inputs.index=i;const r=A.outputs.gsplat;return{output:rg(r)}});P.programTemplate||(P.programTemplate=new _n(Mg)),t=new Kn({graph:s,inputs:{index:"index"},outputs:{output:"target"},template:P.programTemplate}),Object.assign(t.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),P.generatorProgram.set(A,t)}const e=t.prepareMaterial();return P.mesh.material=e,{program:t,material:e}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,t){A.setRenderTarget(null),A.xr.enabled=t.xrEnabled,A.autoClear=t.autoClear}generate({generator:A,base:t,count:e,renderer:s}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(t+e>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:i,material:r}=this.prepareProgramMaterial(A);i.update();const a=this.saveRenderState(s),g=Math.ceil((t+e)/Z)*Z,o=Z*pt;for(r.uniforms.targetBase.value=t,r.uniforms.targetCount.value=e;t<g;){const I=Math.floor(t/o);r.uniforms.targetLayer.value=I;const B=I*o,Q=Math.floor((t-B)/Z),h=Math.min(pt,Math.ceil((g-B)/Z));this.target.scissor.set(0,Q,Z,h-Q),s.setRenderTarget(this.target,I),s.xr.enabled=!1,s.autoClear=!1,s.render(P.scene,P.camera),t+=Z*(h-Q)}return this.resetRenderState(s,a),{nextBase:g}}};P.emptySource=null,P.programTemplate=null,P.generatorProgram=new Map,P.geometry=new ss(2,2),P.mesh=new xn(P.geometry,new ti({visible:!1})),P.scene=new Sn().add(P.mesh),P.camera=new Mn;let ne=P;class Pn extends Bt{constructor({packedSplats:A}={}){super({key:"packedSplats",type:ri,globals:()=>[gi],value:{texture:ne.getEmpty(),numSplats:0},update:t=>{var e,s;return t.texture=((e=this.packedSplats)==null?void 0:e.getTexture())??ne.getEmpty(),t.numSplats=((s=this.packedSplats)==null?void 0:s.numSplats)??0,t}}),this.packedSplats=A}}var Sg=`precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include <splatDefines>\n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}`;const IA=class IA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}ensureBuffer(A,t){const s=Math.ceil(Math.max(1,A)/Z)*Z*4;if(t.byteLength>=s)return t;const i=new ArrayBuffer(s);if(t instanceof ArrayBuffer)return i;const r=t.constructor;return new r(i)}ensureCapacity(A){const{width:t,height:e,depth:s,maxSplats:i}=GA(A);(!this.target||i>this.capacity)&&(this.dispose(),this.capacity=i,this.target=new In(t,e,s,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:Et,minFilter:Et}),this.target.texture.format=Je,this.target.texture.type=Ye,this.target.texture.internalFormat="RGBA8",this.target.scissorTest=!0)}prepareProgramMaterial(A){let t=IA.readbackProgram.get(A);if(!t){const s=rs({index:"int"},{rgba8:"vec4"},({index:i})=>(A.inputs.index=i,{rgba8:new gg({rgba8:A.outputs.rgba8})}));IA.programTemplate||(IA.programTemplate=new _n(Sg)),t=new Kn({graph:s,inputs:{index:"index"},outputs:{rgba8:"target"},template:IA.programTemplate}),Object.assign(t.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),IA.readbackProgram.set(A,t)}const e=t.prepareMaterial();return IA.mesh.material=e,{program:t,material:e}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,t){A.setRenderTarget(null),A.xr.enabled=t.xrEnabled,A.autoClear=t.autoClear}process({count:A,material:t}){const e=this.renderer;if(!e)throw new Error("No renderer");if(!this.target)throw new Error("No target");const s=Z*pt;t.uniforms.targetBase.value=0,t.uniforms.targetCount.value=A;let i=0;for(;i<A;){const r=Math.floor(i/s),a=r*s,g=Math.min(pt,Math.ceil((A-a)/Z));t.uniforms.targetLayer.value=r,this.target.scissor.set(0,0,Z,g),e.setRenderTarget(this.target,r),e.xr.enabled=!1,e.autoClear=!1,e.render(IA.scene,IA.camera),i+=Z*g}this.count=A}async read({readback:A}){const t=this.renderer;if(!t)throw new Error("No renderer");if(!this.target)throw new Error("No target");const e=Math.ceil(this.count/Z)*Z;if(A.byteLength<e*4)throw new Error(`Readback buffer too small: ${A.byteLength} < ${e*4}`);const s=new Uint8Array(A instanceof ArrayBuffer?A:A.buffer),i=Z*pt;let r=0;const a=[];for(;r<this.count;){const g=Math.floor(r/i),o=g*i,I=Math.min(pt,Math.ceil((this.count-o)/Z));t.setRenderTarget(this.target,g);const B=Z*I*4,Q=s.subarray(o*4,o*4+B),h=t==null?void 0:t.readRenderTargetPixelsAsync(this.target,0,0,Z,I,Q);a.push(h),r+=Z*I}return Promise.all(a).then(()=>A)}render({reader:A,count:t,renderer:e}){if(this.renderer=e||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(t);const{program:s,material:i}=this.prepareProgramMaterial(A);s.update();const r=this.saveRenderState(this.renderer);this.process({count:t,material:i}),this.resetRenderState(this.renderer,r)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const t=this.saveRenderState(this.renderer),e=this.read({readback:A});return this.resetRenderState(this.renderer,t),e}async renderReadback({reader:A,count:t,renderer:e,readback:s}){if(this.renderer=e||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(t);const{program:i,material:r}=this.prepareProgramMaterial(A);i.update();const a=this.saveRenderState(this.renderer);this.process({count:t,material:r});const g=this.read({readback:s});return this.resetRenderState(this.renderer,a),g}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};IA.programTemplate=null,IA.readbackProgram=new Map,IA.geometry=new ss(2,2),IA.mesh=new xn(IA.geometry,new ti({visible:!1})),IA.scene=new Sn().add(IA.mesh),IA.camera=new Mn;let Bi=IA;const BA=class BA{constructor(A={}){this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new Bt({key:"rgbaArray",type:Xn,globals:()=>[Vn],value:{texture:BA.getEmpty(),count:0},update:t=>{var e;return t.texture=((e=this.readback)==null?void 0:e.getTexture())??this.source??BA.getEmpty(),t.count=this.count,t}}),A.array?(this.array=A.array,this.capacity=Math.floor(this.array.length/4),this.capacity=Math.floor(this.capacity/Z)*Z,this.count=Math.min(this.capacity,A.count??Number.POSITIVE_INFINITY)):(this.capacity=A.capacity??0,this.count=0)}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var t;if(!this.array||A>(((t=this.array)==null?void 0:t.length)??0)/4){this.capacity=GA(A).maxSplats;const e=new Uint8Array(this.capacity*4);this.array&&e.set(this.array),this.array=e}return this.array}getTexture(){var t;let A=(t=this.readback)==null?void 0:t.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??BA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:t,depth:e}=this.source.image;this.capacity!==A*t*e&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:t,depth:e}=GA(this.capacity);this.source=new ct(this.array,A,t,e),this.source.format=Je,this.source.type=Ye,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:t,renderer:e}){this.readback||(this.readback=new Bi({renderer:e})),this.readback.render({reader:A,count:t,renderer:e}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:t,count:e,renderer:s}){const{dynoSplats:i,dynoBase:r,dynoCount:a,reader:g}=BA.makeDynos();return i.packedSplats=A,r.value=t,a.value=e,this.render({reader:g,count:e,renderer:s}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length<this.count*4)&&(this.array=new Uint8Array(this.capacity*4)),(await this.readback.readback({readback:this.array})).subarray(0,this.count*4)}static getEmpty(){if(!BA.emptySource){const A=new Uint8Array(4);BA.emptySource=new ct(A,1,1,1),BA.emptySource.format=Je,BA.emptySource.type=Ye,BA.emptySource.internalFormat="RGBA8",BA.emptySource.needsUpdate=!0}return BA.emptySource}static makeDynos(){if(!BA.dynos){const A=new Pn,t=new oi({value:0}),e=new oi({value:0}),s=rs({index:"int"},{rgba8:"vec4"},({index:i})=>{if(!i)throw new Error("index is undefined");i=cs(i,t);const r=$a(A,i,t,e);return{rgba8:Cs(r).outputs.rgba}});BA.dynos={dynoSplats:A,dynoBase:t,dynoCount:e,reader:s}}return BA.dynos}};BA.emptySource=null,BA.dynos=null;let Wn=BA;const Xn={type:"RgbaArray"},Vn=ZA(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);function Fg(n,A){return new uA({inTypes:{rgba:Xn,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:n,index:A},globals:()=>[Vn],statements:({inputs:e,outputs:s})=>ot(`\n if ((index >= 0) && (index < ${e.rgba}.count)) {\n ${s.rgba} = texelFetch(${e.rgba}.texture, splatTexCoord(index), 0);\n } else {\n ${s.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `)}).outputs.rgba}function Ng(n){switch(n){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${n}`)}}function kg(n){switch(n){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${n}`)}}class Rg extends mA{constructor(A={}){super();const{type:t,invert:e,opacity:s,color:i,displace:r,radius:a}=A;this.type=t??"sphere",this.invert=e??!1,this.opacity=s??1,this.color=i??new kt(1,1,1),this.displace=r??new f(0,0,0),this.radius=a??0}}const ws=class ws extends mA{constructor(A={}){const{name:t,rgbaBlendMode:e="multiply",sdfSmooth:s=0,softEdge:i=0,invert:r=!1,sdfs:a=null}=A;super(),this.rgbaBlendMode=e,this.sdfSmooth=s,this.softEdge=i,this.invert=r,this.sdfs=a,this.ordering=ws.nextOrdering++,this.name=t??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.includes(A)||this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(t=>t!==A))}};ws.nextOrdering=1;let Qi=ws;class Gg{constructor({maxSdfs:A,maxEdits:t}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new Bt({key:"sdfArray",type:jn,globals:()=>[$n],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:e=>(e.numSdfs=this.numSdfs,e.sdfTexture=this.sdfTexture,e)}),this.maxEdits=Math.max(16,t??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new oi({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,t){const e=new pa(A,8,t,Yt,Mt);return e.internalFormat="RGBA32UI",e.needsUpdate=!0,e}newEdits(A,t){return new Bt({key:"edits",type:"uvec4",count:t,globals:()=>[Ar],value:A})}ensureCapacity({maxSdfs:A,maxEdits:t}){let e=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),t>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,t),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),e=!0),e}updateEditData(A,t){const e=this.editData[A]!==t;return this.editData[A]=t,e}updateEditFloatData(A,t){re[0]=t;const e=this.editFloatData[A]!==re[0];return e&&(this.editFloatData[A]=re[0]),e}encodeEdit(A,{sdfFirst:t,sdfCount:e,invert:s,rgbaBlendMode:i,softEdge:r,sdfSmooth:a}){const g=A*4;let o=!1;return o=this.updateEditData(g+0,i|(s?256:0))||o,o=this.updateEditData(g+1,t|e<<16)||o,o=this.updateEditFloatData(g+2,r)||o,o=this.updateEditFloatData(g+3,a)||o,o}updateSdfData(A,t){const e=this.sdfData[A]!==t;return this.sdfData[A]=t,e}updateSdfFloatData(A,t){re[0]=t;const e=this.sdfFloatData[A]!==re[0];return e&&(this.sdfFloatData[A]=re[0]),e}encodeSdf(A,{sdfType:t,invert:e,center:s,quaternion:i,scale:r,sizes:a},g){const o=A*32,I=t|(e?256:0);let B=!1;B=this.updateSdfFloatData(o+0,(s==null?void 0:s.x)??0)||B,B=this.updateSdfFloatData(o+1,(s==null?void 0:s.y)??0)||B,B=this.updateSdfFloatData(o+2,(s==null?void 0:s.z)??0)||B,B=this.updateSdfData(o+3,I)||B,B=this.updateSdfFloatData(o+4,(i==null?void 0:i.x)??0)||B,B=this.updateSdfFloatData(o+5,(i==null?void 0:i.y)??0)||B,B=this.updateSdfFloatData(o+6,(i==null?void 0:i.z)??0)||B,B=this.updateSdfFloatData(o+7,(i==null?void 0:i.w)??0)||B,B=this.updateSdfFloatData(o+8,(r==null?void 0:r.x)??0)||B,B=this.updateSdfFloatData(o+9,(r==null?void 0:r.y)??0)||B,B=this.updateSdfFloatData(o+10,(r==null?void 0:r.z)??0)||B,B=this.updateSdfData(o+11,0)||B,B=this.updateSdfFloatData(o+12,(a==null?void 0:a.x)??0)||B,B=this.updateSdfFloatData(o+13,(a==null?void 0:a.y)??0)||B,B=this.updateSdfFloatData(o+14,(a==null?void 0:a.z)??0)||B,B=this.updateSdfFloatData(o+15,(a==null?void 0:a.w)??0)||B;const Q=Math.min(4,g.length);for(let h=0;h<Q;++h){const C=o+16+h*4;B=this.updateSdfFloatData(C+0,g[h].x)||B,B=this.updateSdfFloatData(C+1,g[h].y)||B,B=this.updateSdfFloatData(C+2,g[h].z)||B,B=this.updateSdfFloatData(C+3,g[h].w)||B}return B}update(A){const t=A.reduce((B,{sdfs:Q})=>B+Q.length,0),e=this.ensureCapacity({maxEdits:A.length,maxSdfs:t}),s=[new fA,new fA],i=new f,r=new gA,a=new f,g=new fA;let o=0,I=e;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,I=!0);for(const[B,{edit:Q,sdfs:h}]of A.entries()){I=this.encodeEdit(B,{sdfFirst:o,sdfCount:h.length,invert:Q.invert,rgbaBlendMode:kg(Q.rgbaBlendMode),softEdge:Q.softEdge,sdfSmooth:Q.sdfSmooth})||I;let C=!1;for(const E of h)g.set(E.scale.x,E.scale.y,E.scale.z,E.radius),E.scale.setScalar(1),E.updateMatrixWorld(),E.matrixWorld.clone().invert().decompose(i,r,a),E.scale.set(g.x,g.y,g.z),E.updateMatrixWorld(),s[0].set(E.color.r,E.color.g,E.color.b,E.opacity),s[1].set(E.displace.x,E.displace.y,E.displace.z,1),C=this.encodeSdf(o,{sdfType:Ng(E.type),invert:E.invert,center:i,quaternion:r,scale:a,sizes:g},s)||C,o+=1;this.numSdfs=o,C&&(this.sdfTexture.needsUpdate=!0),I||(I=C)}return{updated:I,dynoUpdated:e}}modify(A){return Ug(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const jn={type:"SdfArray"},$n=ZA(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`),Ar=ZA(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);function Ug(n,A,t,e){return new uA({inTypes:{gsplat:xA,sdfArray:jn,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:xA},globals:()=>[$n,Ar],inputs:{gsplat:n,sdfArray:A,numEdits:t,rgbaDisplaceEdits:e},statements:({inputs:i,outputs:r})=>{const{sdfArray:a,numEdits:g,rgbaDisplaceEdits:o}=i,{gsplat:I}=r;return ot(`\n ${I} = ${i.gsplat};\n if (isGsplatActive(${I}.flags)) {\n for (int editIndex = 0; editIndex < ${g}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${o}[editIndex], ${a}.sdfTexture, ${a}.numSdfs,\n ${I}.center, ${I}.rgba\n );\n }\n }\n `)}}).outputs.gsplat}const re=new Float32Array(1);class ls{constructor(){this.scale=new Es({value:Number.NEGATIVE_INFINITY}),this.rotate=new qn({value:new gA(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new og({value:new f(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}apply(A){return wg(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}applyDir(A){return Dg(A,{rotate:this.rotate})}applyGsplat(A){return Ag(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const t=new f,e=new gA,s=new f;A.decompose(s,e,t);const i=(t.x+t.y+t.z)/3;let r=!1;return i!==this.scale.value&&(this.scale.value=i,r=!0),s.equals(this.translate.value)||(this.translate.value.copy(s),r=!0),e.equals(this.rotate.value)||(this.rotate.value.copy(e),r=!0),r}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class Lg extends mA{constructor({numSplats:A,generator:t,construct:e,update:s}){if(super(),this.numSplats=A??0,this.generator=t,this.frameUpdate=s,this.version=0,e){const i=e(this);Object.assign(this,i)}}updateVersion(){this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}const Dt=class Dt extends Lg{constructor(A={}){const t=new ls,e=new ls,s=new ls,i=new ls,r=new qn({value:new fA(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY)}),a=new Es({value:0}),g=new Es({value:0}),o={transform:t,viewToWorld:e,worldToView:s,viewToObject:i,recolor:r,time:a,deltaTime:g};if(super({update:({time:I,deltaTime:B,viewToWorld:Q,globalEdits:h})=>this.update({time:I,deltaTime:B,viewToWorld:Q,globalEdits:h})}),this.isInitialized=!1,this.recolor=new kt(1,1,1),this.opacity=1,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.packedSplats=A.packedSplats??new ne,this.numSplats=this.packedSplats.numSplats,this.editable=A.editable??!0,this.onFrame=A.onFrame,this.context=o,this.objectModifier=A.objectModifier,this.worldModifier=A.worldModifier,this.updateGenerator(),A.url||A.fileBytes||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const I=A.onLoad(this);I instanceof Promise&&await I}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const I=A.onLoad(this);I instanceof Promise&&(this.initialized=I.then(()=>this))}}async asyncInitialize(A){const{url:t,fileBytes:e,fileType:s,fileName:i,maxSplats:r,constructSplats:a}=A;if(t||e||a){const g={url:t,fileBytes:e,fileType:s,fileName:i,maxSplats:r,construct:a};this.packedSplats.reinitialize(g)}this.packedSplats&&(await this.packedSplats.initialized,this.numSplats=this.packedSplats.numSplats,this.updateGenerator())}static async staticInitialize(){await Ds(),Dt.isStaticInitialized=!0}pushSplat(A,t,e,s,i){this.packedSplats.pushSplat(A,t,e,s,i)}forEachSplat(A){this.packedSplats.forEachSplat(A)}dispose(){this.packedSplats.dispose()}constructGenerator(A){const{transform:t,viewToObject:e,recolor:s}=A,i=rs({index:"int"},{gsplat:xA},({index:r})=>{if(!r)throw new Error("index is undefined");let a=ja(this.packedSplats.dyno,r);if(this.maxSh>=1){const{sh1Texture:o,sh2Texture:I,sh3Texture:B}=this.ensureShTextures();if(o){const Q=e.translate,{center:h}=Cs(a).outputs,C=ug(hg(h,Q));let E=Hg(a,o,C);this.maxSh>=2&&I&&(E=cs(E,Tg(a,I,C))),this.maxSh>=3&&B&&(E=cs(E,vg(a,B,C)));let{rgba:l}=Cs(a).outputs;l=cs(l,dg(E,Ga("float",0))),a=ai({gsplat:a,rgba:l})}}if(this.splatRgba){const o=Fg(this.splatRgba.dyno,r);a=ai({gsplat:a,rgba:o})}this.skinning&&(a=this.skinning.modify(a)),this.objectModifier&&(a=this.objectModifier.apply({gsplat:a}).gsplat),a=t.applyGsplat(a);const g=Cg(s,Cs(a).outputs.rgba);return a=ai({gsplat:a,rgba:g}),this.rgbaDisplaceEdits&&(a=this.rgbaDisplaceEdits.modify(a)),this.worldModifier&&(a=this.worldModifier.apply({gsplat:a}).gsplat),{gsplat:a}});this.generator=i}updateGenerator(){this.constructGenerator(this.context)}update({time:A,viewToWorld:t,deltaTime:e,globalEdits:s}){var l;this.numSplats=this.packedSplats.numSplats,this.context.time.value=A,this.context.deltaTime.value=e,Dt.dynoTime.value=A;const{transform:i,viewToObject:r,recolor:a}=this.context;let g=i.update(this);this.context.viewToWorld.updateFromMatrix(t)&&this.enableViewToWorld&&(g=!0);const o=t.clone().invert();this.context.worldToView.updateFromMatrix(o)&&this.enableWorldToView&&(g=!0);const Q=new cA().compose(i.translate.value,i.rotate.value,new f().setScalar(i.scale.value)).invert().multiply(t);r.updateFromMatrix(Q)&&(this.enableViewToObject||this.packedSplats.extra.sh1)&&(g=!0);const h=new fA(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);h.equals(a.value)||(a.value.copy(h),g=!0);const C=this.editable?(this.edits??[]).concat(s):[];this.editable&&!this.edits&&this.traverseVisible(c=>{c instanceof Qi&&C.push(c)}),C.sort((c,u)=>c.ordering-u.ordering);const E=C.map(c=>{if(c.sdfs!=null)return{edit:c,sdfs:c.sdfs};const u=[];return c.traverseVisible(d=>{d instanceof Rg&&u.push(d)}),{edit:c,sdfs:u}});if(E.length>0&&!this.rgbaDisplaceEdits){const c=E.length,u=E.reduce((d,y)=>d+y.sdfs.length,0);this.rgbaDisplaceEdits=new Gg({maxEdits:c,maxSdfs:u}),this.updateGenerator()}if(this.rgbaDisplaceEdits){const c=this.rgbaDisplaceEdits.update(E);g||(g=c.updated),c.dynoUpdated&&this.updateGenerator()}g&&this.updateVersion(),(l=this.onFrame)==null||l.call(this,{mesh:this,time:A,deltaTime:e})}raycast(A,t){if(!this.packedSplats.packedArray||!this.packedSplats.numSplats)return;const{near:e,far:s,ray:i}=A,r=this.matrixWorld.clone().invert(),a=new VA().setFromMatrix4(r),g=i.origin.clone().applyMatrix4(r),o=i.direction.clone().applyMatrix3(a),I=new f;r.decompose(new f,new gA,I),(I.x*I.y*I.z)**(1/3);const Q=yr(g.x,g.y,g.z,o.x,o.y,o.z,e,s,this.packedSplats.numSplats,this.packedSplats.packedArray,!0);for(const h of Q){const C=i.direction.clone().multiplyScalar(h).add(i.origin);t.push({distance:h,point:C,object:this})}}ensureShTextures(){if(!this.packedSplats.extra.sh1)return{};let A=this.packedSplats.extra.sh1Texture;if(!A){let s=this.packedSplats.extra.sh1;const{width:i,height:r,depth:a,maxSplats:g}=GA(s.length/2);if(s.length<g*2){const I=new Uint32Array(g*2);I.set(s),this.packedSplats.extra.sh1=I,s=I}const o=new ct(s,i,r,a);o.format=Or,o.type=Mt,o.internalFormat="RG32UI",o.needsUpdate=!0,A=new Ii({value:o,key:"sh1"}),this.packedSplats.extra.sh1Texture=A}if(!this.packedSplats.extra.sh2)return{sh1Texture:A};let t=this.packedSplats.extra.sh2Texture;if(!t){let s=this.packedSplats.extra.sh2;const{width:i,height:r,depth:a,maxSplats:g}=GA(s.length/4);if(s.length<g*4){const I=new Uint32Array(g*4);I.set(s),this.packedSplats.extra.sh2=I,s=I}const o=new ct(s,i,r,a);o.format=Yt,o.type=Mt,o.internalFormat="RGBA32UI",o.needsUpdate=!0,t=new Ii({value:o,key:"sh2"}),this.packedSplats.extra.sh2Texture=t}if(!this.packedSplats.extra.sh3)return{sh1Texture:A,sh2Texture:t};let e=this.packedSplats.extra.sh3Texture;if(!e){let s=this.packedSplats.extra.sh3;const{width:i,height:r,depth:a,maxSplats:g}=GA(s.length/4);if(s.length<g*4){const I=new Uint32Array(g*4);I.set(s),this.packedSplats.extra.sh3=I,s=I}const o=new ct(s,i,r,a);o.format=Yt,o.type=Mt,o.internalFormat="RGBA32UI",o.needsUpdate=!0,e=new Ii({value:o,key:"sh3"}),this.packedSplats.extra.sh3Texture=e}return{sh1Texture:A,sh2Texture:t,sh3Texture:e}}};Dt.staticInitialized=Dt.staticInitialize(),Dt.isStaticInitialized=!1,Dt.dynoTime=new Es({value:0});let hi=Dt;const bg=ZA(`\n vec3 evaluateSH1(Gsplat gsplat, usampler2DArray sh1, vec3 viewDir) {\n // Extract sint7 values packed into 2 x uint32\n uvec2 packed = texelFetch(sh1, splatTexCoord(gsplat.index), 0).rg;\n vec3 sh1_0 = vec3(ivec3(\n int(packed.x << 25u) >> 25,\n int(packed.x << 18u) >> 25,\n int(packed.x << 11u) >> 25\n )) / 63.0;\n vec3 sh1_1 = vec3(ivec3(\n int(packed.x << 4u) >> 25,\n int((packed.x >> 3u) | (packed.y << 29u)) >> 25,\n int(packed.y << 22u) >> 25\n )) / 63.0;\n vec3 sh1_2 = vec3(ivec3(\n int(packed.y << 15u) >> 25,\n int(packed.y << 8u) >> 25,\n int(packed.y << 1u) >> 25\n )) / 63.0;\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`),Yg=ZA(`\n vec3 evaluateSH2(Gsplat gsplat, usampler2DArray sh2, vec3 viewDir) {\n // Extract sint8 values packed into 4 x uint32\n uvec4 packed = texelFetch(sh2, splatTexCoord(gsplat.index), 0);\n vec3 sh2_0 = vec3(ivec3(\n int(packed.x << 24u) >> 24,\n int(packed.x << 16u) >> 24,\n int(packed.x << 8u) >> 24\n )) / 127.0;\n vec3 sh2_1 = vec3(ivec3(\n int(packed.x) >> 24,\n int(packed.y << 24u) >> 24,\n int(packed.y << 16u) >> 24\n )) / 127.0;\n vec3 sh2_2 = vec3(ivec3(\n int(packed.y << 8u) >> 24,\n int(packed.y) >> 24,\n int(packed.z << 24u) >> 24\n )) / 127.0;\n vec3 sh2_3 = vec3(ivec3(\n int(packed.z << 16u) >> 24,\n int(packed.z << 8u) >> 24,\n int(packed.z) >> 24\n )) / 127.0;\n vec3 sh2_4 = vec3(ivec3(\n int(packed.w << 24u) >> 24,\n int(packed.w << 16u) >> 24,\n int(packed.w << 8u) >> 24\n )) / 127.0;\n\n return sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n }\n`),Jg=ZA(`\n vec3 evaluateSH3(Gsplat gsplat, usampler2DArray sh3, vec3 viewDir) {\n // Extract sint6 values packed into 4 x uint32\n uvec4 packed = texelFetch(sh3, splatTexCoord(gsplat.index), 0);\n vec3 sh3_0 = vec3(ivec3(\n int(packed.x << 26u) >> 26,\n int(packed.x << 20u) >> 26,\n int(packed.x << 14u) >> 26\n )) / 31.0;\n vec3 sh3_1 = vec3(ivec3(\n int(packed.x << 8u) >> 26,\n int(packed.x << 2u) >> 26,\n int((packed.x >> 4u) | (packed.y << 28u)) >> 26\n )) / 31.0;\n vec3 sh3_2 = vec3(ivec3(\n int(packed.y << 22u) >> 26,\n int(packed.y << 16u) >> 26,\n int(packed.y << 10u) >> 26\n )) / 31.0;\n vec3 sh3_3 = vec3(ivec3(\n int(packed.y << 4u) >> 26,\n int((packed.y >> 2u) | (packed.z << 30u)) >> 26,\n int(packed.z << 24u) >> 26\n )) / 31.0;\n vec3 sh3_4 = vec3(ivec3(\n int(packed.z << 18u) >> 26,\n int(packed.z << 12u) >> 26,\n int(packed.z << 6u) >> 26\n )) / 31.0;\n vec3 sh3_5 = vec3(ivec3(\n int(packed.z) >> 26,\n int(packed.w << 26u) >> 26,\n int(packed.w << 20u) >> 26\n )) / 31.0;\n vec3 sh3_6 = vec3(ivec3(\n int(packed.w << 14u) >> 26,\n int(packed.w << 8u) >> 26,\n int(packed.w << 2u) >> 26\n )) / 31.0;\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);function Hg(n,A,t){return ii({inTypes:{gsplat:xA,sh1:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:n,sh1:A,viewDir:t},globals:()=>[It,bg],statements:({inputs:e,outputs:s})=>ot(`\n if (isGsplatActive(${e.gsplat}.flags)) {\n ${s.rgb} = evaluateSH1(${e.gsplat}, ${e.sh1}, ${e.viewDir});\n } else {\n ${s.rgb} = vec3(0.0);\n }\n `)}).outputs.rgb}function Tg(n,A,t){return ii({inTypes:{gsplat:xA,sh2:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:n,sh2:A,viewDir:t},globals:()=>[It,Yg],statements:({inputs:e,outputs:s})=>ot(`\n if (isGsplatActive(${e.gsplat}.flags)) {\n ${s.rgb} = evaluateSH2(${e.gsplat}, ${e.sh2}, ${e.viewDir});\n } else {\n ${s.rgb} = vec3(0.0);\n }\n `)}).outputs.rgb}function vg(n,A,t){return ii({inTypes:{gsplat:xA,sh3:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:n,sh3:A,viewDir:t},globals:()=>[It,Jg],statements:({inputs:e,outputs:s})=>ot(`\n if (isGsplatActive(${e.gsplat}.flags)) {\n ${s.rgb} = evaluateSH3(${e.gsplat}, ${e.sh3}, ${e.viewDir});\n } else {\n ${s.rgb} = vec3(0.0);\n }\n `)}).outputs.rgb}const Ie=class Ie{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const t=new ReadableStream({start:r=>{r.enqueue(this.fileBytes.slice(0,65536)),r.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const e=`end_header\n`;for(;;){const{value:r,done:a}=await t.read();if(a)throw new Error("Failed to read header");this.header+=r;const g=this.header.indexOf(e);if(g>=0){this.header=this.header.slice(0,g+e.length);break}}const s=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,s),this.elements={};let i=null;this.comments=[],this.header.trim().split(`\n`).forEach((r,a)=>{const g=r.trim();if(a===0){if(g!=="ply")throw new Error("Invalid PLY header");return}if(g.length===0)return;const o=g.split(" ");switch(o[0]){case"format":if(o[1]==="binary_little_endian")this.littleEndian=!0;else if(o[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${o[1]}`);if(o[2]!=="1.0")throw new Error(`Unsupported PLY version: ${o[2]}`);break;case"end_header":break;case"comment":this.comments.push(g.slice(8));break;case"element":{const I=o[1];i={name:I,count:Number.parseInt(o[2]),properties:{}},this.elements[I]=i;break}case"property":if(i==null)throw new Error("Property must be inside an element");o[1]==="list"?i.properties[o[4]]={isList:!0,type:o[3],countType:o[2]}:i.properties[o[2]]={isList:!1,type:o[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let t=0;const e=this.data;if(e==null)throw new Error("No data to parse");for(const s in this.elements){const i=this.elements[s],{count:r,properties:a}=i,g={},o=[];for(const[B,Q]of Object.entries(a))Q.isList?(g[B]=[],o.push(()=>{const h=g[B];h.length=ds[Q.countType](e,t,this.littleEndian),t+=ae[Q.countType];for(let C=0;C<h.length;C++)h[C]=ds[Q.type](e,t,this.littleEndian),t+=ae[Q.type]})):(g[B]=0,o.push(()=>{g[B]=ds[Q.type](e,t,this.littleEndian),t+=ae[Q.type]}));const I=A(i)??(()=>{});for(let B=0;B<r;B++){for(const Q of o)Q();I(B,g)}}}parseSplats(A,t){if(this.elements.vertex==null)throw new Error("No vertex element found");let e=!1;const s=[];let i=0,r=[],a=[],g=[],o,I,B;function Q(){const c=qg[i];r=new Array(3).fill(null).flatMap((u,d)=>[0,1,2].map((y,w)=>`f_rest_${d+w*c/3}`)),a=new Array(5).fill(null).flatMap((u,d)=>[0,1,2].map((y,w)=>`f_rest_${3+d+w*c/3}`)),g=new Array(7).fill(null).flatMap((u,d)=>[0,1,2].map((y,w)=>`f_rest_${8+d+w*c/3}`)),o=i>=1?new Float32Array(3*3):void 0,I=i>=2?new Float32Array(5*3):void 0,B=i>=3?new Float32Array(7*3):void 0}function h(c,u){if(!o)throw new Error("Missing sh1");for(const[d,y]of r.entries())o[d]=u[y]*8/255-4;if(I)for(const[d,y]of a.entries())I[d]=u[y]*8/255-4;if(B)for(const[d,y]of g.entries())B[d]=u[y]*8/255-4;t==null||t(c,o,I,B)}function C(c){const{min_x:u,min_y:d,min_z:y,max_x:w,max_y:x,max_z:M,min_scale_x:p,min_scale_y:D,min_scale_z:F,max_scale_x:m,max_scale_y:S,max_scale_z:N}=c.properties;if(!u||!d||!y||!w||!x||!M||!p||!D||!F||!m||!S||!N)throw new Error("Missing PLY chunk properties");return e=!0,(k,G)=>{const{min_x:R,min_y:L,min_z:W,max_x:_,max_y:j,max_z:X,min_scale_x:$,min_scale_y:q,min_scale_z:z,max_scale_x:b,max_scale_y:O,max_scale_z:U,min_r:yA,min_g:dA,min_b:UA,max_r:pA,max_g:MA,max_b:SA}=G;s.push({min_x:R,min_y:L,min_z:W,max_x:_,max_y:j,max_z:X,min_scale_x:$,min_scale_y:q,min_scale_z:z,max_scale_x:b,max_scale_y:O,max_scale_z:U,min_r:yA,min_g:dA,min_b:UA,max_r:pA,max_g:MA,max_b:SA})}}function E(c){if(t&&c.name==="sh")return i=er(c.properties),Q(),h;if(c.name!=="vertex")return null;const{packed_position:u,packed_rotation:d,packed_scale:y,packed_color:w}=c.properties;if(!u||!d||!y||!w)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const x=Math.sqrt(2);return(M,p)=>{const D=s[M>>>8];if(D==null)throw new Error("Missing PLY chunk");const{min_x:F,min_y:m,min_z:S,max_x:N,max_y:k,max_z:G,min_scale_x:R,min_scale_y:L,min_scale_z:W,max_scale_x:_,max_scale_y:j,max_scale_z:X,min_r:$,min_g:q,min_b:z,max_r:b,max_g:O,max_b:U}=D,{packed_position:yA,packed_rotation:dA,packed_scale:UA,packed_color:pA}=p,MA=(yA>>>21&2047)/2047*(N-F)+F,SA=(yA>>>11&1023)/1023*(k-m)+m,PA=(yA&2047)/2047*(G-S)+S,FA=((dA>>>20&1023)/1023-.5)*x,JA=((dA>>>10&1023)/1023-.5)*x,HA=((dA&1023)/1023-.5)*x,J=Math.sqrt(Math.max(0,1-FA*FA-JA*JA-HA*HA)),QA=dA>>>30,Y=QA===0?FA:QA===1?J:JA,Qt=QA<=1?JA:QA===2?J:HA,Be=QA<=2?HA:J,hA=QA===0?J:FA,H=Math.exp((UA>>>21&2047)/2047*(_-R)+R),AA=Math.exp((UA>>>11&1023)/1023*(j-L)+L),v=Math.exp((UA&2047)/2047*(X-W)+W),WA=(pA>>>24&255)/255*((b??1)-($??0))+($??0),Se=(pA>>>16&255)/255*((O??1)-(q??0))+(q??0),Fe=(pA>>>8&255)/255*((U??1)-(z??0))+(z??0),Ne=(pA&255)/255;A(M,MA,SA,PA,H,AA,v,Y,Qt,Be,hA,Ne,WA,Se,Fe)}}const l=c=>{if(c.name==="chunk")return C(c);if(e)return E(c);if(c.name!=="vertex")return null;const{x:u,y:d,z:y,scale_0:w,scale_1:x,scale_2:M,rot_0:p,rot_1:D,rot_2:F,rot_3:m,opacity:S,f_dc_0:N,f_dc_1:k,f_dc_2:G,red:R,green:L,blue:W,alpha:_}=c.properties;if(!u||!d||!y)throw new Error("Missing PLY properties: x, y, z");const j=w&&x&&M,X=p&&D&&F&&m,$=_!=null?fs[_.type]:1,q=R!=null?fs[R.type]:1,z=L!=null?fs[L.type]:1,b=W!=null?fs[W.type]:1;return i=er(c.properties),Q(),(O,U)=>{const yA=j?Math.exp(U.scale_0):Ie.defaultPointScale,dA=j?Math.exp(U.scale_1):Ie.defaultPointScale,UA=j?Math.exp(U.scale_2):Ie.defaultPointScale,pA=X?U.rot_1:0,MA=X?U.rot_2:0,SA=X?U.rot_3:0,PA=X?U.rot_0:1,FA=S!=null?1/(1+Math.exp(-U.opacity)):_!=null?U.alpha/$:1,JA=N!=null?U.f_dc_0*us+.5:R!=null?U.red/q:1,HA=k!=null?U.f_dc_1*us+.5:L!=null?U.green/z:1,J=G!=null?U.f_dc_2*us+.5:W!=null?U.blue/b:1;if(A(O,U.x,U.y,U.z,yA,dA,UA,pA,MA,SA,PA,FA,JA,HA,J),t&&o){if(o)for(const[QA,Y]of r.entries())o[QA]=U[Y];if(I)for(const[QA,Y]of a.entries())I[QA]=U[Y];if(B)for(const[QA,Y]of g.entries())B[QA]=U[Y];t(O,o,I,B)}}};this.parseData(l)}injectRgba(A){let t=0;const e=this.data;if(e==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const s in this.elements){const i=this.elements[s],{count:r,properties:a}=i,g=[];let o=0;const I=s==="vertex";if(I){for(const B of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!a[B]||a[B].type!=="float")throw new Error(`Can\'t injectRgba due to property: ${B}`)}for(const[B,Q]of Object.entries(a))if(Q.isList)g.push(()=>{const h=ds[Q.countType](e,t,this.littleEndian);t+=ae[Q.countType],t+=h*ae[Q.type]});else{if(I)if(B==="f_dc_0"||B==="f_dc_1"||B==="f_dc_2"){const h=Number.parseInt(B.slice(5));g.push(()=>{const C=(A[o+h]/255-.5)/us;tr[Q.type](e,t,this.littleEndian,C)})}else B==="opacity"&&g.push(()=>{const h=Math.max(-100,Math.min(100,-Math.log(1/(A[o+3]/255)-1)));tr[Q.type](e,t,this.littleEndian,h)});g.push(()=>{t+=ae[Q.type]})}for(let B=0;B<r;B++){for(const Q of g)Q();I&&(o+=4)}}}};Ie.defaultPointScale=.001;let De=Ie;const us=.28209479177387814,ds={char:(n,A,t)=>n.getInt8(A),uchar:(n,A,t)=>n.getUint8(A),short:(n,A,t)=>n.getInt16(A,t),ushort:(n,A,t)=>n.getUint16(A,t),int:(n,A,t)=>n.getInt32(A,t),uint:(n,A,t)=>n.getUint32(A,t),float:(n,A,t)=>n.getFloat32(A,t),double:(n,A,t)=>n.getFloat64(A,t)},tr={char:(n,A,t,e)=>{n.setInt8(A,e)},uchar:(n,A,t,e)=>{n.setUint8(A,e)},short:(n,A,t,e)=>{n.setInt16(A,e,t)},ushort:(n,A,t,e)=>{n.setUint16(A,e,t)},int:(n,A,t,e)=>{n.setInt32(A,e,t)},uint:(n,A,t,e)=>{n.setUint32(A,e,t)},float:(n,A,t,e)=>{n.setFloat32(A,e,t)},double:(n,A,t,e)=>{n.setFloat64(A,e,t)}},ae={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},fs={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},zg={0:0,9:1,24:2,45:3},qg={0:0,1:9,2:24,3:45};function er(n){let A=0;for(;n[`f_rest_${A}`];)A+=1;const t=zg[A];if(t==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return t}function Kg(n){return new Worker(self.location.href,{name:n==null?void 0:n.name})}class _g{constructor(){this.messages={},this.messageIdNext=0,this.worker=new Kg,this.worker.onmessage=A=>this.onMessage(A)}makeMessageId(){return++this.messageIdNext}makeMessagePromiseId(){const A=this.makeMessageId(),t=new Promise((e,s)=>{this.messages[A]={resolve:e,reject:s}});return{id:A,promise:t}}onMessage(A){const{id:t,result:e,error:s}=A.data,i=this.messages[t];i&&(delete this.messages[t],s?i.reject(s):i.resolve(e))}async call(A,t){const{id:e,promise:s}=this.makeMessagePromiseId();return this.worker.postMessage({name:A,args:t,id:e},{transfer:Un(t)}),s}}let sr=4,ys=0;const ir=[],nr=[];async function Og(){const n=ir.shift();if(n)return n;if(ys<sr){const A=new _g;return ys+=1,A}return new Promise(A=>{nr.push(A)})}function Zg(n){if(ys>sr){ys-=1;return}const A=nr.shift();if(A){A(n);return}ir.push(n)}async function ge(n){const A=await Og();try{return await n(A)}finally{Zg(A)}}class Pg extends ei{constructor(A){super(A),this.fileLoader=new xa(A)}load(A,t,e,s){const i=this.manager.resolveURL((this.path??"")+(A??"")),r=new Headers(this.requestHeader),a=this.withCredentials?"include":"same-origin",g=new Request(i,{headers:r,credentials:a});let o=this.fileType;this.manager.itemStart(i),rr(g,e).then(async I=>{const B=[new ProgressEvent("progress",{lengthComputable:!0,loaded:I.byteLength,total:I.byteLength})];function Q(){if(e){const l=B.every(d=>d.lengthComputable||d.loaded===0&&d.total===0),c=B.reduce((d,y)=>d+y.loaded,0),u=B.reduce((d,y)=>d+y.total,0);e(new ProgressEvent("progress",{lengthComputable:l,loaded:c,total:u}))}}const h={},C=[],E=or(I);if(o==="pcsogs"&&E===void 0)throw new Error("Invalid PC SOGS file");if(E!==void 0){o="pcsogs";for(const l of["means","scales","quats","sh0","shN"]){const c=E[l];if(c)for(const u of c.files){const d=new URL(u,i).toString(),y=B.length;B.push(new ProgressEvent("progress")),this.manager.itemStart(d);const w=new Request(d,{headers:r,credentials:a}),x=rr(w,M=>{B[y]=M,Q()}).then(M=>{h[u]=M}).catch(M=>{throw this.manager.itemError(d),M}).finally(()=>{this.manager.itemEnd(d)});C.push(x)}}}if(await Promise.all(C),t){const l=await Br({input:I,extraFiles:h,fileType:o,pathOrUrl:i});this.packedSplats?(this.packedSplats.initialize(l),t(this.packedSplats)):t(new ne(l))}}).catch(I=>{this.manager.itemError(i),s==null||s(I)}).finally(()=>{this.manager.itemEnd(i)})}async loadAsync(A,t){return new Promise((e,s)=>{this.load(A,i=>{e(i)},t,s)})}parse(A){return new hi({packedSplats:A})}}async function rr(n,A){const t=await fetch(n);if(!t.ok)throw new Error(`${t.status} "${t.statusText}" fetching URL: ${n.url}`);if(!t.body)throw new Error(`Response body is null for URL: ${n.url}`);const e=t.body.getReader(),s=Number.parseInt(t.headers.get("Content-Length")||"0"),i=Number.isNaN(s)?0:s;let r=0;const a=[];for(;;){const{done:I,value:B}=await e.read();if(I)break;a.push(B),r+=B.length,A&&A(new ProgressEvent("progress",{lengthComputable:i!==0,loaded:r,total:i}))}const g=new Uint8Array(r);let o=0;for(const I of a)g.set(I,o),o+=I.length;return g.buffer}var me=(n=>(n.PLY="ply",n.SPZ="spz",n.SPLAT="splat",n.KSPLAT="ksplat",n.PCSOGS="pcsogs",n.PCSOGSZIP="pcsogszip",n))(me||{});function ar(n){const A=new DataView(n.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if((A.getUint32(0,!0)&16777215)===559903){const t=Za(n,4);return new DataView(t.buffer).getUint32(0,!0)===1347635022?"spz":void 0}if(A.getUint32(0,!0)===67324752)return Ir(n)?"pcsogszip":void 0}function Wg(n){const A=n.split(/[?#]/,1)[0],t=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\\\")),e=A.slice(t+1),s=e.lastIndexOf(".");return s<=0||s===e.length-1?"":e.slice(s+1).toLowerCase()}function gr(n){const A=Wg(n);if(A==="ply")return"ply";if(A==="spz")return"spz";if(A==="splat")return"splat";if(A==="ksplat")return"ksplat"}function or(n){try{let A;if(typeof n=="string")A=n;else{const e=n instanceof ArrayBuffer?new Uint8Array(n):n;if(e.length>65536)return;A=new TextDecoder().decode(e)}const t=JSON.parse(A);if(!t||typeof t!="object"||Array.isArray(t))return;for(const e of["means","scales","quats","sh0"])if(!t[e]||typeof t[e]!="object"||Array.isArray(t[e])||!t[e].shape||!t[e].files||e!=="quats"&&(!t[e].mins||!t[e].maxs))return;return t}catch{return}}function Ir(n){try{const A=n instanceof ArrayBuffer?new Uint8Array(n):n;let t=null;const e=vr(A,{filter:({name:i})=>i.split(/[\\\\/]/).pop()==="meta.json"?(t=i,!0):!1});if(!t)return;const s=or(e[t]);return s?{name:t,json:s}:void 0}catch{return}}async function Br({input:n,extraFiles:A,fileType:t,pathOrUrl:e}){const s=n instanceof ArrayBuffer?new Uint8Array(n):n;let i=t;switch(t||(i=ar(s),!i&&e&&(i=gr(e))),i){case"ply":{const r=new De({fileBytes:s});await r.parseHeader();const a=r.numSplats,g=GA(a).maxSplats,o={fileBytes:s,packedArray:new Uint32Array(g*4)};return await ge(async I=>{const{packedArray:B,numSplats:Q,extra:h}=await I.call("unpackPly",o);return{packedArray:B,numSplats:Q,extra:h}})}case"spz":return await ge(async r=>{const{packedArray:a,numSplats:g,extra:o}=await r.call("decodeSpz",{fileBytes:s});return{packedArray:a,numSplats:g,extra:o}});case"splat":return await ge(async r=>{const{packedArray:a,numSplats:g}=await r.call("decodeAntiSplat",{fileBytes:s});return{packedArray:a,numSplats:g}});case"ksplat":return await ge(async r=>{const{packedArray:a,numSplats:g,extra:o}=await r.call("decodeKsplat",{fileBytes:s});return{packedArray:a,numSplats:g,extra:o}});case"pcsogs":return await ge(async r=>{const{packedArray:a,numSplats:g,extra:o}=await r.call("decodePcSogs",{fileBytes:s,extraFiles:A});return{packedArray:a,numSplats:g,extra:o}});case"pcsogszip":return await ge(async r=>{const{packedArray:a,numSplats:g,extra:o}=await r.call("decodePcSogsZip",{fileBytes:s});return{packedArray:a,numSplats:g,extra:o}});default:throw new Error(`Unknown splat file type: ${i}`)}}class Xg{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=GA(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const t=Math.max(A,this.maxSplats*2),e=new Float32Array(t*3),s=new Float32Array(t*3),i=new Float32Array(t*4),r=new Float32Array(t),a=new Float32Array(t*3);if(e.set(this.centers),s.set(this.scales),i.set(this.quaternions),r.set(this.opacities),a.set(this.colors),this.centers=e,this.scales=s,this.quaternions=i,this.opacities=r,this.colors=a,this.sh1){const g=new Float32Array(t*9);g.set(this.sh1),this.sh1=g}if(this.sh2){const g=new Float32Array(t*15);g.set(this.sh2),this.sh2=g}if(this.sh3){const g=new Float32Array(t*21);g.set(this.sh3),this.sh3=g}this.maxSplats=t}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,t,e,s){this.centers[A*3]=t,this.centers[A*3+1]=e,this.centers[A*3+2]=s}setScale(A,t,e,s){this.scales[A*3]=t,this.scales[A*3+1]=e,this.scales[A*3+2]=s}setQuaternion(A,t,e,s,i){this.quaternions[A*4]=t,this.quaternions[A*4+1]=e,this.quaternions[A*4+2]=s,this.quaternions[A*4+3]=i}setOpacity(A,t){this.opacities[A]=t}setColor(A,t,e,s){this.colors[A*3]=t,this.colors[A*3+1]=e,this.colors[A*3+2]=s}setSh1(A,t){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let e=0;e<9;++e)this.sh1[A*9+e]=t[e]}setSh2(A,t){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let e=0;e<15;++e)this.sh2[A*15+e]=t[e]}setSh3(A,t){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let e=0;e<21;++e)this.sh3[A*21+e]=t[e]}}async function Qr(n,A){if(n.quats.encoding!=="quaternion_packed")throw new Error("Unsupported quaternion encoding");const t=n.means.shape[0],e=gs(t),s=new Uint32Array(e*4),i={},r=await Promise.all([xe(A[n.means.files[0]]),xe(A[n.means.files[1]])]);for(let Q=0;Q<t;++Q){const h=Q*4,C=(r[0][h+0]+(r[1][h+0]<<8))/65535,E=(r[0][h+1]+(r[1][h+1]<<8))/65535,l=(r[0][h+2]+(r[1][h+2]<<8))/65535;let c=n.means.mins[0]+(n.means.maxs[0]-n.means.mins[0])*C,u=n.means.mins[1]+(n.means.maxs[1]-n.means.mins[1])*E,d=n.means.mins[2]+(n.means.maxs[2]-n.means.mins[2])*l;c=Math.sign(c)*(Math.exp(Math.abs(c))-1),u=Math.sign(u)*(Math.exp(Math.abs(u))-1),d=Math.sign(d)*(Math.exp(Math.abs(d))-1),Ln(s,Q,c,u,d)}const a=await xe(A[n.scales.files[0]]);for(let Q=0;Q<t;++Q){const h=Q*4,C=a[h+0]/255,E=a[h+1]/255,l=a[h+2]/255,c=n.scales.mins[0]+(n.scales.maxs[0]-n.scales.mins[0])*C,u=n.scales.mins[1]+(n.scales.maxs[1]-n.scales.mins[1])*E,d=n.scales.mins[2]+(n.scales.maxs[2]-n.scales.mins[2])*l;bn(s,Q,Math.exp(c),Math.exp(u),Math.exp(d))}const g=await xe(A[n.quats.files[0]]),o=Math.sqrt(2);for(let Q=0;Q<t;++Q){const h=Q*4,C=(g[h+0]/255-.5)*o,E=(g[h+1]/255-.5)*o,l=(g[h+2]/255-.5)*o,c=Math.sqrt(Math.max(0,1-C*C-E*E-l*l)),u=g[h+3]-252,d=u===0?C:u===1?c:E,y=u<=1?E:u===2?c:l,w=u<=2?l:c;Yn(s,Q,d,y,w,u===0?c:C)}const I=await xe(A[n.sh0.files[0]]),B=.28209479177387814;for(let Q=0;Q<t;++Q){const h=Q*4,C=I[h+0]/255,E=I[h+1]/255,l=I[h+2]/255,c=I[h+3]/255,u=n.sh0.mins[0]+(n.sh0.maxs[0]-n.sh0.mins[0])*C,d=n.sh0.mins[1]+(n.sh0.maxs[1]-n.sh0.mins[1])*E,y=n.sh0.mins[2]+(n.sh0.maxs[2]-n.sh0.mins[2])*l,w=n.sh0.mins[3]+(n.sh0.maxs[3]-n.sh0.mins[3])*c,x=B*u+.5,M=B*d+.5,p=B*y+.5,D=1/(1+Math.exp(-w));Ya(s,Q,x,M,p,D)}if(n.shN){const Q=n.shN.shape[1]>=45,h=n.shN.shape[1]>=24,C=n.shN.shape[1]>=9;C&&(i.sh1=new Uint32Array(t*2)),h&&(i.sh2=new Uint32Array(t*4)),Q&&(i.sh3=new Uint32Array(t*4));const E=new Float32Array(9),l=new Float32Array(15),c=new Float32Array(21),[u,d]=await Promise.all([Ci(A[n.shN.files[0]]),Ci(A[n.shN.files[1]])]);for(let y=0;y<t;++y){const w=y*4,x=d.rgba[w+0]+(d.rgba[w+1]<<8),M=(x&63)*15,D=(x>>>6)*u.width+M;for(let F=0;F<3;++F){if(C)for(let m=0;m<3;++m)E[m*3+F]=n.shN.mins+(n.shN.maxs-n.shN.mins)*u.rgba[(D+m)*4+F]/255;if(h)for(let m=0;m<5;++m)l[m*3+F]=n.shN.mins+(n.shN.maxs-n.shN.mins)*u.rgba[(D+3+m)*4+F]/255;if(Q)for(let m=0;m<7;++m)c[m*3+F]=n.shN.mins+(n.shN.maxs-n.shN.mins)*u.rgba[(D+8+m)*4+F]/255}C&&Is(i.sh1,y,E),h&&Bs(i.sh2,y,l),Q&&Qs(i.sh3,y,c)}}return{packedArray:s,numSplats:t,extra:i}}let ps=null;async function Ci(n){if(!ps&&(ps=new OffscreenCanvas(1,1).getContext("webgl2"),!ps))throw new Error("Failed to create WebGL2 context");const A=new Blob([n]),t=await createImageBitmap(A,{premultiplyAlpha:"none"}),e=ps,s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST);const i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s,0);const r=new Uint8Array(t.width*t.height*4);return e.readPixels(0,0,t.width,t.height,e.RGBA,e.UNSIGNED_BYTE,r),e.deleteTexture(s),e.deleteFramebuffer(i),{rgba:r,width:t.width,height:t.height}}async function xe(n){const{rgba:A}=await Ci(n);return A}async function Vg(n){var B;const A=Ir(n);if(!A)throw new Error("Invalid PC SOGS zip file");const{name:t,json:e}=A,s=t.lastIndexOf("/"),i=t.lastIndexOf("\\\\"),r=t.slice(0,Math.max(s,i)+1),a=new Map,g=[...e.means.files,...e.scales.files,...e.quats.files,...e.sh0.files,...((B=e.shN)==null?void 0:B.files)??[]];for(const Q of g)a.set(r+Q,Q);const o=await new Promise((Q,h)=>{Tr(n,{filter:({name:C})=>a.has(C)},(C,E)=>{C?h(C):Q(E)})}),I={};for(const[Q,h]of a.entries())I[h]=o[Q];return await Qr(e,I)}class hr{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new Pa({fileBytes:this.fileBytes});const t=new DataView(this.reader.read(16).buffer);if(t.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=t.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=t.getUint32(8,!0),this.shDegree=t.getUint8(12),this.fractionalBits=t.getUint8(13),this.flags=t.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=t.getUint8(15),this.parsed=!1}parseSplats(A,t,e,s,i,r){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const a=this.reader.read(this.numSplats*3*2),g=new Uint16Array(a.buffer);for(let o=0;o<this.numSplats;o++){const I=o*3,B=tA(g[I]),Q=tA(g[I+1]),h=tA(g[I+2]);A==null||A(o,B,Q,h)}}else if(this.version===2){const a=1<<this.fractionalBits,g=this.reader.read(this.numSplats*3*3);for(let o=0;o<this.numSplats;o++){const I=o*9,B=((g[I+2]<<24|g[I+1]<<16|g[I]<<8)>>8)/a,Q=((g[I+5]<<24|g[I+4]<<16|g[I+3]<<8)>>8)/a,h=((g[I+8]<<24|g[I+7]<<16|g[I+6]<<8)>>8)/a;A==null||A(o,B,Q,h)}}else throw new Error("Unreachable");{const a=this.reader.read(this.numSplats);for(let g=0;g<this.numSplats;g++)t==null||t(g,a[g]/255)}{const a=this.reader.read(this.numSplats*3),g=Er/.15;for(let o=0;o<this.numSplats;o++){const I=o*3,B=(a[I]/255-.5)*g+.5,Q=(a[I+1]/255-.5)*g+.5,h=(a[I+2]/255-.5)*g+.5;e==null||e(o,B,Q,h)}}{const a=this.reader.read(this.numSplats*3);for(let g=0;g<this.numSplats;g++){const o=g*3,I=Math.exp(a[o]/16-10),B=Math.exp(a[o+1]/16-10),Q=Math.exp(a[o+2]/16-10);s==null||s(g,I,B,Q)}}{const a=this.reader.read(this.numSplats*3);for(let g=0;g<this.numSplats;g++){const o=g*3,I=a[o]/127.5-1,B=a[o+1]/127.5-1,Q=a[o+2]/127.5-1,h=Math.sqrt(Math.max(0,1-I*I-B*B-Q*Q));i==null||i(g,I,B,Q,h)}}if(r&&this.shDegree>=1){const a=new Float32Array(9),g=this.shDegree>=2?new Float32Array(5*3):void 0,o=this.shDegree>=3?new Float32Array(7*3):void 0,I=this.reader.read(this.numSplats*Cr[this.shDegree]*3);let B=0;for(let Q=0;Q<this.numSplats;Q++){for(let h=0;h<9;++h)a[h]=(I[B+h]-128)/128;if(B+=9,g){for(let h=0;h<15;++h)g[h]=(I[B+h]-128)/128;B+=15}if(o){for(let h=0;h<21;++h)o[h]=(I[B+h]-128)/128;B+=21}r==null||r(Q,a,g,o)}}}}const Cr={1:3,2:8,3:15},Er=.28209479177387814,jg=1347635022,$g=2,Ao=1;class wt{constructor({numSplats:A,shDegree:t,fractionalBits:e=12,flagAntiAlias:s=!0}){this.clippedCount=0;const i=19+(t>=1?9:0)+(t>=2?15:0)+(t>=3?21:0),r=16+A*i;this.buffer=new ArrayBuffer(r),this.view=new DataView(this.buffer),this.view.setUint32(0,jg,!0),this.view.setUint32(4,$g,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,t),this.view.setUint8(13,e),this.view.setUint8(14,s?Ao:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=t,this.fractionalBits=e,this.fraction=1<<e,this.flagAntiAlias=s}setCenter(A,t,e,s){const i=Math.round(t*this.fraction),r=Math.max(-8388607,Math.min(8388607,i)),a=Math.round(e*this.fraction),g=Math.max(-8388607,Math.min(8388607,a)),o=Math.round(s*this.fraction),I=Math.max(-8388607,Math.min(8388607,o));(i!==r||a!==g||o!==I)&&(this.clippedCount+=1);const h=16+A*9;this.view.setUint8(h,r&255),this.view.setUint8(h+1,r>>8&255),this.view.setUint8(h+2,r>>16&255),this.view.setUint8(h+3,g&255),this.view.setUint8(h+4,g>>8&255),this.view.setUint8(h+5,g>>16&255),this.view.setUint8(h+6,I&255),this.view.setUint8(h+7,I>>8&255),this.view.setUint8(h+8,I>>16&255)}setAlpha(A,t){const e=16+this.numSplats*9+A;this.view.setUint8(e,Math.max(0,Math.min(255,Math.round(t*255))))}static scaleRgb(A){const t=((A-.5)/(Er/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(t)))}setRgb(A,t,e,s){const i=16+this.numSplats*10+A*3;this.view.setUint8(i,wt.scaleRgb(t)),this.view.setUint8(i+1,wt.scaleRgb(e)),this.view.setUint8(i+2,wt.scaleRgb(s))}setScale(A,t,e,s){const i=16+this.numSplats*13+A*3;this.view.setUint8(i,Math.max(0,Math.min(255,Math.round((Math.log(t)+10)*16)))),this.view.setUint8(i+1,Math.max(0,Math.min(255,Math.round((Math.log(e)+10)*16)))),this.view.setUint8(i+2,Math.max(0,Math.min(255,Math.round((Math.log(s)+10)*16))))}setQuat(A,t,e,s,i){const r=16+this.numSplats*16+A*3,a=i<0;this.view.setUint8(r,Math.max(0,Math.min(255,Math.round(((a?-t:t)+1)*127.5)))),this.view.setUint8(r+1,Math.max(0,Math.min(255,Math.round(((a?-e:e)+1)*127.5)))),this.view.setUint8(r+2,Math.max(0,Math.min(255,Math.round(((a?-s:s)+1)*127.5))))}static quantizeSh(A,t){const e=Math.round(A*128)+128,s=1<<8-t,i=Math.floor((e+s/2)/s)*s;return Math.max(0,Math.min(255,i))}setSh(A,t,e,s){const i=Cr[this.shDegree]||0,r=16+this.numSplats*19+A*i*3;for(let a=0;a<9;++a)this.view.setUint8(r+a,wt.quantizeSh(t[a],5));if(e){const a=r+9;for(let g=0;g<15;++g)this.view.setUint8(a+g,wt.quantizeSh(e[g],4));if(s){const g=a+15;for(let o=0;o<21;++o)this.view.setUint8(g+o,wt.quantizeSh(s[o],4))}}}async finalize(){const A=new Uint8Array(this.buffer),e=new ReadableStream({async start(r){r.enqueue(A),r.close()}}).pipeThrough(new CompressionStream("gzip")),i=await new Response(e).arrayBuffer();return console.log("Compressed",A.length,"bytes to",i.byteLength,"bytes"),new Uint8Array(i)}}async function to(n){var I,B,Q;const A=new Xg,{inputs:t,clipXyz:e,maxSh:s,fractionalBits:i=12,opacityThreshold:r}=n;for(const h of t){let C=function(p){return p.multiplyScalar(d),p.applyQuaternion(y),p.add(w),p},E=function(p){return p.multiplyScalar(d),p},l=function(p){return p.premultiply(y),p},c=function(p){return!x||x.containsPoint(p)},u=function(p){return r!==void 0?p>=r:!0};const d=((I=h.transform)==null?void 0:I.scale)??1,y=new gA().fromArray(((B=h.transform)==null?void 0:B.quaternion)??[0,0,0,1]),w=new f().fromArray(((Q=h.transform)==null?void 0:Q.translate)??[0,0,0]),x=e?new vt(new f().fromArray(e.min),new f().fromArray(e.max)):void 0;let M=h.fileType;switch(M||(M=ar(h.fileBytes),!M&&h.pathOrUrl&&(M=gr(h.pathOrUrl))),M){case me.PLY:{const p=new De({fileBytes:h.fileBytes});await p.parseHeader();let D=null;p.parseSplats((F,m,S,N,k,G,R,L,W,_,j,X,$,q,z)=>{const b=C(new f(m,S,N));if(c(b)&&u(X)){D=A.pushSplat(),A.setCenter(D,b.x,b.y,b.z);const O=E(new f(k,G,R));A.setScale(D,O.x,O.y,O.z);const U=l(new gA(L,W,_,j));A.setQuaternion(D,U.x,U.y,U.z,U.w),A.setOpacity(D,X),A.setColor(D,$,q,z)}else D=null},(F,m,S,N)=>{m&&D!==null&&A.setSh1(D,m),S&&D!==null&&A.setSh2(D,S),N&&D!==null&&A.setSh3(D,N)});break}case me.SPZ:{const p=new hr({fileBytes:h.fileBytes}),D=new Int32Array(p.numSplats);D.fill(-1);const F=new Float32Array(p.numSplats*3),m=new f;p.parseSplats((S,N,k,G)=>{const R=C(new f(N,k,G));F[S*3]=R.x,F[S*3+1]=R.y,F[S*3+2]=R.z},(S,N)=>{m.fromArray(F,S*3),c(m)&&u(N)&&(D[S]=A.pushSplat(),A.setCenter(D[S],m.x,m.y,m.z),A.setOpacity(D[S],N))},(S,N,k,G)=>{D[S]>=0&&A.setColor(D[S],N,k,G)},(S,N,k,G)=>{if(D[S]>=0){const R=E(new f(N,k,G));A.setScale(D[S],R.x,R.y,R.z)}},(S,N,k,G,R)=>{if(D[S]>=0){const L=l(new gA(N,k,G,R));A.setQuaternion(D[S],L.x,L.y,L.z,L.w)}},(S,N,k,G)=>{D[S]>=0&&(A.setSh1(D[S],N),k&&A.setSh2(D[S],k),G&&A.setSh3(D[S],G))});break}case me.SPLAT:Tn(h.fileBytes,p=>{},(p,D,F,m,S,N,k,G,R,L,W,_,j,X,$)=>{const q=C(new f(D,F,m));if(c(q)&&u(_)){const z=A.pushSplat();A.setCenter(z,q.x,q.y,q.z);const b=E(new f(S,N,k));A.setScale(z,b.x,b.y,b.z);const O=l(new gA(G,R,L,W));A.setQuaternion(z,O.x,O.y,O.z,O.w),A.setOpacity(z,_),A.setColor(z,j,X,$)}});break;case me.KSPLAT:{let p=null;Xa(h.fileBytes,D=>{},(D,F,m,S,N,k,G,R,L,W,_,j,X,$,q)=>{const z=C(new f(F,m,S));if(c(z)&&u(j)){p=A.pushSplat(),A.setCenter(p,z.x,z.y,z.z);const b=E(new f(N,k,G));A.setScale(p,b.x,b.y,b.z);const O=l(new gA(R,L,W,_));A.setQuaternion(p,O.x,O.y,O.z,O.w),A.setOpacity(p,j),A.setColor(p,X,$,q)}else p=null},(D,F,m,S)=>{p!==null&&(A.setSh1(p,F),m&&A.setSh2(p,m),S&&A.setSh3(p,S))});break}default:throw new Error(`transcodeSpz not implemented for ${M}`)}}const a=Math.min(s??3,A.sh3?3:A.sh2?2:A.sh1?1:0),g=new wt({numSplats:A.numSplats,shDegree:a,fractionalBits:i,flagAntiAlias:!0});for(let h=0;h<A.numSplats;++h){const C=h*3,E=h*4;g.setCenter(h,A.centers[C],A.centers[C+1],A.centers[C+2]),g.setScale(h,A.scales[C],A.scales[C+1],A.scales[C+2]),g.setQuat(h,A.quaternions[E],A.quaternions[E+1],A.quaternions[E+2],A.quaternions[E+3]),g.setAlpha(h,A.opacities[h]),g.setRgb(h,A.colors[C],A.colors[C+1],A.colors[C+2]),A.sh1&&a>=1&&g.setSh(h,A.sh1.slice(h*9,(h+1)*9),a>=2&&A.sh2?A.sh2.slice(h*15,(h+1)*15):void 0,a>=3&&A.sh3?A.sh3.slice(h*21,(h+1)*21):void 0)}return{fileBytes:await g.finalize(),clippedCount:g.clippedCount}}async function cr(n){const{name:A,args:t,id:e}=n.data;let s,i;try{switch(A){case"unpackPly":{const{packedArray:r,fileBytes:a}=t,g=await eo({packedArray:r,fileBytes:a});s={id:e,numSplats:g.numSplats,packedArray:g.packedArray,extra:g.extra};break}case"decodeSpz":{const{fileBytes:r}=t,a=so(r);s={id:e,numSplats:a.numSplats,packedArray:a.packedArray,extra:a.extra};break}case"decodeAntiSplat":{const{fileBytes:r}=t,a=Wa(r);s={id:e,numSplats:a.numSplats,packedArray:a.packedArray};break}case"decodeKsplat":{const{fileBytes:r}=t,a=Va(r);s={id:e,numSplats:a.numSplats,packedArray:a.packedArray,extra:a.extra};break}case"decodePcSogs":{const{fileBytes:r,extraFiles:a}=t,g=JSON.parse(new TextDecoder().decode(r)),o=await Qr(g,a);s={id:e,numSplats:o.numSplats,packedArray:o.packedArray,extra:o.extra};break}case"decodePcSogsZip":{const{fileBytes:r}=t,a=await Vg(r);s={id:e,numSplats:a.numSplats,packedArray:a.packedArray,extra:a.extra};break}case"sortSplats":{const{maxSplats:r,totalSplats:a,readback:g,ordering:o}=t;s={id:e,readback:g,...io({totalSplats:a,readback:g,ordering:o})};break}case"sortDoubleSplats":{const{numSplats:r,readback:a,ordering:g}=t;s={id:e,readback:a,ordering:g},Fa&&(s={id:e,readback:a,ordering:g,activeSplats:fr(r,a,g)});break}case"transcodeSpz":{const r=t,a=await to(r);s={id:e,fileBytes:a,input:r};break}default:throw new Error(`Unknown name: ${A}`)}}catch(r){i=r}self.postMessage({id:e,result:s,error:i},{transfer:Un(s)})}async function eo({packedArray:n,fileBytes:A}){const t=new De({fileBytes:A});await t.parseHeader();const e=t.numSplats,s={};return t.parseSplats((i,r,a,g,o,I,B,Q,h,C,E,l,c,u,d)=>{we(n,i,r,a,g,o,I,B,Q,h,C,E,l,c,u,d)},(i,r,a,g)=>{r&&(s.sh1||(s.sh1=new Uint32Array(e*2)),Is(s.sh1,i,r)),a&&(s.sh2||(s.sh2=new Uint32Array(e*4)),Bs(s.sh2,i,a)),g&&(s.sh3||(s.sh3=new Uint32Array(e*4)),Qs(s.sh3,i,g))}),{packedArray:n,numSplats:e,extra:s}}function so(n){const A=new hr({fileBytes:n}),t=A.numSplats,e=gs(t),s=new Uint32Array(e*4),i={};return A.parseSplats((r,a,g,o)=>{Ln(s,r,a,g,o)},(r,a)=>{Ha(s,r,a)},(r,a,g,o)=>{Ja(s,r,a,g,o)},(r,a,g,o)=>{bn(s,r,a,g,o)},(r,a,g,o,I)=>{Yn(s,r,a,g,o,I)},(r,a,g,o)=>{a&&(i.sh1||(i.sh1=new Uint32Array(t*2)),Is(i.sh1,r,a)),g&&(i.sh2||(i.sh2=new Uint32Array(t*4)),Bs(i.sh2,r,g)),o&&(i.sh3||(i.sh3=new Uint32Array(t*4)),Qs(i.sh3,r,o))}),{packedArray:s,numSplats:t,extra:i}}const oe=31744,Me=oe+1;let nA=null;function io({totalSplats:n,readback:A,ordering:t}){nA||(nA=new Uint32Array(Me)),nA.fill(0);const e=A.map(g=>new Uint32Array(g.buffer)),s=e[0].length,i=Math.ceil(n/s);let r=0;for(let g=0;g<i;++g){const o=e[g],I=Math.min(o.length,n-r);for(let B=0;B<I;++B){const Q=o[B]&32767;Q<oe&&(nA[Q]+=1)}r+=I}let a=0;for(let g=0;g<Me;++g){const o=a+nA[g];nA[g]=a,a=o}r=0;for(let g=0;g<i;++g){const o=e[g],I=Math.min(o.length,n-r);for(let B=0;B<I;++B){const Q=o[B]&32767;Q<oe&&(t[nA[Q]]=r+B,nA[Q]+=1)}r+=I}if(nA[Me-1]!==a)throw new Error(`Expected ${a} active splats but got ${nA[Me-1]}`);return{activeSplats:a,ordering:t}}function go({numSplats:n,readback:A,ordering:t}){nA||(nA=new Uint32Array(Me)),nA.fill(0);for(let s=0;s<n;++s){const i=A[s];i<oe&&(nA[i]+=1)}let e=0;for(let s=oe-1;s>=0;--s){const i=e+nA[s];nA[s]=e,e=i}for(let s=0;s<n;++s){const i=A[s];i<oe&&(t[nA[i]]=s,nA[i]+=1)}if(nA[0]!==e)throw new Error(`Expected ${e} active splats but got ${nA[0]}`);return{activeSplats:e,ordering:t}}const Ei=[];function lr(n){Ei.push(n)}async function no(){self.addEventListener("message",lr),await Ds(),self.removeEventListener("message",lr),self.addEventListener("message",cr);for(const n of Ei)cr(n);Ei.length=0}no().catch(console.error)})();\n//# sourceMappingURL=worker-iaa6AliJ.js.map\n',Qs=typeof self<"u"&&self.Blob&&new Blob([Vr],{type:"text/javascript;charset=utf-8"});function QC(t){let A;try{if(A=Qs&&(self.URL||self.webkitURL).createObjectURL(Qs),!A)throw"";const e=new Worker(A,{name:t==null?void 0:t.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),e}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Vr),{name:t==null?void 0:t.name})}finally{A&&(self.URL||self.webkitURL).revokeObjectURL(A)}}class BC{constructor(){this.messages={},this.messageIdNext=0,this.worker=new QC,this.worker.onmessage=A=>this.onMessage(A)}makeMessageId(){return++this.messageIdNext}makeMessagePromiseId(){const A=this.makeMessageId(),e=new Promise((s,i)=>{this.messages[A]={resolve:s,reject:i}});return{id:A,promise:e}}onMessage(A){const{id:e,result:s,error:i}=A.data,n=this.messages[e];n&&(delete this.messages[e],i?n.reject(i):n.resolve(s))}async call(A,e){const{id:s,promise:i}=this.makeMessagePromiseId();return this.worker.postMessage({name:A,args:e,id:s},{transfer:Ri(e)}),i}}let Zr=4,le=0;const Xr=[],Wr=[];async function CC(){const t=Xr.shift();if(t)return t;if(le<Zr){const A=new BC;return le+=1,A}return new Promise(A=>{Wr.push(A)})}function EC(t){if(le>Zr){le-=1;return}const A=Wr.shift();if(A){A(t);return}Xr.push(t)}async function Bt(t){const A=await CC();try{return await t(A)}finally{EC(A)}}class jr extends nA.Loader{constructor(A){super(A),this.fileLoader=new nA.FileLoader(A)}load(A,e,s,i){const n=this.manager.resolveURL((this.path??"")+(A??"")),a=new Headers(this.requestHeader),r=this.withCredentials?"include":"same-origin",g=new Request(n,{headers:a,credentials:r});let I=this.fileType;this.manager.itemStart(n),Bs(g,s).then(async Q=>{const o=[new ProgressEvent("progress",{lengthComputable:!0,loaded:Q.byteLength,total:Q.byteLength})];function C(){if(s){const h=o.every(d=>d.lengthComputable||d.loaded===0&&d.total===0),u=o.reduce((d,y)=>d+y.loaded,0),p=o.reduce((d,y)=>d+y.total,0);s(new ProgressEvent("progress",{lengthComputable:h,loaded:u,total:p}))}}const E={},l=[],c=es(Q);if(I==="pcsogs"&&c===void 0)throw new Error("Invalid PC SOGS file");if(c!==void 0){I="pcsogs";for(const h of["means","scales","quats","sh0","shN"]){const u=c[h];if(u)for(const p of u.files){const d=new URL(p,n).toString(),y=o.length;o.push(new ProgressEvent("progress")),this.manager.itemStart(d);const D=new Request(d,{headers:a,credentials:r}),S=Bs(D,m=>{o[y]=m,C()}).then(m=>{E[p]=m}).catch(m=>{throw this.manager.itemError(d),m}).finally(()=>{this.manager.itemEnd(d)});l.push(S)}}}if(await Promise.all(l),e){const h=await ss({input:Q,extraFiles:E,fileType:I,pathOrUrl:n});this.packedSplats?(this.packedSplats.initialize(h),e(this.packedSplats)):e(new JA(h))}}).catch(Q=>{this.manager.itemError(n),i==null||i(Q)}).finally(()=>{this.manager.itemEnd(n)})}async loadAsync(A,e){return new Promise((s,i)=>{this.load(A,n=>{s(n)},e,i)})}parse(A){return new zA({packedSplats:A})}}async function Bs(t,A){const e=await fetch(t);if(!e.ok)throw new Error(`${e.status} "${e.statusText}" fetching URL: ${t.url}`);if(!e.body)throw new Error(`Response body is null for URL: ${t.url}`);const s=e.body.getReader(),i=Number.parseInt(e.headers.get("Content-Length")||"0"),n=Number.isNaN(i)?0:i;let a=0;const r=[];for(;;){const{done:Q,value:o}=await s.read();if(Q)break;r.push(o),a+=o.length,A&&A(new ProgressEvent("progress",{lengthComputable:n!==0,loaded:a,total:n}))}const g=new Uint8Array(a);let I=0;for(const Q of r)g.set(Q,I),I+=Q.length;return g.buffer}var Dt=(t=>(t.PLY="ply",t.SPZ="spz",t.SPLAT="splat",t.KSPLAT="ksplat",t.PCSOGS="pcsogs",t.PCSOGSZIP="pcsogszip",t))(Dt||{});function ts(t){const A=new DataView(t.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if((A.getUint32(0,!0)&16777215)===559903){const e=Pi(t,4);return new DataView(e.buffer).getUint32(0,!0)===1347635022?"spz":void 0}if(A.getUint32(0,!0)===67324752)return lC(t)?"pcsogszip":void 0}function cC(t){const A=t.split(/[?#]/,1)[0],e=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\")),s=A.slice(e+1),i=s.lastIndexOf(".");return i<=0||i===s.length-1?"":s.slice(i+1).toLowerCase()}function $r(t){const A=cC(t);if(A==="ply")return"ply";if(A==="spz")return"spz";if(A==="splat")return"splat";if(A==="ksplat")return"ksplat"}function hC(t){return es(t)!==void 0}function es(t){try{let A;if(typeof t=="string")A=t;else{const s=t instanceof ArrayBuffer?new Uint8Array(t):t;if(s.length>65536)return;A=new TextDecoder().decode(s)}const e=JSON.parse(A);if(!e||typeof e!="object"||Array.isArray(e))return;for(const s of["means","scales","quats","sh0"])if(!e[s]||typeof e[s]!="object"||Array.isArray(e[s])||!e[s].shape||!e[s].files||s!=="quats"&&(!e[s].mins||!e[s].maxs))return;return e}catch{return}}function lC(t){try{const A=t instanceof ArrayBuffer?new Uint8Array(t):t;let e=null;const s=Tg(A,{filter:({name:n})=>n.split(/[\\/]/).pop()==="meta.json"?(e=n,!0):!1});if(!e)return;const i=es(s[e]);return i?{name:e,json:i}:void 0}catch{return}}async function ss({input:t,extraFiles:A,fileType:e,pathOrUrl:s}){const i=t instanceof ArrayBuffer?new Uint8Array(t):t;let n=e;switch(e||(n=ts(i),!n&&s&&(n=$r(s))),n){case"ply":{const a=new Vt({fileBytes:i});await a.parseHeader();const r=a.numSplats,g=xA(r).maxSplats,I={fileBytes:i,packedArray:new Uint32Array(g*4)};return await Bt(async Q=>{const{packedArray:o,numSplats:C,extra:E}=await Q.call("unpackPly",I);return{packedArray:o,numSplats:C,extra:E}})}case"spz":return await Bt(async a=>{const{packedArray:r,numSplats:g,extra:I}=await a.call("decodeSpz",{fileBytes:i});return{packedArray:r,numSplats:g,extra:I}});case"splat":return await Bt(async a=>{const{packedArray:r,numSplats:g}=await a.call("decodeAntiSplat",{fileBytes:i});return{packedArray:r,numSplats:g}});case"ksplat":return await Bt(async a=>{const{packedArray:r,numSplats:g,extra:I}=await a.call("decodeKsplat",{fileBytes:i});return{packedArray:r,numSplats:g,extra:I}});case"pcsogs":return await Bt(async a=>{const{packedArray:r,numSplats:g,extra:I}=await a.call("decodePcSogs",{fileBytes:i,extraFiles:A});return{packedArray:r,numSplats:g,extra:I}});case"pcsogszip":return await Bt(async a=>{const{packedArray:r,numSplats:g,extra:I}=await a.call("decodePcSogsZip",{fileBytes:i});return{packedArray:r,numSplats:g,extra:I}});default:throw new Error(`Unknown splat file type: ${n}`)}}class uC{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=xA(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const e=Math.max(A,this.maxSplats*2),s=new Float32Array(e*3),i=new Float32Array(e*3),n=new Float32Array(e*4),a=new Float32Array(e),r=new Float32Array(e*3);if(s.set(this.centers),i.set(this.scales),n.set(this.quaternions),a.set(this.opacities),r.set(this.colors),this.centers=s,this.scales=i,this.quaternions=n,this.opacities=a,this.colors=r,this.sh1){const g=new Float32Array(e*9);g.set(this.sh1),this.sh1=g}if(this.sh2){const g=new Float32Array(e*15);g.set(this.sh2),this.sh2=g}if(this.sh3){const g=new Float32Array(e*21);g.set(this.sh3),this.sh3=g}this.maxSplats=e}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,e,s,i){this.centers[A*3]=e,this.centers[A*3+1]=s,this.centers[A*3+2]=i}setScale(A,e,s,i){this.scales[A*3]=e,this.scales[A*3+1]=s,this.scales[A*3+2]=i}setQuaternion(A,e,s,i,n){this.quaternions[A*4]=e,this.quaternions[A*4+1]=s,this.quaternions[A*4+2]=i,this.quaternions[A*4+3]=n}setOpacity(A,e){this.opacities[A]=e}setColor(A,e,s,i){this.colors[A*3]=e,this.colors[A*3+1]=s,this.colors[A*3+2]=i}setSh1(A,e){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let s=0;s<9;++s)this.sh1[A*9+s]=e[s]}setSh2(A,e){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let s=0;s<15;++s)this.sh2[A*15+s]=e[s]}setSh3(A,e){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let s=0;s<21;++s)this.sh3[A*21+s]=e[s]}}var dC=`precision highp float;
514
514
  precision highp int;
515
515
  precision highp sampler2D;
516
516
  precision highp usampler2D;
@@ -545,7 +545,7 @@ void main() {
545
545
  } else {
546
546
  target = uvec4(0u, 0u, 0u, 0u);
547
547
  }
548
- }`;const IA=class IA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new _I({packedSplats:this}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,A.url||A.fileBytes||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){A.packedArray?(this.packedArray=A.packedArray,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/j)*j,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0),this.extra=A.extra??{}}async asyncInitialize(A){const{url:I,fileBytes:g,construct:B}=A;if(I){const i=new vQ;i.packedSplats=this,await i.loadAsync(I)}else if(g){const i=await jI({input:g,fileType:A.fileType,pathOrUrl:A.fileName??I});this.initialize(i)}if(B){const i=B(this);i instanceof Promise&&await i}}dispose(){this.target&&(this.target.dispose(),this.target=null),this.source&&(this.source.dispose(),this.source=null)}ensureSplats(A){const I=A<=this.maxSplats?this.maxSplats:Math.max(A,2*this.maxSplats),g=this.packedArray?this.packedArray.length/4:0;if(!this.packedArray||I>g){this.maxSplats=FA(I).maxSplats;const B=new Uint32Array(this.maxSplats*4);this.packedArray&&B.set(this.packedArray),this.packedArray=B}return this.packedArray}ensureSplatsSh(A,I){let g,B;if(A===0)return this.ensureSplats(I);if(A===1)g=2,B="sh1";else if(A===2)g=4,B="sh2";else if(A===3)g=4,B="sh3";else throw new Error(`Invalid level: ${A}`);let i=this.extra[B]?this.extra[B].length/g:0;const e=I<=i?i:Math.max(I,2*i);if(!this.extra[B]||e>i){i=FA(e).maxSplats;const Q=new Uint32Array(i*g);this.extra[B]&&Q.set(this.extra[B]),this.extra[B]=Q}return this.extra[B]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return nI(this.packedArray,A)}setSplat(A,I,g,B,i,e){const Q=this.ensureSplats(A+1);aI(Q,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,i,e.r,e.g,e.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,i){const e=this.ensureSplats(this.numSplats+1);aI(e,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,i.r,i.g,i.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let I=0;I<this.numSplats;++I){const g=nI(this.packedArray,I);A(I,g.center,g.scales,g.quaternion,g.opacity,g.color)}}ensureGenerate(A){if(this.target&&(A??1)<=this.maxSplats)return!1;this.dispose();const I=FA(A??1),{width:g,height:B,depth:i}=I;return this.maxSplats=I.maxSplats,this.target=new n.WebGLArrayRenderTarget(g,B,i,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:n.NearestFilter,minFilter:n.NearestFilter}),this.target.texture.format=n.RGBAIntegerFormat,this.target.texture.type=n.UnsignedIntType,this.target.texture.internalFormat="RGBA32UI",this.target.scissorTest=!0,!0}generateMapping(A){let I=0;const g=A.map(B=>{const i=I,e=Math.ceil(B/j)*j;return I+=e,{base:i,count:B}});return{maxSplats:I,mapping:g}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():IA.getEmpty()}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.maxSplats!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:I,depth:g}=FA(this.maxSplats);this.source=new n.DataArrayTexture(this.packedArray,A,I,g),this.source.format=n.RGBAIntegerFormat,this.source.type=n.UnsignedIntType,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}static getEmpty(){if(!IA.emptySource){const{width:A,height:I,depth:g,maxSplats:B}=FA(1),i=new Uint32Array(B*4);IA.emptySource=new n.DataArrayTexture(i,A,I,g),IA.emptySource.format=n.RGBAIntegerFormat,IA.emptySource.type=n.UnsignedIntType,IA.emptySource.internalFormat="RGBA32UI",IA.emptySource.needsUpdate=!0}return IA.emptySource}prepareProgramMaterial(A){let I=IA.generatorProgram.get(A);if(!I){const B=kA({index:"int"},{output:"uvec4"},({index:i})=>{A.inputs.index=i;const e=A.outputs.gsplat;return{output:Mg(e)}});IA.programTemplate||(IA.programTemplate=new WI(Bo)),I=new zI({graph:B,inputs:{index:"index"},outputs:{output:"target"},template:IA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),IA.generatorProgram.set(A,I)}const g=I.prepareMaterial();return IA.mesh.material=g,{program:I,material:g}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(null),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}generate({generator:A,base:I,count:g,renderer:B}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(I+g>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:i,material:e}=this.prepareProgramMaterial(A);i.update();const Q=this.saveRenderState(B),s=Math.ceil((I+g)/j)*j,E=j*It;for(e.uniforms.targetBase.value=I,e.uniforms.targetCount.value=g;I<s;){const a=Math.floor(I/E);e.uniforms.targetLayer.value=a;const C=a*E,o=Math.floor((I-C)/j),r=Math.min(It,Math.ceil((s-C)/j));this.target.scissor.set(0,o,j,r-o),B.setRenderTarget(this.target,a),B.xr.enabled=!1,B.autoClear=!1,B.render(IA.scene,IA.camera),I+=j*(r-o)}return this.resetRenderState(B,Q),{nextBase:s}}};IA.emptySource=null,IA.programTemplate=null,IA.generatorProgram=new Map,IA.geometry=new n.PlaneGeometry(2,2),IA.mesh=new n.Mesh(IA.geometry,new n.RawShaderMaterial({visible:!1})),IA.scene=new n.Scene().add(IA.mesh),IA.camera=new n.Camera;let HA=IA;class _I extends R{constructor({packedSplats:A}={}){super({key:"packedSplats",type:Pt,globals:()=>[uI],value:{texture:HA.getEmpty(),numSplats:0},update:I=>{var g,B;return I.texture=((g=this.packedSplats)==null?void 0:g.getTexture())??HA.getEmpty(),I.numSplats=((B=this.packedSplats)==null?void 0:B.numSplats)??0,I}}),this.packedSplats=A}}class HI extends n.InstancedBufferGeometry{constructor(A,I){super(),this.ordering=A,this.setAttribute("position",new n.BufferAttribute(io,3)),this.setIndex(new n.BufferAttribute(eo,1)),this._maxInstanceCount=A.length,this.instanceCount=I,this.attribute=new n.InstancedBufferAttribute(A,1,!1,1),this.attribute.setUsage(n.DynamicDrawUsage),this.setAttribute("splatIndex",this.attribute)}update(A,I){this.ordering=A,this.attribute.array=A,this.instanceCount=I,this.attribute.addUpdateRange(0,I),this.attribute.needsUpdate=!0}}const io=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]),eo=new Uint16Array([0,1,2,0,2,3]),tt=class tt{constructor(A){if(this.lastTime=null,this.encodeLinear=!1,this.superXY=1,this.display=null,this.sorting=null,this.pending=null,this.sortingCheck=!1,this.readback=new Uint16Array(0),this.spark=A.spark,this.camera=A.camera,this.viewToWorld=A.viewToWorld??new n.Matrix4,A.target){const{width:I,height:g,doubleBuffer:B}=A.target,i=Math.max(1,Math.min(4,A.target.superXY??1));if(this.superXY=i,I*i>8192||g*i>8192)throw new Error("Target size too large");this.target=new n.WebGLRenderTarget(I*i,g*i,{format:n.RGBAFormat,type:n.UnsignedByteType,colorSpace:n.SRGBColorSpace}),B&&(this.back=new n.WebGLRenderTarget(I*i,g*i,{format:n.RGBAFormat,type:n.UnsignedByteType,colorSpace:n.SRGBColorSpace})),this.encodeLinear=!0}this.onTextureUpdated=A.onTextureUpdated,this.sortRadial=A.sortRadial??!0,this.sortDistance=A.sortDistance,this.sortCoorient=A.sortCoorient,this.depthBias=A.depthBias,this.sort360=A.sort360,this.orderingFreelist=new GB({allocate:I=>new Uint32Array(I),valid:(I,g)=>I.length===g}),this.autoUpdate=!1,this.setAutoUpdate(A.autoUpdate??!1)}dispose(){var A;this.setAutoUpdate(!1),this.target&&(this.target.dispose(),this.target=void 0),this.back&&(this.back.dispose(),this.back=void 0),this.display&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.geometry.dispose(),this.display=null),(A=this.pending)!=null&&A.accumulator&&(this.spark.releaseAccumulator(this.pending.accumulator),this.pending=null)}setAutoUpdate(A){!this.autoUpdate&&A?this.spark.autoViewpoints.push(this):this.autoUpdate&&!A&&(this.spark.autoViewpoints=this.spark.autoViewpoints.filter(I=>I!==this)),this.autoUpdate=A}async prepare({scene:A,camera:I,viewToWorld:g,update:B,forceOrigin:i}){var Q;for(g?this.viewToWorld=g:(this.camera=I??this.camera,this.camera&&(this.camera.updateMatrixWorld(),this.viewToWorld=this.camera.matrixWorld.clone()));B??!0;){const s=i?this.viewToWorld:void 0;if(this.spark.updateInternal({scene:A,originToWorld:s}))break;await new Promise(a=>setTimeout(a,10))}const e=this.spark.active;e!==((Q=this.display)==null?void 0:Q.accumulator)&&(this.spark.active.refCount+=1),await this.sortUpdate({accumulator:e,viewToWorld:this.viewToWorld})}renderTarget({scene:A,camera:I}){var B;const g=this.back??this.target;if(!g)throw new Error("Must initialize SparkViewpoint with target");if(I=I??this.camera,!I)throw new Error("Must provide camera");if(I instanceof n.PerspectiveCamera){const i=new n.PerspectiveCamera().copy(I,!1);i.aspect=g.width/g.height,i.updateProjectionMatrix(),I=i}this.viewToWorld=I.matrixWorld.clone();try{this.spark.renderer.setRenderTarget(g),this.spark.prepareViewpoint(this),this.spark.renderer.render(A,I)}finally{this.spark.prepareViewpoint(this.spark.defaultView),this.spark.renderer.setRenderTarget(null)}g!==this.target&&([this.target,this.back]=[this.back,this.target]),(B=this.onTextureUpdated)==null||B.call(this,g.texture)}async readTarget(){if(!this.target)throw new Error("Must initialize SparkViewpoint with target");const{width:A,height:I}=this.target,g=A*I*4;(!this.superPixels||this.superPixels.length<g)&&(this.superPixels=new Uint8Array(g)),await this.spark.renderer.readRenderTargetPixelsAsync(this.target,0,0,A,I,this.superPixels);const{superXY:B}=this;if(B===1)return this.superPixels;const i=A/B,e=I/B,Q=i*e*4;(!this.pixels||this.pixels.length<Q)&&(this.pixels=new Uint8Array(Q));const{superPixels:s,pixels:E}=this,a=B*B;for(let C=0;C<e;C++){const o=C*i;for(let r=0;r<i;r++){const h=r*B;let c=0,l=0,u=0,D=0;for(let d=0;d<B;d++){const w=(C*B+d)*this.target.width;for(let F=0;F<B;F++){const m=(w+h+F)*4;c+=s[m],l+=s[m+1],u+=s[m+2],D+=s[m+3]}}const y=(o+r)*4;E[y]=c/a,E[y+1]=l/a,E[y+2]=u/a,E[y+3]=D/a}}return E}async prepareRenderPixels({scene:A,camera:I,viewToWorld:g,update:B,forceOrigin:i}){return await this.prepare({scene:A,camera:I,viewToWorld:g,update:B,forceOrigin:i}),this.renderTarget({scene:A,camera:I}),this.readTarget()}autoPoll({accumulator:A}){var i,e,Q,s;this.camera&&(this.camera.updateMatrixWorld(),this.viewToWorld=this.camera.matrixWorld.clone());let I=!1,g=!1;if(!this.display)I=!0;else if(A){I=!0;const{mappingVersion:E}=this.display.accumulator;A.mappingVersion===E&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.accumulator=A,g=!0)}const B=((i=this.sorting)==null?void 0:i.viewToWorld)??((e=this.display)==null?void 0:e.viewToWorld);B&&!oI({matrix1:this.viewToWorld,matrix2:B,maxDistance:this.sortDistance??.01,minCoorient:this.sortCoorient??this.sortRadial?.99:.999})&&(I=!0),I&&(A&&(A.refCount+=1),A&&((Q=this.pending)!=null&&Q.accumulator)&&this.pending.accumulator!==((s=this.display)==null?void 0:s.accumulator)&&this.spark.releaseAccumulator(this.pending.accumulator),this.pending={accumulator:A,viewToWorld:this.viewToWorld,displayed:g},this.driveSort())}async driveSort(){var A;for(;;){if(this.sorting||!this.pending)return;const{viewToWorld:I,displayed:g}=this.pending;let B=this.pending.accumulator??((A=this.display)==null?void 0:A.accumulator);if(B||(B=this.spark.active,B.refCount+=1),this.pending=null,!B)throw new Error("No accumulator to sort");this.sorting={viewToWorld:I},await this.sortUpdate({accumulator:B,viewToWorld:I,displayed:g}),this.sorting=null}}async sortUpdate({accumulator:A,viewToWorld:I,displayed:g=!1}){if(this.sortingCheck)throw new Error("Only one sort at a time");this.sortingCheck=!0,A=A??this.spark.active;const{numSplats:B,maxSplats:i}=A.splats;let e=0,Q=this.orderingFreelist.alloc(i);if(B>0){const{reader:s,doubleSortReader:E,dynoSortRadial:a,dynoOrigin:C,dynoDirection:o,dynoDepthBias:r,dynoSort360:h,dynoSplats:c}=tt.makeSorter(),l=Math.ceil(i/2);this.readback=s.ensureBuffer(l,this.readback);const u=A.toWorld.clone().invert(),D=I.clone().premultiply(u);a.value=this.sort360?!0:this.sortRadial,C.value.set(0,0,0).applyMatrix4(D),o.value.set(0,0,-1).applyMatrix4(D).sub(C.value).normalize(),r.value=this.depthBias??1,h.value=this.sort360??!1,c.packedSplats=A.splats,await s.renderReadback({renderer:this.spark.renderer,reader:E,count:Math.ceil(B/2),readback:this.readback});const y=await Dt(async d=>d.call("sortDoubleSplats",{numSplats:B,readback:this.readback,ordering:Q}));this.readback=y.readback,Q=y.ordering,e=y.activeSplats}this.updateDisplay({accumulator:A,viewToWorld:I,ordering:Q,activeSplats:e,displayed:g}),this.sortingCheck=!1}updateDisplay({accumulator:A,viewToWorld:I,ordering:g,activeSplats:B,displayed:i=!1}){if(!this.display)this.display={accumulator:A,viewToWorld:I,geometry:new HI(g,B)};else{!i&&A!==this.display.accumulator&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.accumulator=A),this.display.viewToWorld=I;const e=this.display.geometry.ordering;e.length===g.length?this.display.geometry.update(g,B):(this.display.geometry.dispose(),this.display.geometry=new HI(g,B)),this.orderingFreelist.free(e)}this.spark.viewpoint===this&&this.spark.prepareViewpoint(this)}static makeSorter(){if(!tt.dynos){const A=new EI({value:!0}),I=new Ft({value:new n.Vector3}),g=new Ft({value:new n.Vector3}),B=new nt({value:1}),i=new EI({value:!1}),e=new _I,Q=new Kt,s=kA({index:"int"},{rgba8:"vec4"},({index:E})=>{if(!E)throw new Error("No index");const a={sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:i},C=oA(E,q("int",2)),o=bt(e,C),r=eg({gsplat:o,...a}),h=bt(e,fA(C,q("int",1))),c=eg({gsplat:h,...a}),l=KA({vectorType:"vec2",x:r,y:c});return{rgba8:Zi(vi(l))}});tt.dynos={dynoSortRadial:A,dynoOrigin:I,dynoDirection:g,dynoDepthBias:B,dynoSort360:i,dynoSplats:e,reader:Q,doubleSortReader:s}}return tt.dynos}};tt.EMPTY_TEXTURE=new n.Texture,tt.dynos=null;let Zt=tt;const Qo=rA(`
548
+ }`;const eA=class eA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new is({packedSplats:this}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,A.url||A.fileBytes||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){A.packedArray?(this.packedArray=A.packedArray,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/W)*W,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0),this.extra=A.extra??{}}async asyncInitialize(A){const{url:e,fileBytes:s,construct:i}=A;if(e){const n=new jr;n.packedSplats=this,await n.loadAsync(e)}else if(s){const n=await ss({input:s,fileType:A.fileType,pathOrUrl:A.fileName??e});this.initialize(n)}if(i){const n=i(this);n instanceof Promise&&await n}}dispose(){this.target&&(this.target.dispose(),this.target=null),this.source&&(this.source.dispose(),this.source=null)}ensureSplats(A){const e=A<=this.maxSplats?this.maxSplats:Math.max(A,2*this.maxSplats),s=this.packedArray?this.packedArray.length/4:0;if(!this.packedArray||e>s){this.maxSplats=xA(e).maxSplats;const i=new Uint32Array(this.maxSplats*4);this.packedArray&&i.set(this.packedArray),this.packedArray=i}return this.packedArray}ensureSplatsSh(A,e){let s,i;if(A===0)return this.ensureSplats(e);if(A===1)s=2,i="sh1";else if(A===2)s=4,i="sh2";else if(A===3)s=4,i="sh3";else throw new Error(`Invalid level: ${A}`);let n=this.extra[i]?this.extra[i].length/s:0;const a=e<=n?n:Math.max(e,2*n);if(!this.extra[i]||a>n){n=xA(a).maxSplats;const r=new Uint32Array(n*s);this.extra[i]&&r.set(this.extra[i]),this.extra[i]=r}return this.extra[i]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return ce(this.packedArray,A)}setSplat(A,e,s,i,n,a){const r=this.ensureSplats(A+1);Ee(r,A,e.x,e.y,e.z,s.x,s.y,s.z,i.x,i.y,i.z,i.w,n,a.r,a.g,a.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,e,s,i,n){const a=this.ensureSplats(this.numSplats+1);Ee(a,this.numSplats,A.x,A.y,A.z,e.x,e.y,e.z,s.x,s.y,s.z,s.w,i,n.r,n.g,n.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let e=0;e<this.numSplats;++e){const s=ce(this.packedArray,e);A(e,s.center,s.scales,s.quaternion,s.opacity,s.color)}}ensureGenerate(A){if(this.target&&(A??1)<=this.maxSplats)return!1;this.dispose();const e=xA(A??1),{width:s,height:i,depth:n}=e;return this.maxSplats=e.maxSplats,this.target=new B.WebGLArrayRenderTarget(s,i,n,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:B.NearestFilter,minFilter:B.NearestFilter}),this.target.texture.format=B.RGBAIntegerFormat,this.target.texture.type=B.UnsignedIntType,this.target.texture.internalFormat="RGBA32UI",this.target.scissorTest=!0,!0}generateMapping(A){let e=0;const s=A.map(i=>{const n=e,a=Math.ceil(i/W)*W;return e+=a,{base:n,count:i}});return{maxSplats:e,mapping:s}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():eA.getEmpty()}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:e,depth:s}=this.source.image;this.maxSplats!==A*e*s&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:e,depth:s}=xA(this.maxSplats);this.source=new B.DataArrayTexture(this.packedArray,A,e,s),this.source.format=B.RGBAIntegerFormat,this.source.type=B.UnsignedIntType,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}static getEmpty(){if(!eA.emptySource){const{width:A,height:e,depth:s,maxSplats:i}=xA(1),n=new Uint32Array(i*4);eA.emptySource=new B.DataArrayTexture(n,A,e,s),eA.emptySource.format=B.RGBAIntegerFormat,eA.emptySource.type=B.UnsignedIntType,eA.emptySource.internalFormat="RGBA32UI",eA.emptySource.needsUpdate=!0}return eA.emptySource}prepareProgramMaterial(A){let e=eA.generatorProgram.get(A);if(!e){const i=GA({index:"int"},{output:"uvec4"},({index:n})=>{A.inputs.index=n;const a=A.outputs.gsplat;return{output:Os(a)}});eA.programTemplate||(eA.programTemplate=new We(dC)),e=new Xe({graph:i,inputs:{index:"index"},outputs:{output:"target"},template:eA.programTemplate}),Object.assign(e.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),eA.generatorProgram.set(A,e)}const s=e.prepareMaterial();return eA.mesh.material=s,{program:e,material:s}}saveRenderState(A){return{xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,e){A.setRenderTarget(null),A.xr.enabled=e.xrEnabled,A.autoClear=e.autoClear}generate({generator:A,base:e,count:s,renderer:i}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(e+s>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:n,material:a}=this.prepareProgramMaterial(A);n.update();const r=this.saveRenderState(i),g=Math.ceil((e+s)/W)*W,I=W*it;for(a.uniforms.targetBase.value=e,a.uniforms.targetCount.value=s;e<g;){const Q=Math.floor(e/I);a.uniforms.targetLayer.value=Q;const o=Q*I,C=Math.floor((e-o)/W),E=Math.min(it,Math.ceil((g-o)/W));this.target.scissor.set(0,C,W,E-C),i.setRenderTarget(this.target,Q),i.xr.enabled=!1,i.autoClear=!1,i.render(eA.scene,eA.camera),e+=W*(E-C)}return this.resetRenderState(i,r),{nextBase:g}}};eA.emptySource=null,eA.programTemplate=null,eA.generatorProgram=new Map,eA.geometry=new B.PlaneGeometry(2,2),eA.mesh=new B.Mesh(eA.geometry,new B.RawShaderMaterial({visible:!1})),eA.scene=new B.Scene().add(eA.mesh),eA.camera=new B.Camera;let JA=eA;class is extends G{constructor({packedSplats:A}={}){super({key:"packedSplats",type:te,globals:()=>[ye],value:{texture:JA.getEmpty(),numSplats:0},update:e=>{var s,i;return e.texture=((s=this.packedSplats)==null?void 0:s.getTexture())??JA.getEmpty(),e.numSplats=((i=this.packedSplats)==null?void 0:i.numSplats)??0,e}}),this.packedSplats=A}}class Ke extends B.InstancedBufferGeometry{constructor(A,e){super(),this.ordering=A,this.setAttribute("position",new B.BufferAttribute(pC,3)),this.setIndex(new B.BufferAttribute(yC,1)),this._maxInstanceCount=A.length,this.instanceCount=e,this.attribute=new B.InstancedBufferAttribute(A,1,!1,1),this.attribute.setUsage(B.DynamicDrawUsage),this.setAttribute("splatIndex",this.attribute)}update(A,e){this.ordering=A,this.attribute.array=A,this.instanceCount=e,this.attribute.addUpdateRange(0,e),this.attribute.needsUpdate=!0}}const pC=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]),yC=new Uint16Array([0,1,2,0,2,3]),st=class st{constructor(A){if(this.lastTime=null,this.encodeLinear=!1,this.superXY=1,this.display=null,this.sorting=null,this.pending=null,this.sortingCheck=!1,this.readback=new Uint16Array(0),this.spark=A.spark,this.camera=A.camera,this.viewToWorld=A.viewToWorld??new B.Matrix4,A.target){const{width:e,height:s,doubleBuffer:i}=A.target,n=Math.max(1,Math.min(4,A.target.superXY??1));if(this.superXY=n,e*n>8192||s*n>8192)throw new Error("Target size too large");this.target=new B.WebGLRenderTarget(e*n,s*n,{format:B.RGBAFormat,type:B.UnsignedByteType,colorSpace:B.SRGBColorSpace}),i&&(this.back=new B.WebGLRenderTarget(e*n,s*n,{format:B.RGBAFormat,type:B.UnsignedByteType,colorSpace:B.SRGBColorSpace})),this.encodeLinear=!0}this.onTextureUpdated=A.onTextureUpdated,this.sortRadial=A.sortRadial??!0,this.sortDistance=A.sortDistance,this.sortCoorient=A.sortCoorient,this.depthBias=A.depthBias,this.sort360=A.sort360,this.orderingFreelist=new Ui({allocate:e=>new Uint32Array(e),valid:(e,s)=>e.length===s}),this.autoUpdate=!1,this.setAutoUpdate(A.autoUpdate??!1)}dispose(){var A;this.setAutoUpdate(!1),this.target&&(this.target.dispose(),this.target=void 0),this.back&&(this.back.dispose(),this.back=void 0),this.display&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.geometry.dispose(),this.display=null),(A=this.pending)!=null&&A.accumulator&&(this.spark.releaseAccumulator(this.pending.accumulator),this.pending=null)}setAutoUpdate(A){!this.autoUpdate&&A?this.spark.autoViewpoints.push(this):this.autoUpdate&&!A&&(this.spark.autoViewpoints=this.spark.autoViewpoints.filter(e=>e!==this)),this.autoUpdate=A}async prepare({scene:A,camera:e,viewToWorld:s,update:i,forceOrigin:n}){var r;for(s?this.viewToWorld=s:(this.camera=e??this.camera,this.camera&&(this.camera.updateMatrixWorld(),this.viewToWorld=this.camera.matrixWorld.clone()));i??!0;){const g=n?this.viewToWorld:void 0;if(this.spark.updateInternal({scene:A,originToWorld:g}))break;await new Promise(Q=>setTimeout(Q,10))}const a=this.spark.active;a!==((r=this.display)==null?void 0:r.accumulator)&&(this.spark.active.refCount+=1),await this.sortUpdate({accumulator:a,viewToWorld:this.viewToWorld})}renderTarget({scene:A,camera:e}){var i;const s=this.back??this.target;if(!s)throw new Error("Must initialize SparkViewpoint with target");if(e=e??this.camera,!e)throw new Error("Must provide camera");if(e instanceof B.PerspectiveCamera){const n=new B.PerspectiveCamera().copy(e,!1);n.aspect=s.width/s.height,n.updateProjectionMatrix(),e=n}this.viewToWorld=e.matrixWorld.clone();try{this.spark.renderer.setRenderTarget(s),this.spark.prepareViewpoint(this),this.spark.renderer.render(A,e)}finally{this.spark.prepareViewpoint(this.spark.defaultView),this.spark.renderer.setRenderTarget(null)}s!==this.target&&([this.target,this.back]=[this.back,this.target]),(i=this.onTextureUpdated)==null||i.call(this,s.texture)}async readTarget(){if(!this.target)throw new Error("Must initialize SparkViewpoint with target");const{width:A,height:e}=this.target,s=A*e*4;(!this.superPixels||this.superPixels.length<s)&&(this.superPixels=new Uint8Array(s)),await this.spark.renderer.readRenderTargetPixelsAsync(this.target,0,0,A,e,this.superPixels);const{superXY:i}=this;if(i===1)return this.superPixels;const n=A/i,a=e/i,r=n*a*4;(!this.pixels||this.pixels.length<r)&&(this.pixels=new Uint8Array(r));const{superPixels:g,pixels:I}=this,Q=i*i;for(let o=0;o<a;o++){const C=o*n;for(let E=0;E<n;E++){const l=E*i;let c=0,h=0,u=0,p=0;for(let y=0;y<i;y++){const D=(o*i+y)*this.target.width;for(let S=0;S<i;S++){const m=(D+l+S)*4;c+=g[m],h+=g[m+1],u+=g[m+2],p+=g[m+3]}}const d=(C+E)*4;I[d]=c/Q,I[d+1]=h/Q,I[d+2]=u/Q,I[d+3]=p/Q}}return I}async prepareRenderPixels({scene:A,camera:e,viewToWorld:s,update:i,forceOrigin:n}){return await this.prepare({scene:A,camera:e,viewToWorld:s,update:i,forceOrigin:n}),this.renderTarget({scene:A,camera:e}),this.readTarget()}autoPoll({accumulator:A}){var n,a,r,g;this.camera&&(this.camera.updateMatrixWorld(),this.viewToWorld=this.camera.matrixWorld.clone());let e=!1,s=!1;if(!this.display)e=!0;else if(A){e=!0;const{mappingVersion:I}=this.display.accumulator;A.mappingVersion===I&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.accumulator=A,s=!0)}const i=((n=this.sorting)==null?void 0:n.viewToWorld)??((a=this.display)==null?void 0:a.viewToWorld);i&&!he({matrix1:this.viewToWorld,matrix2:i,maxDistance:this.sortDistance??.01,minCoorient:this.sortCoorient??this.sortRadial?.99:.999})&&(e=!0),e&&(A&&(A.refCount+=1),A&&((r=this.pending)!=null&&r.accumulator)&&this.pending.accumulator!==((g=this.display)==null?void 0:g.accumulator)&&this.spark.releaseAccumulator(this.pending.accumulator),this.pending={accumulator:A,viewToWorld:this.viewToWorld,displayed:s},this.driveSort())}async driveSort(){var A;for(;;){if(this.sorting||!this.pending)return;const{viewToWorld:e,displayed:s}=this.pending;let i=this.pending.accumulator??((A=this.display)==null?void 0:A.accumulator);if(i||(i=this.spark.active,i.refCount+=1),this.pending=null,!i)throw new Error("No accumulator to sort");this.sorting={viewToWorld:e},await this.sortUpdate({accumulator:i,viewToWorld:e,displayed:s}),this.sorting=null}}async sortUpdate({accumulator:A,viewToWorld:e,displayed:s=!1}){if(this.sortingCheck)throw new Error("Only one sort at a time");this.sortingCheck=!0,A=A??this.spark.active;const{numSplats:i,maxSplats:n}=A.splats;let a=0,r=this.orderingFreelist.alloc(n);if(i>0){const{reader:g,doubleSortReader:I,dynoSortRadial:Q,dynoOrigin:o,dynoDirection:C,dynoDepthBias:E,dynoSort360:l,dynoSplats:c}=st.makeSorter(),h=Math.ceil(n/2);this.readback=g.ensureBuffer(h,this.readback);const u=A.toWorld.clone().invert(),p=e.clone().premultiply(u);Q.value=this.sort360?!0:this.sortRadial,o.value.set(0,0,0).applyMatrix4(p),C.value.set(0,0,-1).applyMatrix4(p).sub(o.value).normalize(),E.value=this.depthBias??1,l.value=this.sort360??!1,c.packedSplats=A.splats,await g.renderReadback({renderer:this.spark.renderer,reader:I,count:Math.ceil(i/2),readback:this.readback});const d=await Bt(async y=>y.call("sortDoubleSplats",{numSplats:i,readback:this.readback,ordering:r}));this.readback=d.readback,r=d.ordering,a=d.activeSplats}this.updateDisplay({accumulator:A,viewToWorld:e,ordering:r,activeSplats:a,displayed:s}),this.sortingCheck=!1}updateDisplay({accumulator:A,viewToWorld:e,ordering:s,activeSplats:i,displayed:n=!1}){if(!this.display)this.display={accumulator:A,viewToWorld:e,geometry:new Ke(s,i)};else{!n&&A!==this.display.accumulator&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.accumulator=A),this.display.viewToWorld=e;const a=this.display.geometry.ordering;a.length===s.length?this.display.geometry.update(s,i):(this.display.geometry.dispose(),this.display.geometry=new Ke(s,i)),this.orderingFreelist.free(a)}this.spark.viewpoint===this&&this.spark.prepareViewpoint(this)}static makeSorter(){if(!st.dynos){const A=new Ce({value:!0}),e=new Ft({value:new B.Vector3}),s=new Ft({value:new B.Vector3}),i=new ct({value:1}),n=new Ce({value:!1}),a=new is,r=new Ot,g=GA({index:"int"},{rgba8:"vec4"},({index:I})=>{if(!I)throw new Error("No index");const Q={sortRadial:A,sortOrigin:e,sortDirection:s,sortDepthBias:i,sort360:n},o=CA(I,q("int",2)),C=zt(a,o),E=Cs({gsplat:C,...Q}),l=zt(a,mA(o,q("int",1))),c=Cs({gsplat:l,...Q}),h=KA({vectorType:"vec2",x:E,y:c});return{rgba8:$n(jn(h))}});st.dynos={dynoSortRadial:A,dynoOrigin:e,dynoDirection:s,dynoDepthBias:i,dynoSort360:n,dynoSplats:a,reader:r,doubleSortReader:g}}return st.dynos}};st.EMPTY_TEXTURE=new B.Texture,st.dynos=null;let Zt=st;const wC=cA(`
549
549
  float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {
550
550
  if (!isGsplatActive(gsplat.flags)) {
551
551
  return INFINITY;
@@ -559,9 +559,9 @@ void main() {
559
559
 
560
560
  return sortRadial ? length(center) : biasedDepth;
561
561
  }
562
- `);function eg({gsplat:t,sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:i}){return Vt({inTypes:{gsplat:_,sortRadial:"bool",sortOrigin:"vec3",sortDirection:"vec3",sortDepthBias:"float",sort360:"bool"},outTypes:{metric:"float"},globals:()=>[MA,Qo],inputs:{gsplat:t,sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:i},statements:({inputs:e,outputs:Q})=>{const{gsplat:s,sortRadial:E,sortOrigin:a,sortDirection:C,sortDepthBias:o,sort360:r}=e;return YA(`
563
- ${Q.metric} = computeSort(${s}, ${E}, ${a}, ${C}, ${o}, ${r});
564
- `)}}).outputs.metric}class sI{constructor(){this.splats=new HA,this.toWorld=new n.Matrix4,this.mapping=[],this.refCount=0,this.splatsVersion=-1,this.mappingVersion=-1}ensureGenerate(A){this.splats.ensureGenerate(A)&&(this.mapping=[])}generateSplats({renderer:A,modifier:I,generators:g,forceUpdate:B,originToWorld:i}){const e=this.mapping.reduce((E,a)=>(E.set(a.node,a),E),new Map);let Q=0,s=0;for(const{node:E,generator:a,version:C,base:o,count:r}of g){const h=e.get(E);if((B||a!==(h==null?void 0:h.generator)||C!==(h==null?void 0:h.version)||o!==(h==null?void 0:h.base)||r!==(h==null?void 0:h.count))&&a&&r>0){const c=I.apply(a);try{this.splats.generate({generator:c,base:o,count:r,renderer:A})}catch(l){E.generator=void 0,E.generatorError=l}Q+=1}s=Math.max(s,o+r)}return this.splats.numSplats=s,this.toWorld=i,this.mapping=g,Q!==0}hasCorrespondence(A){return this.mapping.length!==A.mapping.length?!1:this.mapping.every(({node:I,base:g,count:B},i)=>{const{node:e,base:Q,count:s}=A.mapping[i];return I===e&&g===Q&&B===s})}}var so=`const float LN_SCALE_MIN = -9.0;
562
+ `);function Cs({gsplat:t,sortRadial:A,sortOrigin:e,sortDirection:s,sortDepthBias:i,sort360:n}){return Ae({inTypes:{gsplat:j,sortRadial:"bool",sortOrigin:"vec3",sortDirection:"vec3",sortDepthBias:"float",sort360:"bool"},outTypes:{metric:"float"},globals:()=>[kA,wC],inputs:{gsplat:t,sortRadial:A,sortOrigin:e,sortDirection:s,sortDepthBias:i,sort360:n},statements:({inputs:a,outputs:r})=>{const{gsplat:g,sortRadial:I,sortOrigin:Q,sortDirection:o,sortDepthBias:C,sort360:E}=a;return LA(`
563
+ ${r.metric} = computeSort(${g}, ${I}, ${Q}, ${o}, ${C}, ${E});
564
+ `)}}).outputs.metric}class Qe{constructor(){this.splats=new JA,this.toWorld=new B.Matrix4,this.mapping=[],this.refCount=0,this.splatsVersion=-1,this.mappingVersion=-1}ensureGenerate(A){this.splats.ensureGenerate(A)&&(this.mapping=[])}generateSplats({renderer:A,modifier:e,generators:s,forceUpdate:i,originToWorld:n}){const a=this.mapping.reduce((I,Q)=>(I.set(Q.node,Q),I),new Map);let r=0,g=0;for(const{node:I,generator:Q,version:o,base:C,count:E}of s){const l=a.get(I);if((i||Q!==(l==null?void 0:l.generator)||o!==(l==null?void 0:l.version)||C!==(l==null?void 0:l.base)||E!==(l==null?void 0:l.count))&&Q&&E>0){const c=e.apply(Q);try{this.splats.generate({generator:c,base:C,count:E,renderer:A})}catch(h){I.generator=void 0,I.generatorError=h}r+=1}g=Math.max(g,C+E)}return this.splats.numSplats=g,this.toWorld=n,this.mapping=s,r!==0}hasCorrespondence(A){return this.mapping.length!==A.mapping.length?!1:this.mapping.every(({node:e,base:s,count:i},n)=>{const{node:a,base:r,count:g}=A.mapping[n];return e===a&&s===r&&i===g})}}var DC=`const float LN_SCALE_MIN = -12.0;
565
565
  const float LN_SCALE_MAX = 9.0;
566
566
  const float LN_RESCALE = (LN_SCALE_MAX - LN_SCALE_MIN) / 254.0;
567
567
 
@@ -803,7 +803,7 @@ ivec3 splatTexCoord(int index) {
803
803
  uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;
804
804
  uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;
805
805
  return ivec3(x, y, z);
806
- }`,Co=`precision highp float;
806
+ }`,fC=`precision highp float;
807
807
  precision highp int;
808
808
 
809
809
  #include <splatDefines>
@@ -871,7 +871,7 @@ void main() {
871
871
  rgba.rgb = srgbToLinear(rgba.rgb);
872
872
  }
873
873
  fragColor = rgba;
874
- }`,Eo=`precision highp float;
874
+ }`,mC=`precision highp float;
875
875
  precision highp int;
876
876
  precision highp usampler2DArray;
877
877
 
@@ -897,7 +897,7 @@ uniform float preBlurAmount;
897
897
  uniform float focalDistance;
898
898
  uniform float apertureAngle;
899
899
  uniform float clipXY;
900
- uniform float renderScale;
900
+ uniform float focalAdjustment;
901
901
 
902
902
  uniform usampler2DArray packedSplats;
903
903
 
@@ -984,7 +984,7 @@ void main() {
984
984
  mat3 cov3D = RS * transpose(RS);
985
985
 
986
986
 
987
- vec2 scaledRenderSize = renderSize * renderScale;
987
+ vec2 scaledRenderSize = renderSize * focalAdjustment;
988
988
  vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);
989
989
  float invZ = 1.0 / viewCenter.z;
990
990
  vec2 J1 = focal * invZ;
@@ -1056,14 +1056,14 @@ void main() {
1056
1056
  vSplatUv = position.xy * maxStdDev;
1057
1057
  vNdc = ndc;
1058
1058
  gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);
1059
- }`;let kI=null;function ao(){return kI||(n.ShaderChunk.splatDefines=so,kI={splatVertex:Eo,splatFragment:Co}),kI}const Qg=5;let bI=!1,TI=!1,WQ;function no(t){let A=!1;return t instanceof qA?!0:(t.traverse(I=>{A=A||I instanceof qA}),A)}const OQ=n.Scene.prototype.add;n.Scene.prototype.add=function(t){return bI=bI||no(t),TI=TI||t instanceof zt,OQ.call(this,t),this};const oo=n.Scene.prototype.onBeforeRender;n.Scene.prototype.onBeforeRender=function(t){if(bI){if(!TI){const A=WQ||new zt({renderer:t});this.add(A)}n.Scene.prototype.onBeforeRender=oo,n.Scene.prototype.add=OQ}};const sA=class sA extends n.Mesh{constructor(A){const I=sA.makeUniforms(),g=ao(),B=new n.ShaderMaterial({glslVersion:n.GLSL3,vertexShader:g.splatVertex,fragmentShader:g.splatFragment,uniforms:I,transparent:!0,blending:n.NormalBlending,depthTest:!0,depthWrite:!1,side:n.DoubleSide});super(sg,B),this.renderScale=1,this.splatTexture=null,this.autoViewpoints=[],this.rotateToAccumulator=new Xt({value:new n.Quaternion}),this.translateToAccumulator=new Ft({value:new n.Vector3}),this.lastFrame=-1,this.lastUpdateTime=null,this.defaultCameras=[],this.pendingUpdate=null,this.envViewpoint=null,this.frustumCulled=!1,this.renderer=A.renderer,this.material=B,this.uniforms=I;const i=kA({gsplat:_},{gsplat:_},({gsplat:e})=>{if(!e)throw new Error("gsplat not defined");return e=qI(e,{rotate:this.rotateToAccumulator,translate:this.translateToAccumulator}),{gsplat:e}});this.modifier=new HQ(i),this.autoUpdate=A.autoUpdate??!0,this.preUpdate=A.preUpdate??!1,this.originDistance=A.originDistance??1,this.maxStdDev=A.maxStdDev??Math.sqrt(8),this.enable2DGS=A.enable2DGS??!1,this.preBlurAmount=A.preBlurAmount??0,this.blurAmount=A.blurAmount??.3,this.focalDistance=A.focalDistance??0,this.apertureAngle=A.apertureAngle??0,this.falloff=A.falloff??1,this.clipXY=A.clipXY??1.4,this.active=new sI,this.accumulatorCount=1,this.freeAccumulators=[];for(let e=0;e<1;++e)this.freeAccumulators.push(new sI),this.accumulatorCount+=1;this.defaultView=new Zt({...A.view,autoUpdate:!0,spark:this}),this.viewpoint=this.defaultView,this.prepareViewpoint(this.viewpoint),this.clock=A.clock?RB(A.clock):new n.Clock,WQ=this}static makeUniforms(){return{renderSize:{value:new n.Vector2},near:{value:.1},far:{value:1e3},numSplats:{value:0},renderToViewQuat:{value:new n.Quaternion},renderToViewPos:{value:new n.Vector3},maxStdDev:{value:1},enable2DGS:{value:!1},preBlurAmount:{value:0},blurAmount:{value:.3},focalDistance:{value:0},apertureAngle:{value:0},falloff:{value:1},clipXY:{value:1.4},renderScale:{value:1},splatTexEnable:{value:!1},splatTexture:{type:"t",value:sA.EMPTY_SPLAT_TEXTURE},splatTexMul:{value:new n.Matrix2},splatTexAdd:{value:new n.Vector2},splatTexNear:{value:.1},splatTexFar:{value:1e3},splatTexMid:{value:0},packedSplats:{type:"t",value:HA.getEmpty()},time:{value:0},deltaTime:{value:0},encodeLinear:{value:!1},debugFlag:{value:!1}}}canAllocAccumulator(){return this.freeAccumulators.length>0||this.accumulatorCount<Qg}maybeAllocAccumulator(){let A=this.freeAccumulators.pop();if(A===void 0){if(this.accumulatorCount>=Qg)return null;A=new sI,this.accumulatorCount+=1}return A.refCount=1,A}releaseAccumulator(A){A.refCount-=1,A.refCount===0&&this.freeAccumulators.push(A)}newViewpoint(A){return new Zt({...A,spark:this})}onBeforeRender(A,I,g){var r,h;const B=this.time??this.clock.getElapsedTime(),i=B-(this.viewpoint.lastTime??B);this.viewpoint.lastTime=B;const e=A.info.render.frame,Q=e!==this.lastFrame;this.lastFrame=e;const s=this.viewpoint;if(s===this.defaultView){if(Q)if(!A.xr.isPresenting)this.defaultView.viewToWorld=g.matrixWorld.clone(),this.defaultCameras=[this.defaultView.viewToWorld];else{const c=A.xr.getCamera().cameras;this.defaultCameras=c.map(l=>l.matrixWorld),this.defaultView.viewToWorld=ro(this.defaultCameras)??new n.Matrix4}this.autoUpdate&&this.update({scene:I,viewToWorld:this.defaultView.viewToWorld})}if(Q&&(this.uniforms.time.value=B,this.uniforms.deltaTime.value=i,this.uniforms.debugFlag.value=performance.now()/1e3%2<1),s.target)this.uniforms.renderSize.value.set(s.target.width,s.target.height);else{const c=A.getDrawingBufferSize(this.uniforms.renderSize.value);if(c.x===1&&c.y===1){const l=(r=A.xr.getSession())==null?void 0:r.renderState.baseLayer;l&&(c.x=l.framebufferWidth,c.y=l.framebufferHeight)}}const E=g;if(this.uniforms.near.value=E.near,this.uniforms.far.value=E.far,this.uniforms.encodeLinear.value=s.encodeLinear,this.uniforms.maxStdDev.value=this.maxStdDev,this.uniforms.enable2DGS.value=this.enable2DGS,this.uniforms.preBlurAmount.value=this.preBlurAmount,this.uniforms.blurAmount.value=this.blurAmount,this.uniforms.focalDistance.value=this.focalDistance,this.uniforms.apertureAngle.value=this.apertureAngle,this.uniforms.falloff.value=this.falloff,this.uniforms.clipXY.value=this.clipXY,this.uniforms.renderScale.value=this.renderScale,this.splatTexture){const{enable:c,texture:l,multiply:u,add:D,near:y,far:d,mid:w}=this.splatTexture;c&&l?(this.uniforms.splatTexEnable.value=!0,this.uniforms.splatTexture.value=l,u?this.uniforms.splatTexMul.value.fromArray(u.elements):this.uniforms.splatTexMul.value.set(.5/this.maxStdDev,0,0,.5/this.maxStdDev),this.uniforms.splatTexAdd.value.set((D==null?void 0:D.x)??.5,(D==null?void 0:D.y)??.5),this.uniforms.splatTexNear.value=y??this.uniforms.near.value,this.uniforms.splatTexFar.value=d??this.uniforms.far.value,this.uniforms.splatTexMid.value=w??0):(this.uniforms.splatTexEnable.value=!1,this.uniforms.splatTexture.value=sA.EMPTY_SPLAT_TEXTURE)}else this.uniforms.splatTexEnable.value=!1,this.uniforms.splatTexture.value=sA.EMPTY_SPLAT_TEXTURE;const a=((h=s.display)==null?void 0:h.accumulator.toWorld)??new n.Matrix4,C=g.matrixWorld.clone().invert();a.clone().premultiply(C).decompose(this.uniforms.renderToViewPos.value,this.uniforms.renderToViewQuat.value,new n.Vector3)}prepareViewpoint(A){if(this.viewpoint=A??this.viewpoint,this.viewpoint.display){const{accumulator:I,geometry:g}=this.viewpoint.display;this.uniforms.numSplats.value=I.splats.numSplats,this.uniforms.packedSplats.value=I.splats.getTexture(),this.geometry=g}else this.uniforms.numSplats.value=0,this.uniforms.packedSplats.value=HA.getEmpty(),this.geometry=sg}update({scene:A,viewToWorld:I}){const g=this.matrixWorld.clone();this.preUpdate?this.updateInternal({scene:A,originToWorld:g,viewToWorld:I}):(this.pendingUpdate={scene:A,originToWorld:g},setTimeout(()=>{if(this.pendingUpdate){const{scene:B,originToWorld:i}=this.pendingUpdate;this.pendingUpdate=null,this.updateInternal({scene:B,originToWorld:i,viewToWorld:I})}},1))}updateInternal({scene:A,originToWorld:I,viewToWorld:g}){var o;if(!this.canAllocAccumulator())return!1;I||(I=this.active.toWorld),g=g??I.clone();const B=this.time??this.clock.getElapsedTime(),i=B-(this.lastUpdateTime??B);this.lastUpdateTime=B;const e=this.active.mapping.reduce((r,h)=>(r.set(h.node,h),r),new Map),{generators:Q,globalEdits:s}=this.compileScene(A);for(const r of Q)(o=r.frameUpdate)==null||o.call(r,{object:r,time:B,deltaTime:i,viewToWorld:g,globalEdits:s});for(const r of Q){const h=e.get(r),c=r.generator?r.numSplats:0;(r.generator!==(h==null?void 0:h.generator)||c!==(h==null?void 0:h.count))&&r.updateVersion()}const a=!oI({matrix1:I,matrix2:this.active.toWorld,maxDistance:this.originDistance})||Q.length!==e.size||Q.some(r=>{var h;return r.version!==((h=e.get(r))==null?void 0:h.version)});let C=null;if(a){if(C=this.maybeAllocAccumulator(),!C)throw new Error("Unreachable");const r=!oI({matrix1:I,matrix2:this.active.toWorld,maxDistance:1e-5,minCoorient:.99999}),c=Q.map((w,F)=>{const m=e.get(w);return m?[w.version-m.version,m.base,w]:[Number.POSITIVE_INFINITY,w.version,w]}).sort((w,F)=>w[0]!==F[0]?w[0]-F[0]:w[1]-F[1]).map(([w,F,m])=>m),l=c.map(w=>w.numSplats),{maxSplats:u,mapping:D}=C.splats.generateMapping(l),y=c.map((w,F)=>{const{base:m,count:f}=D[F];return{node:w,generator:w.generator,version:w.version,base:m,count:f}});I.clone().invert().decompose(this.translateToAccumulator.value,this.rotateToAccumulator.value,new n.Vector3),C.ensureGenerate(u),C.generateSplats({renderer:this.renderer,modifier:this.modifier,generators:y,forceUpdate:r,originToWorld:I}),C.splatsVersion=this.active.splatsVersion+1;const d=C.hasCorrespondence(this.active);C.mappingVersion=this.active.mappingVersion+(d?0:1),this.releaseAccumulator(this.active),this.active=C,this.prepareViewpoint()}return setTimeout(()=>{for(const r of this.autoViewpoints)r.autoPoll({accumulator:C??void 0})},1),!0}compileScene(A){const I=[];A.traverse(B=>{B instanceof $t&&I.push(B)});const g=new Set;return A.traverseVisible(B=>{if(B instanceof qt){let i=B.parent;for(;i!=null&&!(i instanceof qA);)i=i.parent;i==null&&g.add(B)}}),{generators:I,globalEdits:Array.from(g)}}async renderEnvMap({renderer:A,scene:I,worldCenter:g,size:B=256,near:i=.1,far:e=1e3,hideObjects:Q=[],update:s=!1}){var r,h;if(this.envViewpoint||(this.envViewpoint=this.newViewpoint({sort360:!0})),!sA.cubeRender||sA.cubeRender.target.width!==B||sA.cubeRender.near!==i||sA.cubeRender.far!==e){sA.cubeRender&&sA.cubeRender.target.dispose();const c=new n.WebGLCubeRenderTarget(B,{format:n.RGBAFormat,generateMipmaps:!0,minFilter:n.LinearMipMapLinearFilter}),l=new n.CubeCamera(i,e,c);sA.cubeRender={target:c,camera:l,near:i,far:e}}sA.pmrem||(sA.pmrem=new n.PMREMGenerator(A??this.renderer));const E=new n.Matrix4().setPosition(g);await((r=this.envViewpoint)==null?void 0:r.prepare({scene:I,viewToWorld:E,update:s}));const{target:a,camera:C}=sA.cubeRender;C.position.copy(g);const o=new Map;for(const c of Q)o.set(c,c.visible),c.visible=!1;this.prepareViewpoint(this.envViewpoint),C.update(A??this.renderer,I),this.prepareViewpoint(this.defaultView);for(const[c,l]of o.entries())c.visible=l;return(h=sA.pmrem)==null?void 0:h.fromCubemap(a.texture).texture}recurseSetEnvMap(A,I){A.traverse(g=>{if(g instanceof n.Mesh)if(Array.isArray(g.material))for(const B of g.material)B instanceof n.MeshStandardMaterial&&(B.envMap=I);else g.material instanceof n.MeshStandardMaterial&&(g.material.envMap=I)})}getRgba({generator:A,rgba:I}){const g=this.active.mapping.find(({node:B})=>B===A);if(!g)throw new Error("Generator not found");return I=I??new JI,I.fromPackedSplats({packedSplats:this.active.splats,base:g.base,count:g.count,renderer:this.renderer}),I}async readRgba({generator:A,rgba:I}){return I=this.getRgba({generator:A,rgba:I}),I.read()}};sA.cubeRender=null,sA.pmrem=null,sA.EMPTY_SPLAT_TEXTURE=new n.Data3DTexture;let zt=sA;const sg=new HI(new Uint32Array(1),0);kA({packedSplats:Pt,index:"int"},{gsplat:_},({packedSplats:t,index:A})=>{if(!t||!A)throw new Error("Invalid input");return{gsplat:bt(t,A)}});function ro(t){if(t.length===0)return null;const A=new n.Vector3,I=new n.Quaternion,g=new n.Vector3,B=[],i=[];for(const e of t)e.decompose(A,I,g),B.push(A),i.push(I);return new n.Matrix4().compose(UB(B),YB(i),new n.Vector3(1,1,1))}function co(t,A,I){const g=Math.floor(t.length/32);if(g*32!==t.length)throw new Error("Invalid .splat file size");const B=new Float32Array(t.buffer);for(let i=0;i<g;++i){const e=i*32,Q=i*8,s=B[Q+0],E=B[Q+1],a=B[Q+2],C=B[Q+3],o=B[Q+4],r=B[Q+5],h=t[e+24]/255,c=t[e+25]/255,l=t[e+26]/255,u=t[e+27]/255,D=(t[e+28]-128)/128,y=(t[e+29]-128)/128,d=(t[e+30]-128)/128,w=(t[e+31]-128)/128;I(i,s,E,a,C,o,r,y,d,w,D,u,h,c,l)}}const Cg={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},ho={0:0,1:9,2:24,3:45};function lo(t,A,I,g){var c;let e=0;const Q=new DataView(t.buffer,e,4096);e+=4096;const s=Q.getUint8(0),E=Q.getUint8(1);if(s!==0||E<1)throw new Error(`Unsupported .ksplat version: ${s}.${E}`);const a=Q.getUint32(4,!0);Q.getUint32(16,!0);const C=Q.getUint16(20,!0);if(C<0||C>2)throw new Error(`Invalid .ksplat compression level: ${C}`);const o=Q.getFloat32(36,!0)||-1.5,r=Q.getFloat32(40,!0)||1.5;let h=4096+a*1024;for(let l=0;l<a;++l){let u=function(NA,T){if(C===0)return H.getFloat32(NA+O+T*4,!0);if(C===1)return yA(H.getUint16(NA+O+T*2,!0));const zA=H.getUint8(NA+O+T)/255;return o+zA*(r-o)};const D=new DataView(t.buffer,e,1024);e+=1024;const y=D.getUint32(0,!0),d=D.getUint32(4,!0),w=D.getUint32(8,!0),F=D.getUint32(12,!0),m=D.getFloat32(16,!0),f=D.getUint16(20,!0),p=(D.getUint32(24,!0)||((c=Cg[C])==null?void 0:c.scaleRange))??1,x=D.getUint32(32,!0),S=x*w,G=D.getUint32(36,!0),Y=G*4,M=f*F+Y,k=D.getUint16(40,!0),U=ho[k],{bytesPerCenter:J,bytesPerScale:AA,bytesPerRotation:Z,bytesPerColor:gA,bytesPerSphericalHarmonicsComponent:tA,scaleOffsetBytes:V,rotationOffsetBytes:b,colorOffsetBytes:P,sphericalHarmonicsOffsetBytes:O}=Cg[C],X=J+AA+Z+gA+U*tA,L=X*d,wA=L+M,EA=[0,3,6,1,4,7,2,5,8],dA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],pA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],GA=k>=1?new Float32Array(3*3):void 0,cA=k>=2?new Float32Array(5*3):void 0,LA=k>=3?new Float32Array(7*3):void 0,SA=m/2/p,PA=h+Y,XA=h+M,H=new DataView(t.buffer,XA,L),DA=new Float32Array(t.buffer,PA,F*3),ZA=new Uint32Array(t.buffer,h,G);let Mt=x,AI=S;for(let NA=0;NA<y;++NA){const T=NA*X;let zA;if(NA<S)zA=Math.floor(NA/w);else{const jA=ZA[Mt-x];NA>=AI+jA&&(Mt+=1,AI+=jA),zA=Mt}const dI=C===0?H.getFloat32(T+0,!0):(H.getUint16(T+0,!0)-p)*SA+DA[3*zA+0],pI=C===0?H.getFloat32(T+4,!0):(H.getUint16(T+2,!0)-p)*SA+DA[3*zA+1],fI=C===0?H.getFloat32(T+8,!0):(H.getUint16(T+4,!0)-p)*SA+DA[3*zA+2],FI=C===0?H.getFloat32(T+V+0,!0):yA(H.getUint16(T+V+0,!0)),GI=C===0?H.getFloat32(T+V+4,!0):yA(H.getUint16(T+V+2,!0)),is=C===0?H.getFloat32(T+V+8,!0):yA(H.getUint16(T+V+4,!0)),es=C===0?H.getFloat32(T+b+0,!0):yA(H.getUint16(T+b+0,!0)),Qs=C===0?H.getFloat32(T+b+4,!0):yA(H.getUint16(T+b+2,!0)),ss=C===0?H.getFloat32(T+b+8,!0):yA(H.getUint16(T+b+4,!0)),Cs=C===0?H.getFloat32(T+b+12,!0):yA(H.getUint16(T+b+6,!0)),Es=H.getUint8(T+P+0)/255,as=H.getUint8(T+P+1)/255,ns=H.getUint8(T+P+2)/255,os=H.getUint8(T+P+3)/255;if(I(NA,dI,pI,fI,FI,GI,is,Qs,ss,Cs,es,os,Es,as,ns),k>=1&&GA){for(const[jA,kt]of EA.entries())GA[jA]=u(T,kt);if(cA)for(const[jA,kt]of dA.entries())cA[jA]=u(T,kt);if(LA)for(const[jA,kt]of pA.entries())LA[jA]=u(T,kt);g==null||g(NA,GA,cA,LA)}}h+=wA}}class VQ{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new TB({fileBytes:this.fileBytes});const I=new DataView(this.reader.read(16).buffer);if(I.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=I.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=I.getUint32(8,!0),this.shDegree=I.getUint8(12),this.fractionalBits=I.getUint8(13),this.flags=I.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=I.getUint8(15),this.parsed=!1}parseSplats(A,I,g,B,i,e){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const Q=this.reader.read(this.numSplats*3*2),s=new Uint16Array(Q.buffer);for(let E=0;E<this.numSplats;E++){const a=E*3,C=yA(s[a]),o=yA(s[a+1]),r=yA(s[a+2]);A==null||A(E,C,o,r)}}else if(this.version===2){const Q=1<<this.fractionalBits,s=this.reader.read(this.numSplats*3*3);for(let E=0;E<this.numSplats;E++){const a=E*9,C=((s[a+2]<<24|s[a+1]<<16|s[a]<<8)>>8)/Q,o=((s[a+5]<<24|s[a+4]<<16|s[a+3]<<8)>>8)/Q,r=((s[a+8]<<24|s[a+7]<<16|s[a+6]<<8)>>8)/Q;A==null||A(E,C,o,r)}}else throw new Error("Unreachable");{const Q=this.reader.read(this.numSplats);for(let s=0;s<this.numSplats;s++)I==null||I(s,Q[s]/255)}{const Q=this.reader.read(this.numSplats*3),s=XQ/.15;for(let E=0;E<this.numSplats;E++){const a=E*3,C=(Q[a]/255-.5)*s+.5,o=(Q[a+1]/255-.5)*s+.5,r=(Q[a+2]/255-.5)*s+.5;g==null||g(E,C,o,r)}}{const Q=this.reader.read(this.numSplats*3);for(let s=0;s<this.numSplats;s++){const E=s*3,a=Math.exp(Q[E]/16-10),C=Math.exp(Q[E+1]/16-10),o=Math.exp(Q[E+2]/16-10);B==null||B(s,a,C,o)}}{const Q=this.reader.read(this.numSplats*3);for(let s=0;s<this.numSplats;s++){const E=s*3,a=Q[E]/127.5-1,C=Q[E+1]/127.5-1,o=Q[E+2]/127.5-1,r=Math.sqrt(Math.max(0,1-a*a-C*C-o*o));i==null||i(s,a,C,o,r)}}if(e&&this.shDegree>=1){const Q=new Float32Array(9),s=this.shDegree>=2?new Float32Array(5*3):void 0,E=this.shDegree>=3?new Float32Array(7*3):void 0,a=this.reader.read(this.numSplats*PQ[this.shDegree]*3);let C=0;for(let o=0;o<this.numSplats;o++){for(let r=0;r<9;++r)Q[r]=(a[C+r]-128)/128;if(C+=9,s){for(let r=0;r<15;++r)s[r]=(a[C+r]-128)/128;C+=15}if(E){for(let r=0;r<21;++r)E[r]=(a[C+r]-128)/128;C+=21}e==null||e(o,Q,s,E)}}}}const PQ={1:3,2:8,3:15},XQ=.28209479177387814,uo=1347635022,Do=2,yo=1;class WA{constructor({numSplats:A,shDegree:I,fractionalBits:g=12,flagAntiAlias:B=!0}){this.clippedCount=0;const i=19+(I>=1?9:0)+(I>=2?15:0)+(I>=3?21:0),e=16+A*i;this.buffer=new ArrayBuffer(e),this.view=new DataView(this.buffer),this.view.setUint32(0,uo,!0),this.view.setUint32(4,Do,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,I),this.view.setUint8(13,g),this.view.setUint8(14,B?yo:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=I,this.fractionalBits=g,this.fraction=1<<g,this.flagAntiAlias=B}setCenter(A,I,g,B){const i=Math.round(I*this.fraction),e=Math.max(-8388607,Math.min(8388607,i)),Q=Math.round(g*this.fraction),s=Math.max(-8388607,Math.min(8388607,Q)),E=Math.round(B*this.fraction),a=Math.max(-8388607,Math.min(8388607,E));(i!==e||Q!==s||E!==a)&&(this.clippedCount+=1);const r=16+A*9;this.view.setUint8(r,e&255),this.view.setUint8(r+1,e>>8&255),this.view.setUint8(r+2,e>>16&255),this.view.setUint8(r+3,s&255),this.view.setUint8(r+4,s>>8&255),this.view.setUint8(r+5,s>>16&255),this.view.setUint8(r+6,a&255),this.view.setUint8(r+7,a>>8&255),this.view.setUint8(r+8,a>>16&255)}setAlpha(A,I){const g=16+this.numSplats*9+A;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(I*255))))}static scaleRgb(A){const I=((A-.5)/(XQ/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(I)))}setRgb(A,I,g,B){const i=16+this.numSplats*10+A*3;this.view.setUint8(i,WA.scaleRgb(I)),this.view.setUint8(i+1,WA.scaleRgb(g)),this.view.setUint8(i+2,WA.scaleRgb(B))}setScale(A,I,g,B){const i=16+this.numSplats*13+A*3;this.view.setUint8(i,Math.max(0,Math.min(255,Math.round((Math.log(I)+10)*16)))),this.view.setUint8(i+1,Math.max(0,Math.min(255,Math.round((Math.log(g)+10)*16)))),this.view.setUint8(i+2,Math.max(0,Math.min(255,Math.round((Math.log(B)+10)*16))))}setQuat(A,I,g,B,i){const e=16+this.numSplats*16+A*3,Q=i<0;this.view.setUint8(e,Math.max(0,Math.min(255,Math.round(((Q?-I:I)+1)*127.5)))),this.view.setUint8(e+1,Math.max(0,Math.min(255,Math.round(((Q?-g:g)+1)*127.5)))),this.view.setUint8(e+2,Math.max(0,Math.min(255,Math.round(((Q?-B:B)+1)*127.5))))}static quantizeSh(A,I){const g=Math.round(A*128)+128,B=1<<8-I,i=Math.floor((g+B/2)/B)*B;return Math.max(0,Math.min(255,i))}setSh(A,I,g,B){const i=PQ[this.shDegree]||0,e=16+this.numSplats*19+A*i*3;for(let Q=0;Q<9;++Q)this.view.setUint8(e+Q,WA.quantizeSh(I[Q],5));if(g){const Q=e+9;for(let s=0;s<15;++s)this.view.setUint8(Q+s,WA.quantizeSh(g[s],4));if(B){const s=Q+15;for(let E=0;E<21;++E)this.view.setUint8(s+E,WA.quantizeSh(B[E],4))}}}async finalize(){const A=new Uint8Array(this.buffer),g=new ReadableStream({async start(e){e.enqueue(A),e.close()}}).pipeThrough(new CompressionStream("gzip")),i=await new Response(g).arrayBuffer();return console.log("Compressed",A.length,"bytes to",i.byteLength,"bytes"),new Uint8Array(i)}}async function wo(t){var a,C,o;const A=new go,{inputs:I,clipXyz:g,maxSh:B,fractionalBits:i=12,opacityThreshold:e}=t;for(const r of I){let h=function(f){return f.multiplyScalar(y),f.applyQuaternion(d),f.add(w),f},c=function(f){return f.multiplyScalar(y),f},l=function(f){return f.premultiply(d),f},u=function(f){return!F||F.containsPoint(f)},D=function(f){return e!==void 0?f>=e:!0};const y=((a=r.transform)==null?void 0:a.scale)??1,d=new n.Quaternion().fromArray(((C=r.transform)==null?void 0:C.quaternion)??[0,0,0,1]),w=new n.Vector3().fromArray(((o=r.transform)==null?void 0:o.translate)??[0,0,0]),F=g?new n.Box3(new n.Vector3().fromArray(g.min),new n.Vector3().fromArray(g.max)):void 0;let m=r.fileType;switch(m||(m=XI(r.fileBytes),!m&&r.pathOrUrl&&(m=ZQ(r.pathOrUrl))),m){case wt.PLY:{const f=new vt({fileBytes:r.fileBytes});await f.parseHeader();let p=null;f.parseSplats((x,S,G,Y,M,k,U,J,AA,Z,gA,tA,V,b,P)=>{const O=h(new n.Vector3(S,G,Y));if(u(O)&&D(tA)){p=A.pushSplat(),A.setCenter(p,O.x,O.y,O.z);const X=c(new n.Vector3(M,k,U));A.setScale(p,X.x,X.y,X.z);const L=l(new n.Quaternion(J,AA,Z,gA));A.setQuaternion(p,L.x,L.y,L.z,L.w),A.setOpacity(p,tA),A.setColor(p,V,b,P)}else p=null},(x,S,G,Y)=>{S&&p!==null&&A.setSh1(p,S),G&&p!==null&&A.setSh2(p,G),Y&&p!==null&&A.setSh3(p,Y)});break}case wt.SPZ:{const f=new VQ({fileBytes:r.fileBytes}),p=new Int32Array(f.numSplats);p.fill(-1);const x=new Float32Array(f.numSplats*3),S=new n.Vector3;f.parseSplats((G,Y,M,k)=>{const U=h(new n.Vector3(Y,M,k));x[G*3]=U.x,x[G*3+1]=U.y,x[G*3+2]=U.z},(G,Y)=>{S.fromArray(x,G*3),u(S)&&D(Y)&&(p[G]=A.pushSplat(),A.setCenter(p[G],S.x,S.y,S.z),A.setOpacity(p[G],Y))},(G,Y,M,k)=>{p[G]>=0&&A.setColor(p[G],Y,M,k)},(G,Y,M,k)=>{if(p[G]>=0){const U=c(new n.Vector3(Y,M,k));A.setScale(p[G],U.x,U.y,U.z)}},(G,Y,M,k,U)=>{if(p[G]>=0){const J=l(new n.Quaternion(Y,M,k,U));A.setQuaternion(p[G],J.x,J.y,J.z,J.w)}},(G,Y,M,k)=>{p[G]>=0&&(A.setSh1(p[G],Y),M&&A.setSh2(p[G],M),k&&A.setSh3(p[G],k))});break}case wt.SPLAT:co(r.fileBytes,f=>{},(f,p,x,S,G,Y,M,k,U,J,AA,Z,gA,tA,V)=>{const b=h(new n.Vector3(p,x,S));if(u(b)&&D(Z)){const P=A.pushSplat();A.setCenter(P,b.x,b.y,b.z);const O=c(new n.Vector3(G,Y,M));A.setScale(P,O.x,O.y,O.z);const X=l(new n.Quaternion(k,U,J,AA));A.setQuaternion(P,X.x,X.y,X.z,X.w),A.setOpacity(P,Z),A.setColor(P,gA,tA,V)}});break;case wt.KSPLAT:{let f=null;lo(r.fileBytes,p=>{},(p,x,S,G,Y,M,k,U,J,AA,Z,gA,tA,V,b)=>{const P=h(new n.Vector3(x,S,G));if(u(P)&&D(gA)){f=A.pushSplat(),A.setCenter(f,P.x,P.y,P.z);const O=c(new n.Vector3(Y,M,k));A.setScale(f,O.x,O.y,O.z);const X=l(new n.Quaternion(U,J,AA,Z));A.setQuaternion(f,X.x,X.y,X.z,X.w),A.setOpacity(f,gA),A.setColor(f,tA,V,b)}else f=null},(p,x,S,G)=>{f!==null&&(A.setSh1(f,x),S&&A.setSh2(f,S),G&&A.setSh3(f,G))});break}default:throw new Error(`transcodeSpz not implemented for ${m}`)}}const Q=Math.min(B??3,A.sh3?3:A.sh2?2:A.sh1?1:0),s=new WA({numSplats:A.numSplats,shDegree:Q,fractionalBits:i,flagAntiAlias:!0});for(let r=0;r<A.numSplats;++r){const h=r*3,c=r*4;s.setCenter(r,A.centers[h],A.centers[h+1],A.centers[h+2]),s.setScale(r,A.scales[h],A.scales[h+1],A.scales[h+2]),s.setQuat(r,A.quaternions[c],A.quaternions[c+1],A.quaternions[c+2],A.quaternions[c+3]),s.setAlpha(r,A.opacities[r]),s.setRgb(r,A.colors[h],A.colors[h+1],A.colors[h+2]),A.sh1&&Q>=1&&s.setSh(r,A.sh1.slice(r*9,(r+1)*9),Q>=2&&A.sh2?A.sh2.slice(r*15,(r+1)*15):void 0,Q>=3&&A.sh3?A.sh3.slice(r*21,(r+1)*21):void 0)}return{fileBytes:await s.finalize(),clippedCount:s.clippedCount}}class po{constructor(A){this.mesh=A.mesh,this.numSplats=A.numSplats??this.mesh.numSplats;const{width:I,height:g,depth:B,maxSplats:i}=FA(this.numSplats);this.skinData=new Uint16Array(i*4),this.skinTexture=new n.DataArrayTexture(this.skinData,I,g,B),this.skinTexture.format=n.RGBAIntegerFormat,this.skinTexture.type=n.UnsignedShortType,this.skinTexture.internalFormat="RGBA16UI",this.skinTexture.needsUpdate=!0,this.numBones=A.numBones??256,this.boneData=new Float32Array(this.numBones*16),this.boneTexture=new n.DataTexture(this.boneData,4,this.numBones,n.RGBAFormat,n.FloatType),this.boneTexture.internalFormat="RGBA32F",this.boneTexture.needsUpdate=!0,this.uniform=new R({key:"skinning",type:jQ,globals:()=>[_Q],value:{numSplats:this.numSplats,numBones:this.numBones,skinTexture:this.skinTexture,boneTexture:this.boneTexture}})}modify(A){return Fo(A,this.uniform)}setRestQuatPos(A,I,g){const B=A*16;this.boneData[B+0]=I.x,this.boneData[B+1]=I.y,this.boneData[B+2]=I.z,this.boneData[B+3]=I.w,this.boneData[B+4]=g.x,this.boneData[B+5]=g.y,this.boneData[B+6]=g.z,this.boneData[B+7]=0,this.boneData[B+8]=0,this.boneData[B+9]=0,this.boneData[B+10]=0,this.boneData[B+11]=1,this.boneData[B+12]=0,this.boneData[B+13]=0,this.boneData[B+14]=0,this.boneData[B+15]=0}setBoneQuatPos(A,I,g){const B=A*16,i=new n.Quaternion(this.boneData[B+0],this.boneData[B+1],this.boneData[B+2],this.boneData[B+3]),e=new n.Vector3(this.boneData[B+4],this.boneData[B+5],this.boneData[B+6]),Q=i.clone().invert(),s=g.clone().sub(e);s.applyQuaternion(Q),Q.multiply(I);const E=new n.Quaternion(s.x,s.y,s.z,0).multiply(i);this.boneData[B+8]=Q.x,this.boneData[B+9]=Q.y,this.boneData[B+10]=Q.z,this.boneData[B+11]=Q.w,this.boneData[B+12]=.5*E.x,this.boneData[B+13]=.5*E.y,this.boneData[B+14]=.5*E.z,this.boneData[B+15]=.5*E.w}setSplatBones(A,I,g){const B=A*4;this.skinData[B+0]=Math.min(255,Math.max(0,Math.round(g.x*255)))+(I.x<<8),this.skinData[B+1]=Math.min(255,Math.max(0,Math.round(g.y*255)))+(I.y<<8),this.skinData[B+2]=Math.min(255,Math.max(0,Math.round(g.z*255)))+(I.z<<8),this.skinData[B+3]=Math.min(255,Math.max(0,Math.round(g.w*255)))+(I.w<<8)}updateBones(){this.boneTexture.needsUpdate=!0,this.mesh.needsUpdate=!0}}const jQ={type:"GsplatSkinning"},_Q=rA(`
1059
+ }`;let Le=null;function xC(){return Le||(B.ShaderChunk.splatDefines=DC,Le={splatVertex:mC,splatFragment:fC}),Le}const Es=5;let ze=!1,_e=!1,Ag;function SC(t){let A=!1;return t instanceof zA?!0:(t.traverse(e=>{A=A||e instanceof zA}),A)}const tg=B.Scene.prototype.add;B.Scene.prototype.add=function(t){return ze=ze||SC(t),_e=_e||t instanceof Xt,tg.call(this,t),this};const MC=B.Scene.prototype.onBeforeRender;B.Scene.prototype.onBeforeRender=function(t){if(ze){if(!_e){const A=Ag||new Xt({renderer:t});this.add(A)}B.Scene.prototype.onBeforeRender=MC,B.Scene.prototype.add=tg}};const gA=class gA extends B.Mesh{constructor(A){const e=gA.makeUniforms(),s=xC(),i=new B.ShaderMaterial({glslVersion:B.GLSL3,vertexShader:s.splatVertex,fragmentShader:s.splatFragment,uniforms:e,transparent:!0,blending:B.NormalBlending,depthTest:!0,depthWrite:!1,side:B.DoubleSide});super(cs,i),this.splatTexture=null,this.autoViewpoints=[],this.rotateToAccumulator=new ee({value:new B.Quaternion}),this.translateToAccumulator=new Ft({value:new B.Vector3}),this.lastFrame=-1,this.lastUpdateTime=null,this.defaultCameras=[],this.pendingUpdate=null,this.envViewpoint=null,this.frustumCulled=!1,this.renderer=A.renderer,this.material=i,this.uniforms=e;const n=GA({gsplat:j},{gsplat:j},({gsplat:a})=>{if(!a)throw new Error("gsplat not defined");return a=Pe(a,{rotate:this.rotateToAccumulator,translate:this.translateToAccumulator}),{gsplat:a}});this.modifier=new Pr(n),this.autoUpdate=A.autoUpdate??!0,this.preUpdate=A.preUpdate??!1,this.originDistance=A.originDistance??1,this.maxStdDev=A.maxStdDev??Math.sqrt(8),this.enable2DGS=A.enable2DGS??!1,this.preBlurAmount=A.preBlurAmount??0,this.blurAmount=A.blurAmount??.3,this.focalDistance=A.focalDistance??0,this.apertureAngle=A.apertureAngle??0,this.falloff=A.falloff??1,this.clipXY=A.clipXY??1.4,this.focalAdjustment=A.focalAdjustment??1,this.active=new Qe,this.accumulatorCount=1,this.freeAccumulators=[];for(let a=0;a<1;++a)this.freeAccumulators.push(new Qe),this.accumulatorCount+=1;this.defaultView=new Zt({...A.view,autoUpdate:!0,spark:this}),this.viewpoint=this.defaultView,this.prepareViewpoint(this.viewpoint),this.clock=A.clock?Ti(A.clock):new B.Clock,Ag=this}static makeUniforms(){return{renderSize:{value:new B.Vector2},near:{value:.1},far:{value:1e3},numSplats:{value:0},renderToViewQuat:{value:new B.Quaternion},renderToViewPos:{value:new B.Vector3},maxStdDev:{value:1},enable2DGS:{value:!1},preBlurAmount:{value:0},blurAmount:{value:.3},focalDistance:{value:0},apertureAngle:{value:0},falloff:{value:1},clipXY:{value:1.4},focalAdjustment:{value:1},splatTexEnable:{value:!1},splatTexture:{type:"t",value:gA.EMPTY_SPLAT_TEXTURE},splatTexMul:{value:new B.Matrix2},splatTexAdd:{value:new B.Vector2},splatTexNear:{value:.1},splatTexFar:{value:1e3},splatTexMid:{value:0},packedSplats:{type:"t",value:JA.getEmpty()},time:{value:0},deltaTime:{value:0},encodeLinear:{value:!1},debugFlag:{value:!1}}}canAllocAccumulator(){return this.freeAccumulators.length>0||this.accumulatorCount<Es}maybeAllocAccumulator(){let A=this.freeAccumulators.pop();if(A===void 0){if(this.accumulatorCount>=Es)return null;A=new Qe,this.accumulatorCount+=1}return A.refCount=1,A}releaseAccumulator(A){A.refCount-=1,A.refCount===0&&this.freeAccumulators.push(A)}newViewpoint(A){return new Zt({...A,spark:this})}onBeforeRender(A,e,s){var E,l;const i=this.time??this.clock.getElapsedTime(),n=i-(this.viewpoint.lastTime??i);this.viewpoint.lastTime=i;const a=A.info.render.frame,r=a!==this.lastFrame;this.lastFrame=a;const g=this.viewpoint;if(g===this.defaultView){if(r)if(!A.xr.isPresenting)this.defaultView.viewToWorld=s.matrixWorld.clone(),this.defaultCameras=[this.defaultView.viewToWorld];else{const c=A.xr.getCamera().cameras;this.defaultCameras=c.map(h=>h.matrixWorld),this.defaultView.viewToWorld=FC(this.defaultCameras)??new B.Matrix4}this.autoUpdate&&this.update({scene:e,viewToWorld:this.defaultView.viewToWorld})}if(r&&(this.uniforms.time.value=i,this.uniforms.deltaTime.value=n,this.uniforms.debugFlag.value=performance.now()/1e3%2<1),g.target)this.uniforms.renderSize.value.set(g.target.width,g.target.height);else{const c=A.getDrawingBufferSize(this.uniforms.renderSize.value);if(c.x===1&&c.y===1){const h=(E=A.xr.getSession())==null?void 0:E.renderState.baseLayer;h&&(c.x=h.framebufferWidth,c.y=h.framebufferHeight)}}const I=s;if(this.uniforms.near.value=I.near,this.uniforms.far.value=I.far,this.uniforms.encodeLinear.value=g.encodeLinear,this.uniforms.maxStdDev.value=this.maxStdDev,this.uniforms.enable2DGS.value=this.enable2DGS,this.uniforms.preBlurAmount.value=this.preBlurAmount,this.uniforms.blurAmount.value=this.blurAmount,this.uniforms.focalDistance.value=this.focalDistance,this.uniforms.apertureAngle.value=this.apertureAngle,this.uniforms.falloff.value=this.falloff,this.uniforms.clipXY.value=this.clipXY,this.uniforms.focalAdjustment.value=this.focalAdjustment,this.splatTexture){const{enable:c,texture:h,multiply:u,add:p,near:d,far:y,mid:D}=this.splatTexture;c&&h?(this.uniforms.splatTexEnable.value=!0,this.uniforms.splatTexture.value=h,u?this.uniforms.splatTexMul.value.fromArray(u.elements):this.uniforms.splatTexMul.value.set(.5/this.maxStdDev,0,0,.5/this.maxStdDev),this.uniforms.splatTexAdd.value.set((p==null?void 0:p.x)??.5,(p==null?void 0:p.y)??.5),this.uniforms.splatTexNear.value=d??this.uniforms.near.value,this.uniforms.splatTexFar.value=y??this.uniforms.far.value,this.uniforms.splatTexMid.value=D??0):(this.uniforms.splatTexEnable.value=!1,this.uniforms.splatTexture.value=gA.EMPTY_SPLAT_TEXTURE)}else this.uniforms.splatTexEnable.value=!1,this.uniforms.splatTexture.value=gA.EMPTY_SPLAT_TEXTURE;const Q=((l=g.display)==null?void 0:l.accumulator.toWorld)??new B.Matrix4,o=s.matrixWorld.clone().invert();Q.clone().premultiply(o).decompose(this.uniforms.renderToViewPos.value,this.uniforms.renderToViewQuat.value,new B.Vector3)}prepareViewpoint(A){if(this.viewpoint=A??this.viewpoint,this.viewpoint.display){const{accumulator:e,geometry:s}=this.viewpoint.display;this.uniforms.numSplats.value=e.splats.numSplats,this.uniforms.packedSplats.value=e.splats.getTexture(),this.geometry=s}else this.uniforms.numSplats.value=0,this.uniforms.packedSplats.value=JA.getEmpty(),this.geometry=cs}update({scene:A,viewToWorld:e}){const s=this.matrixWorld.clone();this.preUpdate?this.updateInternal({scene:A,originToWorld:s,viewToWorld:e}):(this.pendingUpdate={scene:A,originToWorld:s},setTimeout(()=>{if(this.pendingUpdate){const{scene:i,originToWorld:n}=this.pendingUpdate;this.pendingUpdate=null,this.updateInternal({scene:i,originToWorld:n,viewToWorld:e})}},1))}updateInternal({scene:A,originToWorld:e,viewToWorld:s}){var l;if(!this.canAllocAccumulator())return!1;e||(e=this.active.toWorld),s=s??e.clone();const i=this.time??this.clock.getElapsedTime(),n=i-(this.lastUpdateTime??i);this.lastUpdateTime=i;const a=this.active.mapping.reduce((c,h)=>(c.set(h.node,h),c),new Map),{generators:r,visibleGenerators:g,globalEdits:I}=this.compileScene(A);for(const c of r)(l=c.frameUpdate)==null||l.call(c,{object:c,time:i,deltaTime:n,viewToWorld:s,globalEdits:I});const Q=new Set(g.map(c=>c.uuid));for(const c of r){const h=a.get(c),p=c.generator&&Q.has(c.uuid)?c.numSplats:0;(c.generator!==(h==null?void 0:h.generator)||p!==(h==null?void 0:h.count))&&c.updateVersion()}const C=!he({matrix1:e,matrix2:this.active.toWorld,maxDistance:this.originDistance})||r.length!==a.size||r.some(c=>{var h;return c.version!==((h=a.get(c))==null?void 0:h.version)});let E=null;if(C){if(E=this.maybeAllocAccumulator(),!E)throw new Error("Unreachable");const c=!he({matrix1:e,matrix2:this.active.toWorld,maxDistance:1e-5,minCoorient:.99999}),u=g.map((m,f)=>{const w=a.get(m);return w?[m.version-w.version,w.base,m]:[Number.POSITIVE_INFINITY,m.version,m]}).sort((m,f)=>m[0]!==f[0]?m[0]-f[0]:m[1]-f[1]).map(([m,f,w])=>w),p=u.map(m=>m.numSplats),{maxSplats:d,mapping:y}=E.splats.generateMapping(p),D=u.map((m,f)=>{const{base:w,count:R}=y[f];return{node:m,generator:m.generator,version:m.version,base:w,count:R}});e.clone().invert().decompose(this.translateToAccumulator.value,this.rotateToAccumulator.value,new B.Vector3),E.ensureGenerate(d),E.generateSplats({renderer:this.renderer,modifier:this.modifier,generators:D,forceUpdate:c,originToWorld:e}),E.splatsVersion=this.active.splatsVersion+1;const S=E.hasCorrespondence(this.active);E.mappingVersion=this.active.mappingVersion+(S?0:1),this.releaseAccumulator(this.active),this.active=E,this.prepareViewpoint()}return setTimeout(()=>{for(const c of this.autoViewpoints)c.autoPoll({accumulator:E??void 0})},1),!0}compileScene(A){const e=[];A.traverse(n=>{n instanceof kt&&e.push(n)});const s=[];A.traverseVisible(n=>{n instanceof kt&&s.push(n)});const i=new Set;return A.traverseVisible(n=>{if(n instanceof Pt){let a=n.parent;for(;a!=null&&!(a instanceof zA);)a=a.parent;a==null&&i.add(n)}}),{generators:e,visibleGenerators:s,globalEdits:Array.from(i)}}async renderEnvMap({renderer:A,scene:e,worldCenter:s,size:i=256,near:n=.1,far:a=1e3,hideObjects:r=[],update:g=!1}){var E,l;if(this.envViewpoint||(this.envViewpoint=this.newViewpoint({sort360:!0})),!gA.cubeRender||gA.cubeRender.target.width!==i||gA.cubeRender.near!==n||gA.cubeRender.far!==a){gA.cubeRender&&gA.cubeRender.target.dispose();const c=new B.WebGLCubeRenderTarget(i,{format:B.RGBAFormat,generateMipmaps:!0,minFilter:B.LinearMipMapLinearFilter}),h=new B.CubeCamera(n,a,c);gA.cubeRender={target:c,camera:h,near:n,far:a}}gA.pmrem||(gA.pmrem=new B.PMREMGenerator(A??this.renderer));const I=new B.Matrix4().setPosition(s);await((E=this.envViewpoint)==null?void 0:E.prepare({scene:e,viewToWorld:I,update:g}));const{target:Q,camera:o}=gA.cubeRender;o.position.copy(s);const C=new Map;for(const c of r)C.set(c,c.visible),c.visible=!1;this.prepareViewpoint(this.envViewpoint),o.update(A??this.renderer,e),this.prepareViewpoint(this.defaultView);for(const[c,h]of C.entries())c.visible=h;return(l=gA.pmrem)==null?void 0:l.fromCubemap(Q.texture).texture}recurseSetEnvMap(A,e){A.traverse(s=>{if(s instanceof B.Mesh)if(Array.isArray(s.material))for(const i of s.material)i instanceof B.MeshStandardMaterial&&(i.envMap=e);else s.material instanceof B.MeshStandardMaterial&&(s.material.envMap=e)})}getRgba({generator:A,rgba:e}){const s=this.active.mapping.find(({node:i})=>i===A);if(!s)throw new Error("Generator not found");return e=e??new qe,e.fromPackedSplats({packedSplats:this.active.splats,base:s.base,count:s.count,renderer:this.renderer}),e}async readRgba({generator:A,rgba:e}){return e=this.getRgba({generator:A,rgba:e}),e.read()}};gA.cubeRender=null,gA.pmrem=null,gA.EMPTY_SPLAT_TEXTURE=new B.Data3DTexture;let Xt=gA;const cs=new Ke(new Uint32Array(1),0);GA({packedSplats:te,index:"int"},{gsplat:j},({packedSplats:t,index:A})=>{if(!t||!A)throw new Error("Invalid input");return{gsplat:zt(t,A)}});function FC(t){if(t.length===0)return null;const A=new B.Vector3,e=new B.Quaternion,s=new B.Vector3,i=[],n=[];for(const a of t)a.decompose(A,e,s),i.push(A),n.push(e);return new B.Matrix4().compose(qi(i),Ki(n),new B.Vector3(1,1,1))}function NC(t,A,e){const s=Math.floor(t.length/32);if(s*32!==t.length)throw new Error("Invalid .splat file size");const i=new Float32Array(t.buffer);for(let n=0;n<s;++n){const a=n*32,r=n*8,g=i[r+0],I=i[r+1],Q=i[r+2],o=i[r+3],C=i[r+4],E=i[r+5],l=t[a+24]/255,c=t[a+25]/255,h=t[a+26]/255,u=t[a+27]/255,p=(t[a+28]-128)/128,d=(t[a+29]-128)/128,y=(t[a+30]-128)/128,D=(t[a+31]-128)/128;e(n,g,I,Q,o,C,E,d,y,D,p,u,l,c,h)}}const hs={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},kC={0:0,1:9,2:24,3:45};function GC(t,A,e,s){var c;let a=0;const r=new DataView(t.buffer,a,4096);a+=4096;const g=r.getUint8(0),I=r.getUint8(1);if(g!==0||I<1)throw new Error(`Unsupported .ksplat version: ${g}.${I}`);const Q=r.getUint32(4,!0);r.getUint32(16,!0);const o=r.getUint16(20,!0);if(o<0||o>2)throw new Error(`Invalid .ksplat compression level: ${o}`);const C=r.getFloat32(36,!0)||-1.5,E=r.getFloat32(40,!0)||1.5;let l=4096+Q*1024;for(let h=0;h<Q;++h){let u=function(FA,T){if(o===0)return Y.getFloat32(FA+P+T*4,!0);if(o===1)return pA(Y.getUint16(FA+P+T*2,!0));const PA=Y.getUint8(FA+P+T)/255;return C+PA*(E-C)};const p=new DataView(t.buffer,a,1024);a+=1024;const d=p.getUint32(0,!0),y=p.getUint32(4,!0),D=p.getUint32(8,!0),S=p.getUint32(12,!0),m=p.getFloat32(16,!0),f=p.getUint16(20,!0),w=(p.getUint32(24,!0)||((c=hs[o])==null?void 0:c.scaleRange))??1,R=p.getUint32(32,!0),M=R*D,x=p.getUint32(36,!0),L=x*4,N=f*S+L,k=p.getUint16(40,!0),U=kC[k],{bytesPerCenter:v,bytesPerScale:AA,bytesPerRotation:z,bytesPerColor:sA,bytesPerSphericalHarmonicsComponent:tA,scaleOffsetBytes:V,rotationOffsetBytes:J,colorOffsetBytes:Z,sphericalHarmonicsOffsetBytes:P}=hs[o],X=v+AA+z+sA+U*tA,b=X*y,yA=b+N,IA=[0,3,6,1,4,7,2,5,8],wA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],DA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],SA=k>=1?new Float32Array(3*3):void 0,hA=k>=2?new Float32Array(5*3):void 0,bA=k>=3?new Float32Array(7*3):void 0,MA=m/2/w,WA=l+L,jA=l+N,Y=new DataView(t.buffer,jA,b),dA=new Float32Array(t.buffer,WA,S*3),OA=new Uint32Array(t.buffer,l,x);let Lt=R,ie=M;for(let FA=0;FA<d;++FA){const T=FA*X;let PA;if(FA<M)PA=Math.floor(FA/D);else{const $A=OA[Lt-R];FA>=ie+$A&&(Lt+=1,ie+=$A),PA=Lt}const me=o===0?Y.getFloat32(T+0,!0):(Y.getUint16(T+0,!0)-w)*MA+dA[3*PA+0],xe=o===0?Y.getFloat32(T+4,!0):(Y.getUint16(T+2,!0)-w)*MA+dA[3*PA+1],Se=o===0?Y.getFloat32(T+8,!0):(Y.getUint16(T+4,!0)-w)*MA+dA[3*PA+2],Me=o===0?Y.getFloat32(T+V+0,!0):pA(Y.getUint16(T+V+0,!0)),Fe=o===0?Y.getFloat32(T+V+4,!0):pA(Y.getUint16(T+V+2,!0)),Cg=o===0?Y.getFloat32(T+V+8,!0):pA(Y.getUint16(T+V+4,!0)),Eg=o===0?Y.getFloat32(T+J+0,!0):pA(Y.getUint16(T+J+0,!0)),cg=o===0?Y.getFloat32(T+J+4,!0):pA(Y.getUint16(T+J+2,!0)),hg=o===0?Y.getFloat32(T+J+8,!0):pA(Y.getUint16(T+J+4,!0)),lg=o===0?Y.getFloat32(T+J+12,!0):pA(Y.getUint16(T+J+6,!0)),ug=Y.getUint8(T+Z+0)/255,dg=Y.getUint8(T+Z+1)/255,pg=Y.getUint8(T+Z+2)/255,yg=Y.getUint8(T+Z+3)/255;if(e(FA,me,xe,Se,Me,Fe,Cg,cg,hg,lg,Eg,yg,ug,dg,pg),k>=1&&SA){for(const[$A,bt]of IA.entries())SA[$A]=u(T,bt);if(hA)for(const[$A,bt]of wA.entries())hA[$A]=u(T,bt);if(bA)for(const[$A,bt]of DA.entries())bA[$A]=u(T,bt);s==null||s(FA,SA,hA,bA)}}l+=yA}}class eg{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new Vi({fileBytes:this.fileBytes});const e=new DataView(this.reader.read(16).buffer);if(e.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=e.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=e.getUint32(8,!0),this.shDegree=e.getUint8(12),this.fractionalBits=e.getUint8(13),this.flags=e.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=e.getUint8(15),this.parsed=!1}parseSplats(A,e,s,i,n,a){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const r=this.reader.read(this.numSplats*3*2),g=new Uint16Array(r.buffer);for(let I=0;I<this.numSplats;I++){const Q=I*3,o=pA(g[Q]),C=pA(g[Q+1]),E=pA(g[Q+2]);A==null||A(I,o,C,E)}}else if(this.version===2){const r=1<<this.fractionalBits,g=this.reader.read(this.numSplats*3*3);for(let I=0;I<this.numSplats;I++){const Q=I*9,o=((g[Q+2]<<24|g[Q+1]<<16|g[Q]<<8)>>8)/r,C=((g[Q+5]<<24|g[Q+4]<<16|g[Q+3]<<8)>>8)/r,E=((g[Q+8]<<24|g[Q+7]<<16|g[Q+6]<<8)>>8)/r;A==null||A(I,o,C,E)}}else throw new Error("Unreachable");{const r=this.reader.read(this.numSplats);for(let g=0;g<this.numSplats;g++)e==null||e(g,r[g]/255)}{const r=this.reader.read(this.numSplats*3),g=ig/.15;for(let I=0;I<this.numSplats;I++){const Q=I*3,o=(r[Q]/255-.5)*g+.5,C=(r[Q+1]/255-.5)*g+.5,E=(r[Q+2]/255-.5)*g+.5;s==null||s(I,o,C,E)}}{const r=this.reader.read(this.numSplats*3);for(let g=0;g<this.numSplats;g++){const I=g*3,Q=Math.exp(r[I]/16-10),o=Math.exp(r[I+1]/16-10),C=Math.exp(r[I+2]/16-10);i==null||i(g,Q,o,C)}}{const r=this.reader.read(this.numSplats*3);for(let g=0;g<this.numSplats;g++){const I=g*3,Q=r[I]/127.5-1,o=r[I+1]/127.5-1,C=r[I+2]/127.5-1,E=Math.sqrt(Math.max(0,1-Q*Q-o*o-C*C));n==null||n(g,Q,o,C,E)}}if(a&&this.shDegree>=1){const r=new Float32Array(9),g=this.shDegree>=2?new Float32Array(5*3):void 0,I=this.shDegree>=3?new Float32Array(7*3):void 0,Q=this.reader.read(this.numSplats*sg[this.shDegree]*3);let o=0;for(let C=0;C<this.numSplats;C++){for(let E=0;E<9;++E)r[E]=(Q[o+E]-128)/128;if(o+=9,g){for(let E=0;E<15;++E)g[E]=(Q[o+E]-128)/128;o+=15}if(I){for(let E=0;E<21;++E)I[E]=(Q[o+E]-128)/128;o+=21}a==null||a(C,r,g,I)}}}}const sg={1:3,2:8,3:15},ig=.28209479177387814,RC=1347635022,UC=2,LC=1;class VA{constructor({numSplats:A,shDegree:e,fractionalBits:s=12,flagAntiAlias:i=!0}){this.clippedCount=0;const n=19+(e>=1?9:0)+(e>=2?15:0)+(e>=3?21:0),a=16+A*n;this.buffer=new ArrayBuffer(a),this.view=new DataView(this.buffer),this.view.setUint32(0,RC,!0),this.view.setUint32(4,UC,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,e),this.view.setUint8(13,s),this.view.setUint8(14,i?LC:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=e,this.fractionalBits=s,this.fraction=1<<s,this.flagAntiAlias=i}setCenter(A,e,s,i){const n=Math.round(e*this.fraction),a=Math.max(-8388607,Math.min(8388607,n)),r=Math.round(s*this.fraction),g=Math.max(-8388607,Math.min(8388607,r)),I=Math.round(i*this.fraction),Q=Math.max(-8388607,Math.min(8388607,I));(n!==a||r!==g||I!==Q)&&(this.clippedCount+=1);const E=16+A*9;this.view.setUint8(E,a&255),this.view.setUint8(E+1,a>>8&255),this.view.setUint8(E+2,a>>16&255),this.view.setUint8(E+3,g&255),this.view.setUint8(E+4,g>>8&255),this.view.setUint8(E+5,g>>16&255),this.view.setUint8(E+6,Q&255),this.view.setUint8(E+7,Q>>8&255),this.view.setUint8(E+8,Q>>16&255)}setAlpha(A,e){const s=16+this.numSplats*9+A;this.view.setUint8(s,Math.max(0,Math.min(255,Math.round(e*255))))}static scaleRgb(A){const e=((A-.5)/(ig/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(e)))}setRgb(A,e,s,i){const n=16+this.numSplats*10+A*3;this.view.setUint8(n,VA.scaleRgb(e)),this.view.setUint8(n+1,VA.scaleRgb(s)),this.view.setUint8(n+2,VA.scaleRgb(i))}setScale(A,e,s,i){const n=16+this.numSplats*13+A*3;this.view.setUint8(n,Math.max(0,Math.min(255,Math.round((Math.log(e)+10)*16)))),this.view.setUint8(n+1,Math.max(0,Math.min(255,Math.round((Math.log(s)+10)*16)))),this.view.setUint8(n+2,Math.max(0,Math.min(255,Math.round((Math.log(i)+10)*16))))}setQuat(A,e,s,i,n){const a=16+this.numSplats*16+A*3,r=n<0;this.view.setUint8(a,Math.max(0,Math.min(255,Math.round(((r?-e:e)+1)*127.5)))),this.view.setUint8(a+1,Math.max(0,Math.min(255,Math.round(((r?-s:s)+1)*127.5)))),this.view.setUint8(a+2,Math.max(0,Math.min(255,Math.round(((r?-i:i)+1)*127.5))))}static quantizeSh(A,e){const s=Math.round(A*128)+128,i=1<<8-e,n=Math.floor((s+i/2)/i)*i;return Math.max(0,Math.min(255,n))}setSh(A,e,s,i){const n=sg[this.shDegree]||0,a=16+this.numSplats*19+A*n*3;for(let r=0;r<9;++r)this.view.setUint8(a+r,VA.quantizeSh(e[r],5));if(s){const r=a+9;for(let g=0;g<15;++g)this.view.setUint8(r+g,VA.quantizeSh(s[g],4));if(i){const g=r+15;for(let I=0;I<21;++I)this.view.setUint8(g+I,VA.quantizeSh(i[I],4))}}}async finalize(){const A=new Uint8Array(this.buffer),s=new ReadableStream({async start(a){a.enqueue(A),a.close()}}).pipeThrough(new CompressionStream("gzip")),n=await new Response(s).arrayBuffer();return console.log("Compressed",A.length,"bytes to",n.byteLength,"bytes"),new Uint8Array(n)}}async function bC(t){var Q,o,C;const A=new uC,{inputs:e,clipXyz:s,maxSh:i,fractionalBits:n=12,opacityThreshold:a}=t;for(const E of e){let l=function(f){return f.multiplyScalar(d),f.applyQuaternion(y),f.add(D),f},c=function(f){return f.multiplyScalar(d),f},h=function(f){return f.premultiply(y),f},u=function(f){return!S||S.containsPoint(f)},p=function(f){return a!==void 0?f>=a:!0};const d=((Q=E.transform)==null?void 0:Q.scale)??1,y=new B.Quaternion().fromArray(((o=E.transform)==null?void 0:o.quaternion)??[0,0,0,1]),D=new B.Vector3().fromArray(((C=E.transform)==null?void 0:C.translate)??[0,0,0]),S=s?new B.Box3(new B.Vector3().fromArray(s.min),new B.Vector3().fromArray(s.max)):void 0;let m=E.fileType;switch(m||(m=ts(E.fileBytes),!m&&E.pathOrUrl&&(m=$r(E.pathOrUrl))),m){case Dt.PLY:{const f=new Vt({fileBytes:E.fileBytes});await f.parseHeader();let w=null;f.parseSplats((R,M,x,L,N,k,U,v,AA,z,sA,tA,V,J,Z)=>{const P=l(new B.Vector3(M,x,L));if(u(P)&&p(tA)){w=A.pushSplat(),A.setCenter(w,P.x,P.y,P.z);const X=c(new B.Vector3(N,k,U));A.setScale(w,X.x,X.y,X.z);const b=h(new B.Quaternion(v,AA,z,sA));A.setQuaternion(w,b.x,b.y,b.z,b.w),A.setOpacity(w,tA),A.setColor(w,V,J,Z)}else w=null},(R,M,x,L)=>{M&&w!==null&&A.setSh1(w,M),x&&w!==null&&A.setSh2(w,x),L&&w!==null&&A.setSh3(w,L)});break}case Dt.SPZ:{const f=new eg({fileBytes:E.fileBytes}),w=new Int32Array(f.numSplats);w.fill(-1);const R=new Float32Array(f.numSplats*3),M=new B.Vector3;f.parseSplats((x,L,N,k)=>{const U=l(new B.Vector3(L,N,k));R[x*3]=U.x,R[x*3+1]=U.y,R[x*3+2]=U.z},(x,L)=>{M.fromArray(R,x*3),u(M)&&p(L)&&(w[x]=A.pushSplat(),A.setCenter(w[x],M.x,M.y,M.z),A.setOpacity(w[x],L))},(x,L,N,k)=>{w[x]>=0&&A.setColor(w[x],L,N,k)},(x,L,N,k)=>{if(w[x]>=0){const U=c(new B.Vector3(L,N,k));A.setScale(w[x],U.x,U.y,U.z)}},(x,L,N,k,U)=>{if(w[x]>=0){const v=h(new B.Quaternion(L,N,k,U));A.setQuaternion(w[x],v.x,v.y,v.z,v.w)}},(x,L,N,k)=>{w[x]>=0&&(A.setSh1(w[x],L),N&&A.setSh2(w[x],N),k&&A.setSh3(w[x],k))});break}case Dt.SPLAT:NC(E.fileBytes,f=>{},(f,w,R,M,x,L,N,k,U,v,AA,z,sA,tA,V)=>{const J=l(new B.Vector3(w,R,M));if(u(J)&&p(z)){const Z=A.pushSplat();A.setCenter(Z,J.x,J.y,J.z);const P=c(new B.Vector3(x,L,N));A.setScale(Z,P.x,P.y,P.z);const X=h(new B.Quaternion(k,U,v,AA));A.setQuaternion(Z,X.x,X.y,X.z,X.w),A.setOpacity(Z,z),A.setColor(Z,sA,tA,V)}});break;case Dt.KSPLAT:{let f=null;GC(E.fileBytes,w=>{},(w,R,M,x,L,N,k,U,v,AA,z,sA,tA,V,J)=>{const Z=l(new B.Vector3(R,M,x));if(u(Z)&&p(sA)){f=A.pushSplat(),A.setCenter(f,Z.x,Z.y,Z.z);const P=c(new B.Vector3(L,N,k));A.setScale(f,P.x,P.y,P.z);const X=h(new B.Quaternion(U,v,AA,z));A.setQuaternion(f,X.x,X.y,X.z,X.w),A.setOpacity(f,sA),A.setColor(f,tA,V,J)}else f=null},(w,R,M,x)=>{f!==null&&(A.setSh1(f,R),M&&A.setSh2(f,M),x&&A.setSh3(f,x))});break}default:throw new Error(`transcodeSpz not implemented for ${m}`)}}const r=Math.min(i??3,A.sh3?3:A.sh2?2:A.sh1?1:0),g=new VA({numSplats:A.numSplats,shDegree:r,fractionalBits:n,flagAntiAlias:!0});for(let E=0;E<A.numSplats;++E){const l=E*3,c=E*4;g.setCenter(E,A.centers[l],A.centers[l+1],A.centers[l+2]),g.setScale(E,A.scales[l],A.scales[l+1],A.scales[l+2]),g.setQuat(E,A.quaternions[c],A.quaternions[c+1],A.quaternions[c+2],A.quaternions[c+3]),g.setAlpha(E,A.opacities[E]),g.setRgb(E,A.colors[l],A.colors[l+1],A.colors[l+2]),A.sh1&&r>=1&&g.setSh(E,A.sh1.slice(E*9,(E+1)*9),r>=2&&A.sh2?A.sh2.slice(E*15,(E+1)*15):void 0,r>=3&&A.sh3?A.sh3.slice(E*21,(E+1)*21):void 0)}return{fileBytes:await g.finalize(),clippedCount:g.clippedCount}}class vC{constructor(A){this.mesh=A.mesh,this.numSplats=A.numSplats??this.mesh.numSplats;const{width:e,height:s,depth:i,maxSplats:n}=xA(this.numSplats);this.skinData=new Uint16Array(n*4),this.skinTexture=new B.DataArrayTexture(this.skinData,e,s,i),this.skinTexture.format=B.RGBAIntegerFormat,this.skinTexture.type=B.UnsignedShortType,this.skinTexture.internalFormat="RGBA16UI",this.skinTexture.needsUpdate=!0,this.numBones=A.numBones??256,this.boneData=new Float32Array(this.numBones*16),this.boneTexture=new B.DataTexture(this.boneData,4,this.numBones,B.RGBAFormat,B.FloatType),this.boneTexture.internalFormat="RGBA32F",this.boneTexture.needsUpdate=!0,this.uniform=new G({key:"skinning",type:ng,globals:()=>[ag],value:{numSplats:this.numSplats,numBones:this.numBones,skinTexture:this.skinTexture,boneTexture:this.boneTexture}})}modify(A){return JC(A,this.uniform)}setRestQuatPos(A,e,s){const i=A*16;this.boneData[i+0]=e.x,this.boneData[i+1]=e.y,this.boneData[i+2]=e.z,this.boneData[i+3]=e.w,this.boneData[i+4]=s.x,this.boneData[i+5]=s.y,this.boneData[i+6]=s.z,this.boneData[i+7]=0,this.boneData[i+8]=0,this.boneData[i+9]=0,this.boneData[i+10]=0,this.boneData[i+11]=1,this.boneData[i+12]=0,this.boneData[i+13]=0,this.boneData[i+14]=0,this.boneData[i+15]=0}setBoneQuatPos(A,e,s){const i=A*16,n=new B.Quaternion(this.boneData[i+0],this.boneData[i+1],this.boneData[i+2],this.boneData[i+3]),a=new B.Vector3(this.boneData[i+4],this.boneData[i+5],this.boneData[i+6]),r=n.clone().invert(),g=s.clone().sub(a);g.applyQuaternion(r),r.multiply(e);const I=new B.Quaternion(g.x,g.y,g.z,0).multiply(n);this.boneData[i+8]=r.x,this.boneData[i+9]=r.y,this.boneData[i+10]=r.z,this.boneData[i+11]=r.w,this.boneData[i+12]=.5*I.x,this.boneData[i+13]=.5*I.y,this.boneData[i+14]=.5*I.z,this.boneData[i+15]=.5*I.w}setSplatBones(A,e,s){const i=A*4;this.skinData[i+0]=Math.min(255,Math.max(0,Math.round(s.x*255)))+(e.x<<8),this.skinData[i+1]=Math.min(255,Math.max(0,Math.round(s.y*255)))+(e.y<<8),this.skinData[i+2]=Math.min(255,Math.max(0,Math.round(s.z*255)))+(e.z<<8),this.skinData[i+3]=Math.min(255,Math.max(0,Math.round(s.w*255)))+(e.w<<8)}updateBones(){this.boneTexture.needsUpdate=!0,this.mesh.needsUpdate=!0}}const ng={type:"GsplatSkinning"},ag=cA(`
1060
1060
  struct GsplatSkinning {
1061
1061
  int numSplats;
1062
1062
  int numBones;
1063
1063
  usampler2DArray skinTexture;
1064
1064
  sampler2D boneTexture;
1065
1065
  };
1066
- `),fo=rA(`
1066
+ `),YC=cA(`
1067
1067
  void applyGsplatSkinning(
1068
1068
  int numSplats, int numBones,
1069
1069
  usampler2DArray skinTexture, sampler2D boneTexture,
@@ -1122,15 +1122,15 @@ void main() {
1122
1122
  center = quatVec(quat, center) + translate;
1123
1123
  quaternion = quatQuat(quat, quaternion);
1124
1124
  }
1125
- `);function Fo(t,A){return new W({inTypes:{gsplat:_,skinning:jQ},outTypes:{gsplat:_},globals:()=>[_Q,fo],inputs:{gsplat:t,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:i}=g,{gsplat:e}=B;return YA(`
1126
- ${e} = ${g.gsplat};
1127
- if (isGsplatActive(${e}.flags)) {
1125
+ `);function JC(t,A){return new O({inTypes:{gsplat:j,skinning:ng},outTypes:{gsplat:j},globals:()=>[ag,YC],inputs:{gsplat:t,skinning:A},statements:({inputs:s,outputs:i})=>{const{skinning:n}=s,{gsplat:a}=i;return LA(`
1126
+ ${a} = ${s.gsplat};
1127
+ if (isGsplatActive(${a}.flags)) {
1128
1128
  applyGsplatSkinning(
1129
- ${i}.numSplats, ${i}.numBones,
1130
- ${i}.skinTexture, ${i}.boneTexture,
1131
- ${e}.index, ${e}.center, ${e}.quaternion
1129
+ ${n}.numSplats, ${n}.numBones,
1130
+ ${n}.skinTexture, ${n}.boneTexture,
1131
+ ${a}.index, ${a}.center, ${a}.quaternion
1132
1132
  );
1133
1133
  }
1134
- `)}}).outputs.gsplat}function Go({splats:t,extents:A,stepSize:I=1,pointRadius:g=.01,pointShadowScale:B=2,opacity:i=1,color:e}){const s=new n.Vector3,E=new n.Vector3,a=new n.Quaternion(0,0,0,1);e==null&&(e=(o,r)=>o.set(.55+.45*Math.cos(r.x*1),.55+.45*Math.cos(r.y*1),.55+.45*Math.cos(r.z*1)));const C=new n.Color;for(let o=A.min.z;o<A.max.z+1e-6;o+=I)for(let r=A.min.y;r<A.max.y+1e-6;r+=I)for(let h=A.min.x;h<A.max.x+1e-6;h+=I){s.set(h,r,o);for(let c=0;c<2;++c)E.setScalar(g*(c?1:B)),c?typeof e=="function"?e(C,s):C.copy(e):C.setScalar(0),t.pushSplat(s,E,a,i,C)}}function So({splats:t,scale:A=.25,axisRadius:I=.0075,axisShadowScale:g=2,origins:B=[new n.Vector3]}){const i=new n.Vector3,e=new n.Vector3,Q=new n.Quaternion(0,0,0,1),s=new n.Color,E=1;for(const a of B)for(let C=0;C<3;++C){i.set(a.x+(C===0?A:0),a.y+(C===1?A:0),a.z+(C===2?A:0));for(let o=0;o<2;++o)e.set((C===0?A:I)*(o?1:g),(C===1?A:I)*(o?1:g),(C===2?A:I)*(o?1:g)),s.setRGB(o===0?0:C===0?1:0,o===0?0:C===1?1:0,o===0?0:C===2?1:0),t.pushSplat(i,e,Q,E,s)}}function No({splats:t,origin:A=new n.Vector3,radius:I=1,maxDepth:g=3,filter:B=null,pointRadius:i=.02,pointThickness:e=.001,color:Q=new n.Color(1,1,1)}){const s={};function E(c){if(B&&!B(c))return;const l=`${c.x},${c.y},${c.z}`;s[l]||(s[l]=c)}function a(c,l,u,D){if(E(l),E(u),E(D),c>=g)return;const y=new n.Vector3().addVectors(l,u).normalize(),d=new n.Vector3().addVectors(u,D).normalize(),w=new n.Vector3().addVectors(D,l).normalize();a(c+1,l,y,w),a(c+1,y,u,d),a(c+1,w,d,D),a(c+1,y,d,w)}for(const c of[-1,1])for(const l of[-1,1])for(const u of[-1,1]){const D=new n.Vector3(c,0,0),y=new n.Vector3(0,l,0),d=new n.Vector3(0,0,u);a(0,D,y,d)}const C=Object.values(s),o=new n.Vector3(i,i,e),r=new n.Quaternion,h=typeof Q=="function"?new n.Color:Q;for(const c of C)r.setFromUnitVectors(new n.Vector3(0,0,-1),c),typeof Q=="function"&&Q(h,c),c.multiplyScalar(I),c.add(A),t.pushSplat(c,o,r,1,h)}function mo({text:t,font:A,fontSize:I,color:g,rgb:B,dotRadius:i,textAlign:e,lineHeight:Q,objectScale:s}){A=A??"Arial",I=I??32,g=g??new n.Color(1,1,1),i=i??.8,e=e??"start",Q=Q??1,s=s??1;const E=t.split(`
1135
- `),a=document.createElement("canvas"),C=a.getContext("2d");if(!C)throw new Error("Failed to create canvas context");C.font=`${I}px ${A}`,C.textAlign=e;const o=C.measureText(""),r=o.fontBoundingBoxAscent+o.fontBoundingBoxDescent;let h=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let M=0;M<E.length;++M){const k=C.measureText(E[M]),U=r*Q*M;h=Math.min(h,-k.actualBoundingBoxLeft),c=Math.max(c,k.actualBoundingBoxRight),l=Math.min(l,U-k.actualBoundingBoxAscent),u=Math.max(u,U+k.actualBoundingBoxDescent)}const D=Math.floor(h),y=Math.floor(l),d=Math.ceil(c)-D,w=Math.ceil(u)-y;a.width=d,a.height=w,C.font=`${I}px ${A}`,C.textAlign=e,C.textBaseline="alphabetic",C.fillStyle="#FFFFFF";for(let M=0;M<E.length;++M){const k=r*Q*M-y;C.fillText(E[M],-D,k)}const F=C.getImageData(0,0,d,w),m=new Uint8Array(F.data.buffer),f=new HA,p=new n.Vector3,x=new n.Vector3().setScalar(i*s),S=new n.Quaternion(0,0,0,1);B=B??new n.Color(1,1,1);let G=0;for(let M=0;M<w;++M)for(let k=0;k<d;++k){const U=m[G+3];if(U>0){const J=U/255;p.set(k-.5*(d-1),.5*(w-1)-M,0),p.multiplyScalar(s),f.pushSplat(p,x,S,J,B)}G+=4}const Y=new qA({packedSplats:f});return Y.recolor=g,Y}function Mo({url:t,dotRadius:A,subXY:I,forEachSplat:g}){return A=A??.8,I=Math.max(1,Math.floor(I??1)),new qA({constructSplats:async B=>new Promise((i,e)=>{const Q=new Image;Q.crossOrigin="anonymous",Q.onerror=e,Q.onload=()=>{const{width:s,height:E}=Q,a=document.createElement("canvas");a.width=s,a.height=E;const C=a.getContext("2d");if(!C){e(new Error("Failed to create canvas context"));return}C.imageSmoothingEnabled=!0,C.imageSmoothingQuality="high";const o=Math.round(s/I),r=Math.round(E/I);C.drawImage(Q,0,0,o,r);try{const h=C.getImageData(0,0,o,r),c=new Uint8Array(h.data.buffer),l=new n.Vector3,u=new n.Vector3().setScalar(A),D=new n.Quaternion(0,0,0,1),y=new n.Color;let d=0;for(let w=0;w<r;++w)for(let F=0;F<o;++F){const m=d*4,f=c[m+3];if(f>0){let p=f/255;y.set(c[m+0]/255,c[m+1]/255,c[m+2]/255),l.set(F-.5*(o-1),.5*(r-1)-w,0),u.setScalar(A),D.set(0,0,0,1);let x=!0;if(g){const S=g(o,r,d,l,u,D,p,y);p=S??p,x=S!==null}x&&B.pushSplat(l,u,D,p,y)}d+=1}i()}catch(h){e(h)}},Q.src=t})})}function ko({box:t,cells:A,dotScale:I,color:g,opacity:B}){A.x=Math.max(1,Math.round(A.x)),A.y=Math.max(1,Math.round(A.y)),A.z=Math.max(1,Math.round(A.z)),B=B??1;const i=A.x*A.y*A.z,e=q("int",A.x),Q=q("int",A.y);q("int",A.z);const s=bA(0),E=new $t({numSplats:i,generator:kA({index:"int"},{gsplat:_},({index:C})=>{if(!C)throw new Error("index is undefined");const o=UI(C,e),r=eI(C,e),h=UI(r,Q),c=eI(r,Q),l=KA({vectorType:"ivec3",x:o,y:h,z:c}),u=qi(s),D=KA({vectorType:"ivec2",x:C,y:u}),y=We(D),d=q("vec3",t.min),w=q("vec3",t.max),F=Gt(w,d),m=eI(fA(ot(l),y),q("vec3",A));let f,p,x;g?(f=q("float",g.r),p=q("float",g.g),x=q("float",g.b)):{r:f,g:p,b:x}=ft(m).outputs;const S=KA({vectorType:"vec4",r:f,g:p,b:x,a:q("float",B)}),G=fA(d,oA(F,m)),Y=ot(q("float",I)),M=q("vec4",new n.Quaternion(0,0,0,1));let k=Bt({flags:CI("uint","GSPLAT_FLAG_ACTIVE"),index:C,center:G,scales:Y,quaternion:M,rgba:S});return k=a.applyGsplat(k),{gsplat:k}},{globals:()=>[MA]}),update:({time:C})=>{s.value=C,a.update(E),E.updateVersion()}}),a=new Et;return E}const Ro={box:new n.Box3(new n.Vector3(-1,-1,-1),new n.Vector3(1,1,1)),density:100,fallDirection:new n.Vector3(-1,-3,1).normalize(),fallVelocity:.02,wanderScale:.04,wanderVariance:2,color1:new n.Color(1,1,1),color2:new n.Color(.5,.5,1),minScale:.001,maxScale:.005,anisoScale:new n.Vector3(1,1,1)},xo={box:new n.Box3(new n.Vector3(-2,-1,-2),new n.Vector3(2,5,2)),density:10,fallDirection:new n.Vector3(0,-1,0),fallVelocity:2,wanderScale:.1,wanderVariance:1,color1:new n.Color(1,1,1),color2:new n.Color(.25,.25,.5),minScale:.005,maxScale:.01,anisoScale:new n.Vector3(.1,1,.1)};function Uo({box:t,minY:A,numSplats:I,density:g,anisoScale:B,minScale:i,maxScale:e,fallDirection:Q,fallVelocity:s,wanderScale:E,wanderVariance:a,color1:C,color2:o,opacity:r,onFrame:h}){t=t??new n.Box3(new n.Vector3(-1,-1,-1),new n.Vector3(1,1,1));const c=(t.max.x-t.min.x)*(t.max.y-t.min.y)*(t.max.z-t.min.z);g=g??100,I=I??Math.max(1,Math.min(1e6,Math.round(c*g)));const l=bA(i??.001),u=bA(e??.005),D=$A(((B==null?void 0:B.clone())??new n.Vector3(1,1,1)).normalize()),y=$A((Q??new n.Vector3(0,-1,0)).normalize()),d=bA(s??.02),w=bA(E??.01),F=bA(a??2),m=$A(C??new n.Color(1,1,1)),f=$A(o??new n.Color(.5,.5,1)),p=bA(r??1),x=bA(0),S=$A(new n.Vector3(0,0,0)),G=$A(t.min),Y=$A(t.max),M=bA(A??Number.NEGATIVE_INFINITY),k=Gt(Y,G),U=new $t({numSplats:I,generator:kA({index:"int"},{gsplat:_},({index:AA})=>{if(!AA)throw new Error("index not defined");const Z=YI(AA),gA=ft(Z).outputs.w;let tA=ot(Z),V=QI(oA(gA,q("float",100)));V=LI(oA(CI("float","PI"),V)),V=fA(l,oA(V,Gt(u,l)));const b=oA(V,D),P=QI(oA(gA,q("float",10))),O=QI(gA),X=zB(m,f,O),L=oA(X,P),wA=YI(KA({vectorType:"ivec2",x:AA,y:q("int",6837)}));let EA=ot(wA),dA=oA(ft(wA).outputs.w,F);dA=fA(x,dA),tA=fA(tA,S);const pA=vB(tA,q("vec3",new n.Vector3(1,1,1)));tA=fA(G,oA(k,pA));const GA=q("vec4",new n.Quaternion(0,0,0,1));EA=LI(fA(ot(dA),EA)),EA=oA(EA,w);let cA=fA(tA,EA),LA=ft(cA).outputs.y;LA=ZB(M,LA),cA=KA({vector:cA,y:LA});let SA=Bt({flags:CI("uint","GSPLAT_FLAG_ACTIVE"),index:AA,center:cA,scales:b,quaternion:GA,rgb:L,opacity:p});return SA=J.applyGsplat(SA),{gsplat:SA}},{globals:()=>[MA]}),update:({object:AA,time:Z,deltaTime:gA})=>{x.value=Z,J.update(U);const tA=y.value.clone().multiplyScalar(d.value*gA);S.value.add(tA),AA.visible=p.value>0,h==null||h({object:AA,time:Z,deltaTime:gA}),U.updateVersion()}}),J=new Et;return{snow:U,min:G,max:Y,minY:M,color1:m,color2:f,opacity:p,fallVelocity:d,wanderVariance:F,wanderScale:w,fallDirection:y,minScale:l,maxScale:u,anisoScale:D}}const Yo=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_RAIN:xo,DEFAULT_SNOW:Ro,snowBox:Uo,staticBox:ko},Symbol.toStringTag,{value:"Module"}));function $Q(t){return kA({gsplat:_},{gsplat:_},({gsplat:A})=>{if(!A)throw new Error("No gsplat input");let I=RI(A);const g=t.applyGsplat(A),B=at(g).outputs.center,i=RI(g),e=we(B,i),Q=pi(e,q("float",0));I=PI(Q,VI(I),I);const s=fA(oA(I,q("float",.5)),q("float",.5));return A=Bt({gsplat:A,rgb:s}),{gsplat:A}})}function Lo(t){t.enableWorldToView=!0,t.worldModifier=$Q(t.context.worldToView),t.updateGenerator()}function As(t,A,I,g){return kA({gsplat:_},{gsplat:_},({gsplat:B})=>{if(!B)throw new Error("No gsplat input");let{center:i}=at(B).outputs;i=t.apply(i);const{z:e}=ft(i).outputs;let Q=Oe(VI(e),A,I);return Q=PI(g,Gt(q("float",1),Q),Q),B=Bt({gsplat:B,r:Q,g:Q,b:Q}),{gsplat:B}})}function Jo(t,A,I,g){t.enableWorldToView=!0;const B=q("float",A),i=q("float",I),e=q("bool",g??!1);return t.worldModifier=As(t.context.worldToView,B,i,e),t.updateGenerator(),{minDepth:B,maxDepth:i,reverse:e}}const Ho=Object.freeze(Object.defineProperty({__proto__:null,makeDepthColorModifier:As,makeNormalColorModifier:$Q,setDepthColor:Jo,setWorldNormalColor:Lo},Symbol.toStringTag,{value:"Module"})),Ht=class Ht{static createButton(A,I={}){const g=navigator.xr;if(!g)return null;const B=g,i=document.createElement("button");A.xr.enabled=!0,A.xr.setReferenceSpaceType("local");function e(){let C=null;async function o(c){console.log("onSessionStarted"),c.addEventListener("end",r),await A.xr.setSession(c),i.textContent="EXIT VR",C=c}function r(){console.log("onSessionEnded"),C==null||C.removeEventListener("end",r),i.textContent="ENTER VR",C=null}i.style.display="",i.style.cursor="pointer",i.style.left="calc(50% - 100px)",i.style.width="200px",i.style.height="100px",i.textContent="ENTER VR";const h={...I,optionalFeatures:[...I.optionalFeatures||[]]};i.onmouseenter=()=>{i.style.opacity="1.0"},i.onmouseleave=()=>{i.style.opacity="0.5"},i.onclick=()=>{C===null?(console.log("requesting session"),B.requestSession("immersive-vr",h).then(o)):(console.log("ending session"),C.end())}}function Q(){i.style.display="none",i.style.cursor="auto",i.style.left="calc(50% - 75px)",i.style.width="150px",i.onmouseenter=null,i.onmouseleave=null,i.onclick=null}function s(){Q(),i.textContent="VR NOT SUPPORTED"}function E(C){Q(),console.warn("Exception when trying to call xr.isSessionSupported",C),i.textContent="VR NOT ALLOWED"}function a(C){C.style.position="absolute",C.style.bottom="20px",C.style.padding="12px 6px",C.style.border="1px solid #fff",C.style.borderRadius="4px",C.style.background="rgba(0,0,0,0.1)",C.style.color="#fff",C.style.font="normal 13px sans-serif",C.style.textAlign="center",C.style.opacity="0.5",C.style.outline="none",C.style.zIndex="999"}return i.id="VRButton",i.style.display="none",a(i),B.isSessionSupported("immersive-vr").then(C=>{C?e():s(),C&&Ht.xrSessionIsGranted&&i.click()}).catch(E),i}static registerSessionGrantedListener(){const A=navigator.xr;if(!A)return null;const I=A;/WebXRViewer\//i.test(navigator.userAgent)||I.addEventListener("sessiongranted",()=>{Ht.xrSessionIsGranted=!0})}};Ht.xrSessionIsGranted=!1;let cI=Ht;cI.registerSessionGrantedListener();const bo=.5,To=.5,Ko=0;var wI=(t=>(t.w="wrist",t.t0="thumb-metacarpal",t.t1="thumb-phalanx-proximal",t.t2="thumb-phalanx-distal",t.t3="thumb-tip",t.i0="index-finger-metacarpal",t.i1="index-finger-phalanx-proximal",t.i2="index-finger-phalanx-intermediate",t.i3="index-finger-phalanx-distal",t.i4="index-finger-tip",t.m0="middle-finger-metacarpal",t.m1="middle-finger-phalanx-proximal",t.m2="middle-finger-phalanx-intermediate",t.m3="middle-finger-phalanx-distal",t.m4="middle-finger-tip",t.r0="ring-finger-metacarpal",t.r1="ring-finger-phalanx-proximal",t.r2="ring-finger-phalanx-intermediate",t.r3="ring-finger-phalanx-distal",t.r4="ring-finger-tip",t.p0="pinky-finger-metacarpal",t.p1="pinky-finger-phalanx-proximal",t.p2="pinky-finger-phalanx-intermediate",t.p3="pinky-finger-phalanx-distal",t.p4="pinky-finger-tip",t))(wI||{});const $I=Object.keys(wI),qo=$I.length,vo={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},Ut={w:.02,t0:.02,t1:.014,t2:.0115,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},ts=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],Is=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],Zo=["t3","i4","m4","r4","p4"],zo=["i4","m4","r4","p4"];var Ag=(t=>(t.left="left",t.right="right",t))(Ag||{});const hI=Object.keys(Ag);class Wo{constructor(){this.hands={},this.last={},this.values={},this.tests={},this.lastTests={},this.updated=!1}update({xr:A,xrFrame:I}){const g=A.getSession();if(!g)return;const B=A.getReferenceSpace();if(B&&I.getJointPose){this.last=this.hands,this.lastTests=this.tests,this.hands={},this.values={},this.tests={};for(const i of g.inputSources){if(!i.hand)continue;const e=i.handedness;this.hands[e]={};for(const Q of $I){const s=i.hand.get(wI[Q]);if(s){const E=I.getJointPose(s,B);if(E){const{position:a,orientation:C}=E.transform;this.hands[e][Q]={position:new iA.Vector3(a.x,a.y,a.z),quaternion:new iA.Quaternion(C.x,C.y,C.z,C.w),radius:E.radius||.001}}}}}for(const i of hI)for(const{key:e,value:Q}of[{key:`${i}AllTips`,value:this.allTipsTouching(i)},{key:`${i}IndexThumb`,value:this.touching(i,"i4",i,"t3")},{key:`${i}MiddleThumb`,value:this.touching(i,"m4",i,"t3")},{key:`${i}RingThumb`,value:this.touching(i,"r4",i,"t3")},{key:`${i}PinkyThumb`,value:this.touching(i,"p4",i,"t3")},{key:`${i}TriTips`,value:this.triTipsTouching(i)}])this.values[e]=Q,this.tests[e]=Q===1?!0:Q===0?!1:this.lastTests[e]??!1}}makeGhostMesh(){const A=new iA.Vector3,I=new iA.Vector3(.01,.01,.01),g=new iA.Quaternion(0,0,0,1),B=new iA.Color(1,1,1),i=Math.PI*3;new iA.Color(1,1,1);let e=1;const Q=new qA({onFrame:()=>{let s=0;for(const E of hI){const a=this.hands[E];for(const[C,o]of ts.entries())for(let r=1;r<o.length;++r){const h=Is[C][r-1]*2,c=r+1===o.length,l=a==null?void 0:a[o[r-1]],u=a==null?void 0:a[o[r]];for(let D=0;D<h;++D){const y=(D+.5)/h;if(e=0,l&&u){A.copy(l.position).lerp(u.position,y),g.copy(l.quaternion).slerp(u.quaternion,y);const d=Ut[o[r-1]],w=Ut[o[r]];let F=(1-y)*d+y*w;c&&y>.8&&(F*=Math.sqrt(1-((y-.8)/.2)**2)),I.set(.65*F,.5*F,.003),B.set(.55+.45*Math.sin(A.x*i),.55+.45*Math.sin(A.y*i),.55+.45*Math.sin(A.z*i)),E==="right"&&B.set(1-B.r,1-B.g,1-B.b),e=.75}Q.packedSplats.setSplat(s,A,I,g,e,B),s+=1}}}Q.packedSplats.numSplats=s,Q.packedSplats.needsUpdate=!0,Q.numSplats=s,Q.updateVersion()}});return Q}distance(A,I,g,B,i=!1){const e=i?this.last[A]:this.hands[A],Q=i?this.last[g]:this.hands[g],s=e==null?void 0:e[I],E=Q==null?void 0:Q[B];return!s||!E?Number.POSITIVE_INFINITY:s.position.distanceTo(E.position)}separation(A,I,g,B,i=!1){const e=this.distance(A,I,g,B,i);return e===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:e-Ut[I]-Ut[B]}touching(A,I,g,B,i=!1){const e=this.separation(A,I,g,B,i);return e===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:1-Math.max(0,Math.min(1,e/.01-Ko))}allTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"r4",I),this.touching(A,"r4",A,"p4",I))}triTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"t3",I))}}class Oo{constructor({xrHands:A,control:I,moveInertia:g,rotateInertia:B}){this.lastGrip={},this.lastPivot=new iA.Vector3,this.rotateVelocity=0,this.velocity=new iA.Vector3,this.xrHands=A,this.control=I,this.moveInertia=g??bo,this.rotateInertia=B??To}update(A){var i,e,Q,s,E;const I={};for(const a of hI){const C=this.xrHands.hands[a];C&&this.xrHands.tests[`${a}MiddleThumb`]&&(I[a]=new iA.Vector3().add(((i=C.t3)==null?void 0:i.position)??new iA.Vector3).add(((e=C.i4)==null?void 0:e.position)??new iA.Vector3).add(((Q=C.m4)==null?void 0:Q.position)??new iA.Vector3).add(((s=C.r4)==null?void 0:s.position)??new iA.Vector3).add(((E=C.p4)==null?void 0:E.position)??new iA.Vector3).multiplyScalar(1/5))}if(I.left&&I.right&&this.lastGrip.left&&this.lastGrip.right){const a=I.left.clone().add(I.right).multiplyScalar(.5),C=this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(.5);this.lastPivot=a;const o=a.clone().applyMatrix4(this.control.matrix);o.sub(C.clone().applyMatrix4(this.control.matrix)),o.multiplyScalar(1/A),this.velocity.lerp(o,1-Math.exp(-20*A));const r=Math.atan2(I.left.z-a.z,I.left.x-a.x),h=Math.atan2(this.lastGrip.left.z-C.z,this.lastGrip.left.x-C.x);let c=r-h;c>Math.PI?c-=Math.PI*2:c<-Math.PI&&(c+=Math.PI*2);const l=c/A,u=Math.exp(-20*A);this.rotateVelocity=this.rotateVelocity*u+l*(1-u)}else if(this.rotateVelocity*=Math.exp(-A/this.rotateInertia),I.left&&this.lastGrip.left){const a=I.left.clone().applyMatrix4(this.control.matrix);a.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)),a.multiplyScalar(1/A),this.velocity.lerp(a,1-Math.exp(-20*A))}else if(I.right&&this.lastGrip.right){const a=I.right.clone().applyMatrix4(this.control.matrix);a.sub(this.lastGrip.right.clone().applyMatrix4(this.control.matrix)),a.multiplyScalar(1/A),this.velocity.lerp(a,1-Math.exp(-20*A))}else this.velocity.multiplyScalar(Math.exp(-A/this.moveInertia));const g=this.lastPivot.clone().negate(),B=new iA.Matrix4().makeTranslation(g).premultiply(new iA.Matrix4().makeRotationY(this.rotateVelocity*A)).premultiply(new iA.Matrix4().makeTranslation(this.lastPivot));this.control.matrix.multiply(B),this.control.matrix.decompose(this.control.position,this.control.quaternion,this.control.scale),this.control.updateMatrixWorld(!0),this.control.position.sub(this.velocity.clone().multiplyScalar(A)),this.lastGrip=I}}const Vo=1,Po=2,Xo=.002,jo=.006,_o=.0015,$o=.15,Ar=.15,tr=.1,Ir=2,gr=1,Br=200,ir=400,er=50,Qr={KeyW:new n.Vector3(0,0,-1),KeyS:new n.Vector3(0,0,1),KeyA:new n.Vector3(-1,0,0),KeyD:new n.Vector3(1,0,0),KeyR:new n.Vector3(0,1,0),KeyF:new n.Vector3(0,-1,0)},sr={ArrowUp:new n.Vector3(0,0,-1),ArrowDown:new n.Vector3(0,0,1),ArrowLeft:new n.Vector3(-1,0,0),ArrowRight:new n.Vector3(1,0,0),PageUp:new n.Vector3(0,1,0),PageDown:new n.Vector3(0,-1,0)},Cr={KeyQ:new n.Vector3(0,0,1),KeyE:new n.Vector3(0,0,-1)},Er={Home:new n.Vector3(0,-1,0),End:new n.Vector3(0,1,0),Insert:new n.Vector3(-1,0,0),Delete:new n.Vector3(1,0,0)};class ar{constructor({canvas:A}){this.lastTime=0,this.fpsMovement=new gs({}),this.pointerControls=new Bs({canvas:A})}update(A){const I=performance.now(),g=(I-(this.lastTime||I))/1e3;this.lastTime=I,this.fpsMovement.update(g,A),this.pointerControls.update(g,A)}}class gs{constructor({moveSpeed:A,rollSpeed:I,stickThreshold:g,rotateSpeed:B,keycodeMoveMapping:i,keycodeRotateMapping:e,gamepadMapping:Q,capsMultiplier:s,shiftMultiplier:E,ctrlMultiplier:a,xr:C}={}){this.enable=!0,this.moveSpeed=A??Vo,this.rollSpeed=I??Po,this.stickThreshold=g??tr,this.rotateSpeed=B??Ir,this.keycodeMoveMapping=i??{...Qr,...sr},this.keycodeRotateMapping=e??{...Cr,...Er},this.gamepadMapping=Q??{4:"rollLeft",5:"rollRight",6:"ctrl",7:"shift"},this.capsMultiplier=s??10,this.shiftMultiplier=E??5,this.ctrlMultiplier=a??1/5,this.xr=C,this.keydown={},this.keycode={},document.addEventListener("keydown",o=>{this.keydown[o.key]=!0,this.keycode[o.code]=!0}),document.addEventListener("keyup",o=>{this.keydown[o.key]=!1,this.keycode[o.code]=!1}),window.addEventListener("blur",()=>{this.keydown={},this.keycode={}})}update(A,I){var a,C;if(!this.enable)return;const g=[new n.Vector2,new n.Vector2],B=navigator.getGamepads()[0];B&&(g[0].set(B.axes[0],B.axes[1]),g[1].set(B.axes[2],B.axes[3]));const i=(B==null?void 0:B.buttons.map(o=>o.pressed))||[],e=Array.from(((C=(a=this.xr)==null?void 0:a.getSession())==null?void 0:C.inputSources)??[]);for(const o of e){const r=o.gamepad;if(r)switch(o.handedness){case"none":{g[0].x+=r.axes[0],g[0].y+=r.axes[1],g[1].x+=r.axes[2],g[1].y+=r.axes[3];break}case"left":{g[0].x+=r.axes[2],g[0].y+=r.axes[3];break}case"right":{g[1].x+=r.axes[2],g[1].y+=r.axes[3];break}}}for(const o of g)o.x=Math.abs(o.x)>=this.stickThreshold?o.x:0,o.y=Math.abs(o.y)>=this.stickThreshold?o.y:0;const Q=new n.Vector3(g[1].x,g[1].y,0).multiplyScalar(this.rotateSpeed);for(const[o,r]of Object.entries(this.keycodeRotateMapping))this.keycode[o]&&Q.add(r);for(const o in this.gamepadMapping)if(i[Number.parseInt(o)])switch(this.gamepadMapping[o]){case"rollLeft":Q.z+=1;break;case"rollRight":Q.z-=1;break}if(Q.multiply(new n.Vector3(this.rotateSpeed,this.rotateSpeed,this.rollSpeed)),Q.manhattanLength()>0){Q.multiplyScalar(A);const o=new n.Euler().setFromQuaternion(I.quaternion,"YXZ");o.y-=Q.x,o.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,o.x-Q.y)),o.z=Math.max(-Math.PI,Math.min(Math.PI,o.z+Q.z)),I.quaternion.setFromEuler(o)}const s=new n.Vector3(g[0].x,0,g[0].y);for(const[o,r]of Object.entries(this.keycodeMoveMapping))this.keycode[o]&&s.add(r);let E=1;this.keydown.CapsLock&&(E*=this.capsMultiplier),(this.keycode.ShiftLeft||this.keycode.ShiftRight)&&(E*=this.shiftMultiplier),(this.keycode.ControlLeft||this.keycode.ControlRight)&&(E*=this.ctrlMultiplier);for(const o in this.gamepadMapping)if(i[Number.parseInt(o)])switch(this.gamepadMapping[o]){case"shift":E*=this.shiftMultiplier;break;case"ctrl":E*=this.ctrlMultiplier;break}s.applyQuaternion(I.quaternion),I.position.add(s.multiplyScalar(this.moveSpeed*E*A))}}class Bs{constructor({canvas:A,rotateSpeed:I,slideSpeed:g,scrollSpeed:B,swapRotateSlide:i,reverseRotate:e,reverseSlide:Q,reverseSwipe:s,reverseScroll:E,moveInertia:a,rotateInertia:C,pointerRollScale:o,doublePress:r}){this.enable=!0,this.canvas=A,this.rotateSpeed=I??Xo,this.slideSpeed=g??jo,this.scrollSpeed=B??_o,this.swapRotateSlide=i??!1,this.reverseRotate=e??!1,this.reverseSlide=Q??!1,this.reverseSwipe=s??!1,this.reverseScroll=E??!1,this.moveInertia=a??Ar,this.rotateInertia=C??$o,this.pointerRollScale=o??gr,this.doublePress=r??(()=>{}),this.doublePressLimitMs=ir,this.doublePressDistance=er,this.lastUp=null,this.rotating=null,this.sliding=null,this.dualPress=!1,this.scroll=new n.Vector3,this.rotateVelocity=new n.Vector3,this.moveVelocity=new n.Vector3,A.addEventListener("pointerdown",c=>{const l=this.getPointerPosition(c),u=l.clone(),D=l.clone(),y=!this.swapRotateSlide&&!this.rotating&&(c.pointerType!=="mouse"||c.button===0)||this.swapRotateSlide&&this.sliding&&!this.rotating&&(c.pointerType!=="mouse"||c.button===1),{pointerId:d,timeStamp:w}=c;if(y)this.rotating={initial:u,last:D,position:l,pointerId:d,timeStamp:w},A.setPointerCapture(c.pointerId),this.dualPress=!1;else if(!this.sliding){const F=c.pointerType==="mouse"?c.button:void 0;this.sliding={initial:u,last:D,position:l,pointerId:d,button:F,timeStamp:w},A.setPointerCapture(c.pointerId),this.dualPress=this.rotating!=null&&w-this.rotating.timeStamp<Br}});const h=c=>{var D,y;((D=this.rotating)==null?void 0:D.pointerId)===c.pointerId?(this.rotating=null,A.releasePointerCapture(c.pointerId),this.dualPress&&this.sliding&&(A.releasePointerCapture(this.sliding.pointerId),this.sliding=null)):((y=this.sliding)==null?void 0:y.pointerId)===c.pointerId&&(this.sliding=null,A.releasePointerCapture(c.pointerId),this.dualPress&&this.rotating&&(A.releasePointerCapture(this.rotating.pointerId),this.rotating=null));const l=this.getPointerPosition(c),u=this.lastUp;if(this.lastUp={position:l,time:c.timeStamp},u&&u.position.distanceTo(l)<this.doublePressDistance){const w=c.timeStamp-u.time;w<this.doublePressLimitMs&&(this.lastUp=null,this.doublePress({position:l,intervalMs:w}))}};document.addEventListener("pointerup",h),document.addEventListener("pointercancel",h),document.addEventListener("pointermove",c=>{var l,u;((l=this.rotating)==null?void 0:l.pointerId)===c.pointerId?this.rotating.position=this.getPointerPosition(c):((u=this.sliding)==null?void 0:u.pointerId)===c.pointerId&&(this.sliding.position=this.getPointerPosition(c))}),A.addEventListener("contextmenu",c=>{c.preventDefault()}),A.addEventListener("wheel",c=>{this.scroll.add(new n.Vector3(c.deltaX,c.deltaY,c.deltaZ)),c.preventDefault()})}getPointerPosition(A){const I=this.canvas.getBoundingClientRect();return new n.Vector2(A.clientX-I.left,A.clientY-I.top)}update(A,I){if(!this.enable)return;if(this.dualPress&&this.rotating&&this.sliding){const B=[this.rotating.position.clone().sub(this.rotating.last),this.sliding.position.clone().sub(this.sliding.last)],i=B[0].dot(B[1]);if(i>=.2){const e=B[0].clone().add(B[1]),Q=new n.Vector3(e.x,-e.y,0);Q.multiplyScalar(this.slideSpeed*(this.reverseSwipe?1:-1)),Q.applyQuaternion(I.quaternion),I.position.add(Q),this.moveVelocity=Q.clone().multiplyScalar(1/A)}else if(i<=-.2){const e=this.sliding.last.clone().sub(this.rotating.last),Q=e.length();e.multiplyScalar(1/Q).normalize();const s=new n.Vector2(-e.y,e.x),E=[B[0].dot(e),B[1].dot(e)],a=[B[0].dot(s),B[1].dot(s)],C=this.rotating.last.clone().add(this.sliding.last).multiplyScalar(.5);let o=new n.Vector3;if(I instanceof n.Camera){const D=new n.Vector2(C.x/this.canvas.clientWidth*2-1,-(C.y/this.canvas.clientHeight)*2+1),y=new n.Raycaster;y.setFromCamera(D,I),o=y.ray.direction}const r=E[1]-E[0],h=o.multiplyScalar(r*this.slideSpeed);I.position.add(h),this.moveVelocity=h.clone().multiplyScalar(1/A);const c=[Math.atan(a[0]/(-.5*Q)),Math.atan(a[1]/(.5*Q))],l=.5*(c[0]+c[1])*this.pointerRollScale,u=new n.Euler().setFromQuaternion(I.quaternion,"YXZ");u.z=Math.max(-Math.PI,Math.min(Math.PI,u.z+.5*l)),I.quaternion.setFromEuler(u)}this.rotating.last.copy(this.rotating.position),this.sliding.last.copy(this.sliding.position)}else{const B=new n.Vector3;if(this.rotating&&!this.dualPress){const e=this.rotating.position.clone().sub(this.rotating.last);this.rotating.last.copy(this.rotating.position),B.set(e.x,e.y,0),B.multiplyScalar(this.rotateSpeed*(this.reverseRotate?-1:1)),this.rotateVelocity=B.clone().multiplyScalar(1/A)}else this.rotateVelocity.multiplyScalar(Math.exp(-A/this.rotateInertia)),B.addScaledVector(this.rotateVelocity,A);const i=new n.Euler().setFromQuaternion(I.quaternion,"YXZ");if(i.y-=B.x,i.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,i.x-B.y)),i.z*=Math.exp(-0*A),I.quaternion.setFromEuler(i),this.sliding&&!this.dualPress){const e=this.sliding.position.clone().sub(this.sliding.last);this.sliding.last.copy(this.sliding.position);const Q=this.sliding.button!==2?new n.Vector3(e.x,0,e.y):new n.Vector3(e.x,-e.y,0);Q.multiplyScalar(this.slideSpeed*(this.reverseSlide?-1:1)),Q.applyQuaternion(I.quaternion),I.position.add(Q),this.moveVelocity=Q.clone().multiplyScalar(1/A)}else this.moveVelocity.multiplyScalar(Math.exp(-A/this.moveInertia)),I.position.addScaledVector(this.moveVelocity,A)}const g=this.scroll.multiplyScalar(this.scrollSpeed);g.set(g.x,g.z,g.y),this.reverseScroll&&g.multiplyScalar(-1),g.applyQuaternion(I.quaternion),I.position.add(g),this.scroll.set(0,0,0)}}exports.FINGER_TIPS=zo;exports.FpsMovement=gs;exports.HANDS=hI;exports.Hand=Ag;exports.HandMovement=Oo;exports.JOINT_IDS=$I;exports.JOINT_INDEX=vo;exports.JOINT_RADIUS=Ut;exports.JOINT_SEGMENTS=ts;exports.JOINT_SEGMENT_STEPS=Is;exports.JOINT_TIPS=Zo;exports.JointEnum=wI;exports.NUM_JOINTS=qo;exports.PackedSplats=HA;exports.PlyReader=vt;exports.PointerControls=Bs;exports.Readback=Kt;exports.Sint8ToFloat=fB;exports.SparkControls=ar;exports.SparkRenderer=zt;exports.SparkViewpoint=Zt;exports.SplatAccumulator=sI;exports.SplatEdit=qt;exports.SplatEditRgbaBlendMode=RQ;exports.SplatEditSdf=xQ;exports.SplatEditSdfType=kQ;exports.SplatEdits=UQ;exports.SplatFileType=wt;exports.SplatGenerator=$t;exports.SplatLoader=vQ;exports.SplatMesh=qA;exports.SplatModifier=HQ;exports.SplatSkinning=po;exports.SplatTransformer=Et;exports.SpzReader=VQ;exports.SpzWriter=WA;exports.Uint8ToFloat=pB;exports.VRButton=cI;exports.XrHands=Wo;exports.constructAxes=So;exports.constructGrid=Go;exports.constructSpherePoints=No;exports.dyno=Jn;exports.flipPixels=MB;exports.floatToSint8=Jt;exports.floatToUint8=mA;exports.fromHalf=yA;exports.generators=Yo;exports.getSplatFileType=XI;exports.imageSplats=Mo;exports.isAndroid=NB;exports.isMobile=SB;exports.isOculus=mB;exports.isPcSogs=Io;exports.modifiers=Ho;exports.pixelsToPngUrl=kB;exports.setPackedSplat=aI;exports.textSplats=mo;exports.toHalf=it;exports.transcodeSpz=wo;exports.unpackSplat=nI;exports.unpackSplats=jI;exports.utils=QE;
1134
+ `)}}).outputs.gsplat}function TC({splats:t,extents:A,stepSize:e=1,pointRadius:s=.01,pointShadowScale:i=2,opacity:n=1,color:a}){const g=new B.Vector3,I=new B.Vector3,Q=new B.Quaternion(0,0,0,1);a==null&&(a=(C,E)=>C.set(.55+.45*Math.cos(E.x*1),.55+.45*Math.cos(E.y*1),.55+.45*Math.cos(E.z*1)));const o=new B.Color;for(let C=A.min.z;C<A.max.z+1e-6;C+=e)for(let E=A.min.y;E<A.max.y+1e-6;E+=e)for(let l=A.min.x;l<A.max.x+1e-6;l+=e){g.set(l,E,C);for(let c=0;c<2;++c)I.setScalar(s*(c?1:i)),c?typeof a=="function"?a(o,g):o.copy(a):o.setScalar(0),t.pushSplat(g,I,Q,n,o)}}function HC({splats:t,scale:A=.25,axisRadius:e=.0075,axisShadowScale:s=2,origins:i=[new B.Vector3]}){const n=new B.Vector3,a=new B.Vector3,r=new B.Quaternion(0,0,0,1),g=new B.Color,I=1;for(const Q of i)for(let o=0;o<3;++o){n.set(Q.x+(o===0?A:0),Q.y+(o===1?A:0),Q.z+(o===2?A:0));for(let C=0;C<2;++C)a.set((o===0?A:e)*(C?1:s),(o===1?A:e)*(C?1:s),(o===2?A:e)*(C?1:s)),g.setRGB(C===0?0:o===0?1:0,C===0?0:o===1?1:0,C===0?0:o===2?1:0),t.pushSplat(n,a,r,I,g)}}function qC({splats:t,origin:A=new B.Vector3,radius:e=1,maxDepth:s=3,filter:i=null,pointRadius:n=.02,pointThickness:a=.001,color:r=new B.Color(1,1,1)}){const g={};function I(c){if(i&&!i(c))return;const h=`${c.x},${c.y},${c.z}`;g[h]||(g[h]=c)}function Q(c,h,u,p){if(I(h),I(u),I(p),c>=s)return;const d=new B.Vector3().addVectors(h,u).normalize(),y=new B.Vector3().addVectors(u,p).normalize(),D=new B.Vector3().addVectors(p,h).normalize();Q(c+1,h,d,D),Q(c+1,d,u,y),Q(c+1,D,y,p),Q(c+1,d,y,D)}for(const c of[-1,1])for(const h of[-1,1])for(const u of[-1,1]){const p=new B.Vector3(c,0,0),d=new B.Vector3(0,h,0),y=new B.Vector3(0,0,u);Q(0,p,d,y)}const o=Object.values(g),C=new B.Vector3(n,n,a),E=new B.Quaternion,l=typeof r=="function"?new B.Color:r;for(const c of o)E.setFromUnitVectors(new B.Vector3(0,0,-1),c),typeof r=="function"&&r(l,c),c.multiplyScalar(e),c.add(A),t.pushSplat(c,C,E,1,l)}function KC({text:t,font:A,fontSize:e,color:s,rgb:i,dotRadius:n,textAlign:a,lineHeight:r,objectScale:g}){A=A??"Arial",e=e??32,s=s??new B.Color(1,1,1),n=n??.8,a=a??"start",r=r??1,g=g??1;const I=t.split(`
1135
+ `),Q=document.createElement("canvas"),o=Q.getContext("2d");if(!o)throw new Error("Failed to create canvas context");o.font=`${e}px ${A}`,o.textAlign=a;const C=o.measureText(""),E=C.fontBoundingBoxAscent+C.fontBoundingBoxDescent;let l=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,h=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let N=0;N<I.length;++N){const k=o.measureText(I[N]),U=E*r*N;l=Math.min(l,-k.actualBoundingBoxLeft),c=Math.max(c,k.actualBoundingBoxRight),h=Math.min(h,U-k.actualBoundingBoxAscent),u=Math.max(u,U+k.actualBoundingBoxDescent)}const p=Math.floor(l),d=Math.floor(h),y=Math.ceil(c)-p,D=Math.ceil(u)-d;Q.width=y,Q.height=D,o.font=`${e}px ${A}`,o.textAlign=a,o.textBaseline="alphabetic",o.fillStyle="#FFFFFF";for(let N=0;N<I.length;++N){const k=E*r*N-d;o.fillText(I[N],-p,k)}const S=o.getImageData(0,0,y,D),m=new Uint8Array(S.data.buffer),f=new JA,w=new B.Vector3,R=new B.Vector3().setScalar(n*g),M=new B.Quaternion(0,0,0,1);i=i??new B.Color(1,1,1);let x=0;for(let N=0;N<D;++N)for(let k=0;k<y;++k){const U=m[x+3];if(U>0){const v=U/255;w.set(k-.5*(y-1),.5*(D-1)-N,0),w.multiplyScalar(g),f.pushSplat(w,R,M,v,i)}x+=4}const L=new zA({packedSplats:f});return L.recolor=s,L}function zC({url:t,dotRadius:A,subXY:e,forEachSplat:s}){return A=A??.8,e=Math.max(1,Math.floor(e??1)),new zA({constructSplats:async i=>new Promise((n,a)=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=a,r.onload=()=>{const{width:g,height:I}=r,Q=document.createElement("canvas");Q.width=g,Q.height=I;const o=Q.getContext("2d");if(!o){a(new Error("Failed to create canvas context"));return}o.imageSmoothingEnabled=!0,o.imageSmoothingQuality="high";const C=Math.round(g/e),E=Math.round(I/e);o.drawImage(r,0,0,C,E);try{const l=o.getImageData(0,0,C,E),c=new Uint8Array(l.data.buffer),h=new B.Vector3,u=new B.Vector3().setScalar(A),p=new B.Quaternion(0,0,0,1),d=new B.Color;let y=0;for(let D=0;D<E;++D)for(let S=0;S<C;++S){const m=y*4,f=c[m+3];if(f>0){let w=f/255;d.set(c[m+0]/255,c[m+1]/255,c[m+2]/255),h.set(S-.5*(C-1),.5*(E-1)-D,0),u.setScalar(A),p.set(0,0,0,1);let R=!0;if(s){const M=s(C,E,y,h,u,p,w,d);w=M??w,R=M!==null}R&&i.pushSplat(h,u,p,w,d)}y+=1}n()}catch(l){a(l)}},r.src=t})})}function _C({box:t,cells:A,dotScale:e,color:s,opacity:i}){A.x=Math.max(1,Math.round(A.x)),A.y=Math.max(1,Math.round(A.y)),A.z=Math.max(1,Math.round(A.z)),i=i??1;const n=A.x*A.y*A.z,a=q("int",A.x),r=q("int",A.y);q("int",A.z);const g=TA(0),I=new kt({numSplats:n,generator:GA({index:"int"},{gsplat:j},({index:o})=>{if(!o)throw new Error("index is undefined");const C=Je(o,a),E=oe(o,a),l=Je(E,r),c=oe(E,r),h=KA({vectorType:"ivec3",x:C,y:l,z:c}),u=Wn(g),p=KA({vectorType:"ivec2",x:o,y:u}),d=tr(p),y=q("vec3",t.min),D=q("vec3",t.max),S=Nt(D,y),m=oe(mA(ht(h),d),q("vec3",A));let f,w,R;s?(f=q("float",s.r),w=q("float",s.g),R=q("float",s.b)):{r:f,g:w,b:R}=Mt(m).outputs;const M=KA({vectorType:"vec4",r:f,g:w,b:R,a:q("float",i)}),x=mA(y,CA(S,m)),L=ht(q("float",e)),N=q("vec4",new B.Quaternion(0,0,0,1));let k=at({flags:Be("uint","GSPLAT_FLAG_ACTIVE"),index:o,center:x,scales:L,quaternion:N,rgba:M});return k=Q.applyGsplat(k),{gsplat:k}},{globals:()=>[kA]}),update:({time:o})=>{g.value=o,Q.update(I),I.updateVersion()}}),Q=new Ct;return I}const OC={box:new B.Box3(new B.Vector3(-1,-1,-1),new B.Vector3(1,1,1)),density:100,fallDirection:new B.Vector3(-1,-3,1).normalize(),fallVelocity:.02,wanderScale:.04,wanderVariance:2,color1:new B.Color(1,1,1),color2:new B.Color(.5,.5,1),minScale:.001,maxScale:.005,anisoScale:new B.Vector3(1,1,1)},PC={box:new B.Box3(new B.Vector3(-2,-1,-2),new B.Vector3(2,5,2)),density:10,fallDirection:new B.Vector3(0,-1,0),fallVelocity:2,wanderScale:.1,wanderVariance:1,color1:new B.Color(1,1,1),color2:new B.Color(.25,.25,.5),minScale:.005,maxScale:.01,anisoScale:new B.Vector3(.1,1,.1)};function VC({box:t,minY:A,numSplats:e,density:s,anisoScale:i,minScale:n,maxScale:a,fallDirection:r,fallVelocity:g,wanderScale:I,wanderVariance:Q,color1:o,color2:C,opacity:E,onFrame:l}){t=t??new B.Box3(new B.Vector3(-1,-1,-1),new B.Vector3(1,1,1));const c=(t.max.x-t.min.x)*(t.max.y-t.min.y)*(t.max.z-t.min.z);s=s??100,e=e??Math.max(1,Math.min(1e6,Math.round(c*s)));const h=TA(n??.001),u=TA(a??.005),p=tt(((i==null?void 0:i.clone())??new B.Vector3(1,1,1)).normalize()),d=tt((r??new B.Vector3(0,-1,0)).normalize()),y=TA(g??.02),D=TA(I??.01),S=TA(Q??2),m=tt(o??new B.Color(1,1,1)),f=tt(C??new B.Color(.5,.5,1)),w=TA(E??1),R=TA(0),M=tt(new B.Vector3(0,0,0)),x=tt(t.min),L=tt(t.max),N=TA(A??Number.NEGATIVE_INFINITY),k=Nt(L,x),U=new kt({numSplats:e,generator:GA({index:"int"},{gsplat:j},({index:AA})=>{if(!AA)throw new Error("index not defined");const z=Te(AA),sA=Mt(z).outputs.w;let tA=ht(z),V=Ie(CA(sA,q("float",100)));V=He(CA(Be("float","PI"),V)),V=mA(h,CA(V,Nt(u,h)));const J=CA(V,p),Z=Ie(CA(sA,q("float",10))),P=Ie(sA),X=$i(m,f,P),b=CA(X,Z),yA=Te(KA({vectorType:"ivec2",x:AA,y:q("int",6837)}));let IA=ht(yA),wA=CA(Mt(yA).outputs.w,S);wA=mA(R,wA),tA=mA(tA,M);const DA=Wi(tA,q("vec3",new B.Vector3(1,1,1)));tA=mA(x,CA(k,DA));const SA=q("vec4",new B.Quaternion(0,0,0,1));IA=He(mA(ht(wA),IA)),IA=CA(IA,D);let hA=mA(tA,IA),bA=Mt(hA).outputs.y;bA=ji(N,bA),hA=KA({vector:hA,y:bA});let MA=at({flags:Be("uint","GSPLAT_FLAG_ACTIVE"),index:AA,center:hA,scales:J,quaternion:SA,rgb:b,opacity:w});return MA=v.applyGsplat(MA),{gsplat:MA}},{globals:()=>[kA]}),update:({object:AA,time:z,deltaTime:sA})=>{R.value=z,v.update(U);const tA=d.value.clone().multiplyScalar(y.value*sA);M.value.add(tA),AA.visible=w.value>0,l==null||l({object:AA,time:z,deltaTime:sA}),U.updateVersion()}}),v=new Ct;return{snow:U,min:x,max:L,minY:N,color1:m,color2:f,opacity:w,fallVelocity:y,wanderVariance:S,wanderScale:D,fallDirection:d,minScale:h,maxScale:u,anisoScale:p}}const ZC=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_RAIN:PC,DEFAULT_SNOW:OC,snowBox:VC,staticBox:_C},Symbol.toStringTag,{value:"Module"}));function rg(t){return GA({gsplat:j},{gsplat:j},({gsplat:A})=>{if(!A)throw new Error("No gsplat input");let e=Ye(A);const s=t.applyGsplat(A),i=Et(s).outputs.center,n=Ye(s),a=Na(i,n),r=Gn(a,q("float",0));e=As(r,$e(e),e);const g=mA(CA(e,q("float",.5)),q("float",.5));return A=at({gsplat:A,rgb:g}),{gsplat:A}})}function XC(t){t.enableWorldToView=!0,t.worldModifier=rg(t.context.worldToView),t.updateGenerator()}function gg(t,A,e,s){return GA({gsplat:j},{gsplat:j},({gsplat:i})=>{if(!i)throw new Error("No gsplat input");let{center:n}=Et(i).outputs;n=t.apply(n);const{z:a}=Mt(n).outputs;let r=er($e(a),A,e);return r=As(s,Nt(q("float",1),r),r),i=at({gsplat:i,r,g:r,b:r}),{gsplat:i}})}function WC(t,A,e,s){t.enableWorldToView=!0;const i=q("float",A),n=q("float",e),a=q("bool",s??!1);return t.worldModifier=gg(t.context.worldToView,i,n,a),t.updateGenerator(),{minDepth:i,maxDepth:n,reverse:a}}const jC=Object.freeze(Object.defineProperty({__proto__:null,makeDepthColorModifier:gg,makeNormalColorModifier:rg,setDepthColor:WC,setWorldNormalColor:XC},Symbol.toStringTag,{value:"Module"})),Kt=class Kt{static createButton(A,e={}){const s=navigator.xr;if(!s)return null;const i=s,n=document.createElement("button");A.xr.enabled=!0,A.xr.setReferenceSpaceType("local");function a(){let o=null;async function C(c){console.log("onSessionStarted"),c.addEventListener("end",E),await A.xr.setSession(c),n.textContent="EXIT VR",o=c}function E(){console.log("onSessionEnded"),o==null||o.removeEventListener("end",E),n.textContent="ENTER VR",o=null}n.style.display="",n.style.cursor="pointer",n.style.left="calc(50% - 100px)",n.style.width="200px",n.style.height="100px",n.textContent="ENTER VR";const l={...e,optionalFeatures:[...e.optionalFeatures||[]]};n.onmouseenter=()=>{n.style.opacity="1.0"},n.onmouseleave=()=>{n.style.opacity="0.5"},n.onclick=()=>{o===null?(console.log("requesting session"),i.requestSession("immersive-vr",l).then(C)):(console.log("ending session"),o.end())}}function r(){n.style.display="none",n.style.cursor="auto",n.style.left="calc(50% - 75px)",n.style.width="150px",n.onmouseenter=null,n.onmouseleave=null,n.onclick=null}function g(){r(),n.textContent="VR NOT SUPPORTED"}function I(o){r(),console.warn("Exception when trying to call xr.isSessionSupported",o),n.textContent="VR NOT ALLOWED"}function Q(o){o.style.position="absolute",o.style.bottom="20px",o.style.padding="12px 6px",o.style.border="1px solid #fff",o.style.borderRadius="4px",o.style.background="rgba(0,0,0,0.1)",o.style.color="#fff",o.style.font="normal 13px sans-serif",o.style.textAlign="center",o.style.opacity="0.5",o.style.outline="none",o.style.zIndex="999"}return n.id="VRButton",n.style.display="none",Q(n),i.isSessionSupported("immersive-vr").then(o=>{o?a():g(),o&&Kt.xrSessionIsGranted&&n.click()}).catch(I),n}static registerSessionGrantedListener(){const A=navigator.xr;if(!A)return null;const e=A;/WebXRViewer\//i.test(navigator.userAgent)||e.addEventListener("sessiongranted",()=>{Kt.xrSessionIsGranted=!0})}};Kt.xrSessionIsGranted=!1;let ue=Kt;ue.registerSessionGrantedListener();const $C=.5,AE=.5,tE=0;var fe=(t=>(t.w="wrist",t.t0="thumb-metacarpal",t.t1="thumb-phalanx-proximal",t.t2="thumb-phalanx-distal",t.t3="thumb-tip",t.i0="index-finger-metacarpal",t.i1="index-finger-phalanx-proximal",t.i2="index-finger-phalanx-intermediate",t.i3="index-finger-phalanx-distal",t.i4="index-finger-tip",t.m0="middle-finger-metacarpal",t.m1="middle-finger-phalanx-proximal",t.m2="middle-finger-phalanx-intermediate",t.m3="middle-finger-phalanx-distal",t.m4="middle-finger-tip",t.r0="ring-finger-metacarpal",t.r1="ring-finger-phalanx-proximal",t.r2="ring-finger-phalanx-intermediate",t.r3="ring-finger-phalanx-distal",t.r4="ring-finger-tip",t.p0="pinky-finger-metacarpal",t.p1="pinky-finger-phalanx-proximal",t.p2="pinky-finger-phalanx-intermediate",t.p3="pinky-finger-phalanx-distal",t.p4="pinky-finger-tip",t))(fe||{});const ns=Object.keys(fe),eE=ns.length,sE={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},Jt={w:.02,t0:.02,t1:.014,t2:.0115,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},og=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],Ig=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],iE=["t3","i4","m4","r4","p4"],nE=["i4","m4","r4","p4"];var as=(t=>(t.left="left",t.right="right",t))(as||{});const de=Object.keys(as);class aE{constructor(){this.hands={},this.last={},this.values={},this.tests={},this.lastTests={},this.updated=!1}update({xr:A,xrFrame:e}){const s=A.getSession();if(!s)return;const i=A.getReferenceSpace();if(i&&e.getJointPose){this.last=this.hands,this.lastTests=this.tests,this.hands={},this.values={},this.tests={};for(const n of s.inputSources){if(!n.hand)continue;const a=n.handedness;this.hands[a]={};for(const r of ns){const g=n.hand.get(fe[r]);if(g){const I=e.getJointPose(g,i);if(I){const{position:Q,orientation:o}=I.transform;this.hands[a][r]={position:new nA.Vector3(Q.x,Q.y,Q.z),quaternion:new nA.Quaternion(o.x,o.y,o.z,o.w),radius:I.radius||.001}}}}}for(const n of de)for(const{key:a,value:r}of[{key:`${n}AllTips`,value:this.allTipsTouching(n)},{key:`${n}IndexThumb`,value:this.touching(n,"i4",n,"t3")},{key:`${n}MiddleThumb`,value:this.touching(n,"m4",n,"t3")},{key:`${n}RingThumb`,value:this.touching(n,"r4",n,"t3")},{key:`${n}PinkyThumb`,value:this.touching(n,"p4",n,"t3")},{key:`${n}TriTips`,value:this.triTipsTouching(n)}])this.values[a]=r,this.tests[a]=r===1?!0:r===0?!1:this.lastTests[a]??!1}}makeGhostMesh(){const A=new nA.Vector3,e=new nA.Vector3(.01,.01,.01),s=new nA.Quaternion(0,0,0,1),i=new nA.Color(1,1,1),n=Math.PI*3;new nA.Color(1,1,1);let a=1;const r=new zA({onFrame:()=>{let g=0;for(const I of de){const Q=this.hands[I];for(const[o,C]of og.entries())for(let E=1;E<C.length;++E){const l=Ig[o][E-1]*2,c=E+1===C.length,h=Q==null?void 0:Q[C[E-1]],u=Q==null?void 0:Q[C[E]];for(let p=0;p<l;++p){const d=(p+.5)/l;if(a=0,h&&u){A.copy(h.position).lerp(u.position,d),s.copy(h.quaternion).slerp(u.quaternion,d);const y=Jt[C[E-1]],D=Jt[C[E]];let S=(1-d)*y+d*D;c&&d>.8&&(S*=Math.sqrt(1-((d-.8)/.2)**2)),e.set(.65*S,.5*S,.003),i.set(.55+.45*Math.sin(A.x*n),.55+.45*Math.sin(A.y*n),.55+.45*Math.sin(A.z*n)),I==="right"&&i.set(1-i.r,1-i.g,1-i.b),a=.75}r.packedSplats.setSplat(g,A,e,s,a,i),g+=1}}}r.packedSplats.numSplats=g,r.packedSplats.needsUpdate=!0,r.numSplats=g,r.updateVersion()}});return r}distance(A,e,s,i,n=!1){const a=n?this.last[A]:this.hands[A],r=n?this.last[s]:this.hands[s],g=a==null?void 0:a[e],I=r==null?void 0:r[i];return!g||!I?Number.POSITIVE_INFINITY:g.position.distanceTo(I.position)}separation(A,e,s,i,n=!1){const a=this.distance(A,e,s,i,n);return a===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:a-Jt[e]-Jt[i]}touching(A,e,s,i,n=!1){const a=this.separation(A,e,s,i,n);return a===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:1-Math.max(0,Math.min(1,a/.01-tE))}allTipsTouching(A,e=!1){return Math.min(this.touching(A,"t3",A,"i4",e),this.touching(A,"i4",A,"m4",e),this.touching(A,"m4",A,"r4",e),this.touching(A,"r4",A,"p4",e))}triTipsTouching(A,e=!1){return Math.min(this.touching(A,"t3",A,"i4",e),this.touching(A,"i4",A,"m4",e),this.touching(A,"m4",A,"t3",e))}}class rE{constructor({xrHands:A,control:e,moveInertia:s,rotateInertia:i}){this.lastGrip={},this.lastPivot=new nA.Vector3,this.rotateVelocity=0,this.velocity=new nA.Vector3,this.xrHands=A,this.control=e,this.moveInertia=s??$C,this.rotateInertia=i??AE}update(A){var n,a,r,g,I;const e={};for(const Q of de){const o=this.xrHands.hands[Q];o&&this.xrHands.tests[`${Q}MiddleThumb`]&&(e[Q]=new nA.Vector3().add(((n=o.t3)==null?void 0:n.position)??new nA.Vector3).add(((a=o.i4)==null?void 0:a.position)??new nA.Vector3).add(((r=o.m4)==null?void 0:r.position)??new nA.Vector3).add(((g=o.r4)==null?void 0:g.position)??new nA.Vector3).add(((I=o.p4)==null?void 0:I.position)??new nA.Vector3).multiplyScalar(1/5))}if(e.left&&e.right&&this.lastGrip.left&&this.lastGrip.right){const Q=e.left.clone().add(e.right).multiplyScalar(.5),o=this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(.5);this.lastPivot=Q;const C=Q.clone().applyMatrix4(this.control.matrix);C.sub(o.clone().applyMatrix4(this.control.matrix)),C.multiplyScalar(1/A),this.velocity.lerp(C,1-Math.exp(-20*A));const E=Math.atan2(e.left.z-Q.z,e.left.x-Q.x),l=Math.atan2(this.lastGrip.left.z-o.z,this.lastGrip.left.x-o.x);let c=E-l;c>Math.PI?c-=Math.PI*2:c<-Math.PI&&(c+=Math.PI*2);const h=c/A,u=Math.exp(-20*A);this.rotateVelocity=this.rotateVelocity*u+h*(1-u)}else if(this.rotateVelocity*=Math.exp(-A/this.rotateInertia),e.left&&this.lastGrip.left){const Q=e.left.clone().applyMatrix4(this.control.matrix);Q.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)),Q.multiplyScalar(1/A),this.velocity.lerp(Q,1-Math.exp(-20*A))}else if(e.right&&this.lastGrip.right){const Q=e.right.clone().applyMatrix4(this.control.matrix);Q.sub(this.lastGrip.right.clone().applyMatrix4(this.control.matrix)),Q.multiplyScalar(1/A),this.velocity.lerp(Q,1-Math.exp(-20*A))}else this.velocity.multiplyScalar(Math.exp(-A/this.moveInertia));const s=this.lastPivot.clone().negate(),i=new nA.Matrix4().makeTranslation(s).premultiply(new nA.Matrix4().makeRotationY(this.rotateVelocity*A)).premultiply(new nA.Matrix4().makeTranslation(this.lastPivot));this.control.matrix.multiply(i),this.control.matrix.decompose(this.control.position,this.control.quaternion,this.control.scale),this.control.updateMatrixWorld(!0),this.control.position.sub(this.velocity.clone().multiplyScalar(A)),this.lastGrip=e}}const gE=1,oE=2,IE=.002,QE=.006,BE=.0015,CE=.15,EE=.15,cE=.1,hE=2,lE=1,uE=200,dE=400,pE=50,yE={KeyW:new B.Vector3(0,0,-1),KeyS:new B.Vector3(0,0,1),KeyA:new B.Vector3(-1,0,0),KeyD:new B.Vector3(1,0,0),KeyR:new B.Vector3(0,1,0),KeyF:new B.Vector3(0,-1,0)},wE={ArrowUp:new B.Vector3(0,0,-1),ArrowDown:new B.Vector3(0,0,1),ArrowLeft:new B.Vector3(-1,0,0),ArrowRight:new B.Vector3(1,0,0),PageUp:new B.Vector3(0,1,0),PageDown:new B.Vector3(0,-1,0)},DE={KeyQ:new B.Vector3(0,0,1),KeyE:new B.Vector3(0,0,-1)},fE={Home:new B.Vector3(0,-1,0),End:new B.Vector3(0,1,0),Insert:new B.Vector3(-1,0,0),Delete:new B.Vector3(1,0,0)};class mE{constructor({canvas:A}){this.lastTime=0,this.fpsMovement=new Qg({}),this.pointerControls=new Bg({canvas:A})}update(A){const e=performance.now(),s=(e-(this.lastTime||e))/1e3;this.lastTime=e,this.fpsMovement.update(s,A),this.pointerControls.update(s,A)}}class Qg{constructor({moveSpeed:A,rollSpeed:e,stickThreshold:s,rotateSpeed:i,keycodeMoveMapping:n,keycodeRotateMapping:a,gamepadMapping:r,capsMultiplier:g,shiftMultiplier:I,ctrlMultiplier:Q,xr:o}={}){this.enable=!0,this.moveSpeed=A??gE,this.rollSpeed=e??oE,this.stickThreshold=s??cE,this.rotateSpeed=i??hE,this.keycodeMoveMapping=n??{...yE,...wE},this.keycodeRotateMapping=a??{...DE,...fE},this.gamepadMapping=r??{4:"rollLeft",5:"rollRight",6:"ctrl",7:"shift"},this.capsMultiplier=g??10,this.shiftMultiplier=I??5,this.ctrlMultiplier=Q??1/5,this.xr=o,this.keydown={},this.keycode={},document.addEventListener("keydown",C=>{this.keydown[C.key]=!0,this.keycode[C.code]=!0}),document.addEventListener("keyup",C=>{this.keydown[C.key]=!1,this.keycode[C.code]=!1}),window.addEventListener("blur",()=>{this.keydown={},this.keycode={}})}update(A,e){var Q,o;if(!this.enable)return;const s=[new B.Vector2,new B.Vector2],i=navigator.getGamepads()[0];i&&(s[0].set(i.axes[0],i.axes[1]),s[1].set(i.axes[2],i.axes[3]));const n=(i==null?void 0:i.buttons.map(C=>C.pressed))||[],a=Array.from(((o=(Q=this.xr)==null?void 0:Q.getSession())==null?void 0:o.inputSources)??[]);for(const C of a){const E=C.gamepad;if(E)switch(C.handedness){case"none":{s[0].x+=E.axes[0],s[0].y+=E.axes[1],s[1].x+=E.axes[2],s[1].y+=E.axes[3];break}case"left":{s[0].x+=E.axes[2],s[0].y+=E.axes[3];break}case"right":{s[1].x+=E.axes[2],s[1].y+=E.axes[3];break}}}for(const C of s)C.x=Math.abs(C.x)>=this.stickThreshold?C.x:0,C.y=Math.abs(C.y)>=this.stickThreshold?C.y:0;const r=new B.Vector3(s[1].x,s[1].y,0).multiplyScalar(this.rotateSpeed);for(const[C,E]of Object.entries(this.keycodeRotateMapping))this.keycode[C]&&r.add(E);for(const C in this.gamepadMapping)if(n[Number.parseInt(C)])switch(this.gamepadMapping[C]){case"rollLeft":r.z+=1;break;case"rollRight":r.z-=1;break}if(r.multiply(new B.Vector3(this.rotateSpeed,this.rotateSpeed,this.rollSpeed)),r.manhattanLength()>0){r.multiplyScalar(A);const C=new B.Euler().setFromQuaternion(e.quaternion,"YXZ");C.y-=r.x,C.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,C.x-r.y)),C.z=Math.max(-Math.PI,Math.min(Math.PI,C.z+r.z)),e.quaternion.setFromEuler(C)}const g=new B.Vector3(s[0].x,0,s[0].y);for(const[C,E]of Object.entries(this.keycodeMoveMapping))this.keycode[C]&&g.add(E);let I=1;this.keydown.CapsLock&&(I*=this.capsMultiplier),(this.keycode.ShiftLeft||this.keycode.ShiftRight)&&(I*=this.shiftMultiplier),(this.keycode.ControlLeft||this.keycode.ControlRight)&&(I*=this.ctrlMultiplier);for(const C in this.gamepadMapping)if(n[Number.parseInt(C)])switch(this.gamepadMapping[C]){case"shift":I*=this.shiftMultiplier;break;case"ctrl":I*=this.ctrlMultiplier;break}g.applyQuaternion(e.quaternion),e.position.add(g.multiplyScalar(this.moveSpeed*I*A))}}class Bg{constructor({canvas:A,rotateSpeed:e,slideSpeed:s,scrollSpeed:i,swapRotateSlide:n,reverseRotate:a,reverseSlide:r,reverseSwipe:g,reverseScroll:I,moveInertia:Q,rotateInertia:o,pointerRollScale:C,doublePress:E}){this.enable=!0,this.canvas=A,this.rotateSpeed=e??IE,this.slideSpeed=s??QE,this.scrollSpeed=i??BE,this.swapRotateSlide=n??!1,this.reverseRotate=a??!1,this.reverseSlide=r??!1,this.reverseSwipe=g??!1,this.reverseScroll=I??!1,this.moveInertia=Q??EE,this.rotateInertia=o??CE,this.pointerRollScale=C??lE,this.doublePress=E??(()=>{}),this.doublePressLimitMs=dE,this.doublePressDistance=pE,this.lastUp=null,this.rotating=null,this.sliding=null,this.dualPress=!1,this.scroll=new B.Vector3,this.rotateVelocity=new B.Vector3,this.moveVelocity=new B.Vector3,A.addEventListener("pointerdown",c=>{const h=this.getPointerPosition(c),u=h.clone(),p=h.clone(),d=!this.swapRotateSlide&&!this.rotating&&(c.pointerType!=="mouse"||c.button===0)||this.swapRotateSlide&&this.sliding&&!this.rotating&&(c.pointerType!=="mouse"||c.button===1),{pointerId:y,timeStamp:D}=c;if(d)this.rotating={initial:u,last:p,position:h,pointerId:y,timeStamp:D},A.setPointerCapture(c.pointerId),this.dualPress=!1;else if(!this.sliding){const S=c.pointerType==="mouse"?c.button:void 0;this.sliding={initial:u,last:p,position:h,pointerId:y,button:S,timeStamp:D},A.setPointerCapture(c.pointerId),this.dualPress=this.rotating!=null&&D-this.rotating.timeStamp<uE}});const l=c=>{var p,d;((p=this.rotating)==null?void 0:p.pointerId)===c.pointerId?(this.rotating=null,A.releasePointerCapture(c.pointerId),this.dualPress&&this.sliding&&(A.releasePointerCapture(this.sliding.pointerId),this.sliding=null)):((d=this.sliding)==null?void 0:d.pointerId)===c.pointerId&&(this.sliding=null,A.releasePointerCapture(c.pointerId),this.dualPress&&this.rotating&&(A.releasePointerCapture(this.rotating.pointerId),this.rotating=null));const h=this.getPointerPosition(c),u=this.lastUp;if(this.lastUp={position:h,time:c.timeStamp},u&&u.position.distanceTo(h)<this.doublePressDistance){const D=c.timeStamp-u.time;D<this.doublePressLimitMs&&(this.lastUp=null,this.doublePress({position:h,intervalMs:D}))}};document.addEventListener("pointerup",l),document.addEventListener("pointercancel",l),document.addEventListener("pointermove",c=>{var h,u;((h=this.rotating)==null?void 0:h.pointerId)===c.pointerId?this.rotating.position=this.getPointerPosition(c):((u=this.sliding)==null?void 0:u.pointerId)===c.pointerId&&(this.sliding.position=this.getPointerPosition(c))}),A.addEventListener("contextmenu",c=>{c.preventDefault()}),A.addEventListener("wheel",c=>{this.scroll.add(new B.Vector3(c.deltaX,c.deltaY,c.deltaZ)),c.preventDefault()})}getPointerPosition(A){const e=this.canvas.getBoundingClientRect();return new B.Vector2(A.clientX-e.left,A.clientY-e.top)}update(A,e){if(!this.enable)return;if(this.dualPress&&this.rotating&&this.sliding){const i=[this.rotating.position.clone().sub(this.rotating.last),this.sliding.position.clone().sub(this.sliding.last)],n=i[0].dot(i[1]);if(n>=.2){const a=i[0].clone().add(i[1]),r=new B.Vector3(a.x,-a.y,0);r.multiplyScalar(this.slideSpeed*(this.reverseSwipe?1:-1)),r.applyQuaternion(e.quaternion),e.position.add(r),this.moveVelocity=r.clone().multiplyScalar(1/A)}else if(n<=-.2){const a=this.sliding.last.clone().sub(this.rotating.last),r=a.length();a.multiplyScalar(1/r).normalize();const g=new B.Vector2(-a.y,a.x),I=[i[0].dot(a),i[1].dot(a)],Q=[i[0].dot(g),i[1].dot(g)],o=this.rotating.last.clone().add(this.sliding.last).multiplyScalar(.5);let C=new B.Vector3;if(e instanceof B.Camera){const p=new B.Vector2(o.x/this.canvas.clientWidth*2-1,-(o.y/this.canvas.clientHeight)*2+1),d=new B.Raycaster;d.setFromCamera(p,e),C=d.ray.direction}const E=I[1]-I[0],l=C.multiplyScalar(E*this.slideSpeed);e.position.add(l),this.moveVelocity=l.clone().multiplyScalar(1/A);const c=[Math.atan(Q[0]/(-.5*r)),Math.atan(Q[1]/(.5*r))],h=.5*(c[0]+c[1])*this.pointerRollScale,u=new B.Euler().setFromQuaternion(e.quaternion,"YXZ");u.z=Math.max(-Math.PI,Math.min(Math.PI,u.z+.5*h)),e.quaternion.setFromEuler(u)}this.rotating.last.copy(this.rotating.position),this.sliding.last.copy(this.sliding.position)}else{const i=new B.Vector3;if(this.rotating&&!this.dualPress){const a=this.rotating.position.clone().sub(this.rotating.last);this.rotating.last.copy(this.rotating.position),i.set(a.x,a.y,0),i.multiplyScalar(this.rotateSpeed*(this.reverseRotate?-1:1)),this.rotateVelocity=i.clone().multiplyScalar(1/A)}else this.rotateVelocity.multiplyScalar(Math.exp(-A/this.rotateInertia)),i.addScaledVector(this.rotateVelocity,A);const n=new B.Euler().setFromQuaternion(e.quaternion,"YXZ");if(n.y-=i.x,n.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,n.x-i.y)),n.z*=Math.exp(-0*A),e.quaternion.setFromEuler(n),this.sliding&&!this.dualPress){const a=this.sliding.position.clone().sub(this.sliding.last);this.sliding.last.copy(this.sliding.position);const r=this.sliding.button!==2?new B.Vector3(a.x,0,a.y):new B.Vector3(a.x,-a.y,0);r.multiplyScalar(this.slideSpeed*(this.reverseSlide?-1:1)),r.applyQuaternion(e.quaternion),e.position.add(r),this.moveVelocity=r.clone().multiplyScalar(1/A)}else this.moveVelocity.multiplyScalar(Math.exp(-A/this.moveInertia)),e.position.addScaledVector(this.moveVelocity,A)}const s=this.scroll.multiplyScalar(this.scrollSpeed);s.set(s.x,s.z,s.y),this.reverseScroll&&s.multiplyScalar(-1),s.applyQuaternion(e.quaternion),e.position.add(s),this.scroll.set(0,0,0)}}exports.FINGER_TIPS=nE;exports.FpsMovement=Qg;exports.HANDS=de;exports.Hand=as;exports.HandMovement=rE;exports.JOINT_IDS=ns;exports.JOINT_INDEX=sE;exports.JOINT_RADIUS=Jt;exports.JOINT_SEGMENTS=og;exports.JOINT_SEGMENT_STEPS=Ig;exports.JOINT_TIPS=iE;exports.JointEnum=fe;exports.NUM_JOINTS=eE;exports.PackedSplats=JA;exports.PlyReader=Vt;exports.PointerControls=Bg;exports.Readback=Ot;exports.Sint8ToFloat=Gi;exports.SparkControls=mE;exports.SparkRenderer=Xt;exports.SparkViewpoint=Zt;exports.SplatAccumulator=Qe;exports.SplatEdit=Pt;exports.SplatEditRgbaBlendMode=Hr;exports.SplatEditSdf=qr;exports.SplatEditSdfType=Tr;exports.SplatEdits=Kr;exports.SplatFileType=Dt;exports.SplatGenerator=kt;exports.SplatLoader=jr;exports.SplatMesh=zA;exports.SplatModifier=Pr;exports.SplatSkinning=vC;exports.SplatTransformer=Ct;exports.SpzReader=eg;exports.SpzWriter=VA;exports.Uint8ToFloat=ki;exports.VRButton=ue;exports.XrHands=aE;exports.constructAxes=HC;exports.constructGrid=TC;exports.constructSpherePoints=qC;exports.dyno=WB;exports.flipPixels=Yi;exports.floatToSint8=qt;exports.floatToUint8=NA;exports.fromHalf=pA;exports.generators=ZC;exports.getSplatFileType=ts;exports.imageSplats=zC;exports.isAndroid=bi;exports.isMobile=Li;exports.isOculus=vi;exports.isPcSogs=hC;exports.modifiers=jC;exports.pixelsToPngUrl=Ji;exports.setPackedSplat=Ee;exports.textSplats=KC;exports.toHalf=rt;exports.transcodeSpz=bC;exports.unpackSplat=ce;exports.unpackSplats=ss;exports.utils=wI;
1136
1136
  //# sourceMappingURL=spark.cjs.min.js.map