@cearth/tools
Version:
CEarth 的 工具库
10 lines • 522 kB
JavaScript
var Tools=(function(x,h){"use strict";var ll=typeof document<"u"?document.currentScript:null;function Ii(n){return mn(n)||pn(n)||Ws(n)}function mn(n){return"modelMatrix"in n}function pn(n){return"position"in n}function Ws(n){return"positions"in n}const Vs={[h.WebGLConstants.BYTE]:Int8Array,[h.WebGLConstants.UNSIGNED_BYTE]:Uint8Array,[h.WebGLConstants.SHORT]:Int16Array,[h.WebGLConstants.UNSIGNED_SHORT]:Uint16Array,[h.WebGLConstants.INT]:Int32Array,[h.WebGLConstants.UNSIGNED_INT]:Uint32Array,[h.WebGLConstants.FLOAT]:Float32Array,[h.WebGLConstants.DOUBLE]:Float64Array};var ys=(n=>(n[n.x=0]="x",n[n.y=1]="y",n[n.z=2]="z",n))(ys||{});x.Xyz_Hpr=(n=>(n.x="roll",n.y="pitch",n.z="heading",n))(x.Xyz_Hpr||{}),(n=>{function t(e){for(let[d,i]of Object.entries(n))if(e===i)return d}n.toKey=t;function l(e){return new h.Cartesian3(e.roll,-e.pitch,-e.heading)}n.toCartesian3=l;function s(e){return new h.HeadingPitchRoll(-e[t("heading")],-e[t("pitch")],e[t("roll")])}n.toHeadingPitchRoll=s})(x.Xyz_Hpr||(x.Xyz_Hpr={}));var Ls=(n=>(n[n.heading=0]="heading",n[n.pitch=1]="pitch",n[n.roll=2]="roll",n))(Ls||{});function sl(n){const t=n?.world,{translation:l,rotation:s,scale:e}=t&&typeof t=="object"?t:{translation:t,rotation:t,scale:t};return{...n,worldTranslation:l,worldRotation:s,worldScale:e}}function Et(n){if(n.axis){const{axis:l,angle:s}=n;return h.Quaternion.fromAxisAngle(l,s)}const t=x.Xyz_Hpr.toHeadingPitchRoll(n);return h.Quaternion.fromHeadingPitchRoll(t)}function ki(n,t,l){const s=h.Matrix3.fromQuaternion(n),e=h.Matrix4.fromRotation(s),d=h.Matrix4.inverseTransformation(t,new h.Matrix4),i=h.Matrix4.multiply(d,e,e);return el(i)}function el(n,t){const l=h.Matrix4.getMatrix3(n,new h.Matrix3),s=h.Quaternion.fromRotationMatrix(l);return h.HeadingPitchRoll.fromQuaternion(s,t)}function Pi(n,t,l){l=l??new h.Matrix4;const s=h.Matrix4.inverse(t,new h.Matrix4);return h.Matrix4.multiply(s,n,l)}function xs(n,t,l){let s=h.Quaternion.computeAxis(n,new h.Cartesian3);if(s.equals(h.Cartesian3.ZERO))return null;const e=h.Quaternion.computeAngle(n);return s=h.Matrix4.multiplyByPointAsVector(t,s,s),h.Quaternion.fromAxisAngle(s,e)}function Qi(n,t,l){let s=h.Quaternion.computeAxis(n,new h.Cartesian3);if(s.equals(h.Cartesian3.ZERO))return null;const e=h.Quaternion.computeAngle(n),d=h.Matrix4.inverse(t,new h.Matrix4);return s=h.Matrix4.multiplyByPointAsVector(d,s,s),h.Quaternion.fromAxisAngle(s,e)}function Wn(n,t){let{translation:l,rotation:s,scale:e}=n;const{referFrame:d,worldTranslation:i,worldRotation:c,worldScale:o}=sl(t);let X=null;return l&&(i||(l=h.Matrix4.multiplyByPointAsVector(d,l,new h.Cartesian3))),s&&(X=Et(s),c||(X=xs(X,d))),e&&(o||(e=h.Matrix4.multiplyByPointAsVector(d,e,new h.Cartesian3))),{translation:l,rotation:X,scale:e}}function Ks(n,t){let{translation:l,rotation:s,scale:e}=n;const{referFrame:d,worldTranslation:i,worldRotation:c,worldScale:o}=sl(t),X=d?h.Matrix4.inverse(d,new h.Matrix4):null;let a=null;if(l&&i&&(l=h.Matrix4.multiplyByPointAsVector(X,l,new h.Cartesian3)),s&&(a=Et(s),c)){let u=h.Quaternion.computeAxis(a,new h.Cartesian3);if(!u.equals(h.Cartesian3.ZERO)){const r=h.Quaternion.computeAngle(a);u=h.Matrix4.multiplyByPointAsVector(X,u,u),a=h.Quaternion.fromAxisAngle(u,r)}}return e&&o&&(e=h.Matrix4.multiplyByPointAsVector(X,e,new h.Cartesian3)),{translation:l,rotation:a,scale:e}}function Rs(n,t){const l=t?.defaultMatrix;let{translation:s,rotation:e,scale:d}=Wn(n,t);if(l){if(s||(s=h.Matrix4.getTranslation(l,new h.Cartesian3)),!e){const c=h.Matrix4.getMatrix3(l,new h.Matrix3);e=h.Quaternion.fromRotationMatrix(c)}d||(d=h.Matrix4.getScale(l,new h.Cartesian3))}const i=new h.TranslationRotationScale(s??void 0,e??void 0,d??void 0);return h.Matrix4.fromTranslationRotationScale(i)}function Bi(n){const{translation:t,rotation:l,scale:s}=n,e=l?Et(l):void 0,d=new h.TranslationRotationScale(t??void 0,e,s??void 0);return h.Matrix4.fromTranslationRotationScale(d)}function Ss(n,t,l){const s=h.Cartesian3.subtract(t,n,new h.Cartesian3),e=h.Cartesian3.subtract(l,n,new h.Cartesian3),d=h.Cartesian3.cross(s,e,s);return h.Cartesian3.normalize(d,s)}function vi(n,t,l){const s=Ss(n,t,l);return h.Plane.fromPointNormal(s,n)}function*wi(n,t=!0,l,s){const e=n.length,d=t?e:e-1,i=l||s?h.Cartesian3.prototype.equalsEpsilon:h.Cartesian3.prototype.equals;for(let c=0;c<d;c++){const o=n[c];let X=(c+1)%e,a=n[X],u=c;for(;i.call(o,a,l,s);){if(X=(++u+1)%e,X===c)return;a=n[X]}c=u,yield[o,a]}}function zs(n){var t=typeof n;return n&&(t==="object"||t==="function")}function Ms(n){var t=n;return n!=null&&(t=n.constructor,t==null&&(t=typeof n)),t}function Ui(n){switch(n){case void 0:return"undefined";case null:return"null"}let t=typeof n;switch(t){case"function":return n.name;case"string":return n;default:return t}}function ji(n){let t=Ms(n);return Ui(t)}function Ei(n){return n==null||zs(n)?Ms(n):typeof n}var dl=(n=>(n.equal="equal",n.intersect="intersect",n.intersectEqual="intersectEqual",n))(dl||{});(n=>{function t(l){let s;switch(l){case"equal":s=(e,d)=>e===d;case"intersect":s=(e,d)=>e&d;default:s=(e,d)=>(e&d)===e}return s}n.getEqualFun=t})(dl||(dl={}));const Oi=[globalThis.Worker,globalThis.SharedWorker,globalThis.ServiceWorker].filter(n=>n),Ai=["Worker","SharedWorker","ServiceWorker"];function Di(n){if(Oi.some(l=>n instanceof l))return!0;const t=ji(n);return Ai.includes(t)}var il=(n=>(n.Ing="进行中",n.End="结束",n))(il||{}),qi=Object.defineProperty,_i=(n,t,l)=>t in n?qi(n,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):n[t]=l,Vn=(n,t,l)=>_i(n,typeof t!="symbol"?t+"":t,l);const Ys=`(function(){"use strict";function n(){const r=globalThis.currentWorkerType;if(r)return r;let e=globalThis.SharedWorkerGlobalScope;return typeof e=="function"&&globalThis instanceof e?globalThis.currentWorkerType="SharedWorker":(e=globalThis.DedicatedWorkerGlobalScope,typeof e=="function"&&globalThis instanceof e?globalThis.currentWorkerType="DedicatedWorker":(e=globalThis.Window,typeof e=="function"&&globalThis instanceof e?globalThis.currentWorkerType="Window":globalThis.currentWorkerType="unknown"))}function t(r){switch(n()){case"SharedWorker":{globalThis.addEventListener("connect",function(e){for(const o of e.ports)o.addEventListener("message",r),o.start()});break}default:globalThis.addEventListener("message",r)}}globalThis.listenMessage||(globalThis.listenMessage=t)})();
`,$i='(function(){"use strict";function b(t){var e=t;return t!=null&&(e=t.constructor,e==null&&(e=typeof t)),e}var u=(t=>(t.equal="equal",t.intersect="intersect",t.intersectEqual="intersectEqual",t))(u||{});(t=>{function e(r){let s;switch(r){case"equal":s=(o,n)=>o===n;case"intersect":s=(o,n)=>o&n;default:s=(o,n)=>(o&n)===o}return s}t.getEqualFun=e})(u||(u={}));function d(){const t=globalThis.currentWorkerType;if(t)return t;let e=globalThis.SharedWorkerGlobalScope;return typeof e=="function"&&globalThis instanceof e?globalThis.currentWorkerType="SharedWorker":(e=globalThis.DedicatedWorkerGlobalScope,typeof e=="function"&&globalThis instanceof e?globalThis.currentWorkerType="DedicatedWorker":(e=globalThis.Window,typeof e=="function"&&globalThis instanceof e?globalThis.currentWorkerType="Window":globalThis.currentWorkerType="unknown"))}function h(t,e,r){const s=/(^\\s*(async\\s+)?function\\s*(\\s|\\*)\\s*)[A-Za-z_$]+[\\w$]*(\\s*\\()/,o=/^[A-Za-z_$]+[\\w$]*$/,n=s.test(t),a=e&&o.test(e);if(n&&a&&(t=t.replace(s,`$1${e}$4`)),!n&&a)var i=`var ${e} = ${t} ; return ${e}`;else i=`return (${t})`;return new Function(i)()}function f(t){const{name:e,args:r,this:s}=t,o=s??globalThis,n=globalThis[e];return typeof n=="function"?n.apply(o,r):r||s?{error:"函数不存在",state:"结束"}:{data:n,state:"结束"}}function g(t){const e=b(t);if(e==="object"||e===Object){const{transfer:r,targetOrigin:s}=t;return"data"in t||"error"in t||Array.isArray(r)||typeof s=="string"}return!1}function c(t,e){const{data:r,...s}=g(t)?t:{data:t},o={...e,...s};if(r instanceof ReadableStream){const n=new WritableStream({write:function(a,i){return c(a,{...o,state:"进行中"})},close:function(a){l(void 0,{state:"结束",...o})},abort:function(a){l(void 0,{state:"结束",...o,error:a})}});return r.pipeTo(n)}return r instanceof Promise?r.then(function(n){c(n,{state:"结束",...o})},function(n){l(void 0,{...o,error:n,state:"结束"})}):l(r,{state:"结束",...o})}function l(t,e){const{port:r,...s}=e,{transfer:o,targetOrigin:n,...a}=g(t)?{...s,...t}:{...s,data:t};a.state==null&&(a.state="结束");const i={transfer:o,targetOrigin:n};return(r??globalThis).postMessage(a,i)}function T(t){const e=t.data,r=t.currentTarget;if(e){const s=f(e);c(s,{execId:e.id,port:r})}}function p(t,e){const r=h(t,e);return e=e??r.name,globalThis[e]=r,!0}function y(t){return delete globalThis[t]}Object.assign(globalThis,{execCMD:f,messageListener:T,setCMD:p,removeCMD:y,sendMessage:c}),d(),listenMessage(T)})();\n',yn="event";function gs(n,t){t=t??n.name;const l=n.toString();return`globalThis['${t}'] = ${l};`}function cl(n,t){const l=typeof n=="string"?n:n.toString();t=t??[];const s=t.map(function(d){return zs(d)?JSON.stringify(d):d}),e=s.length>0?`,${s.join(",")}`:"";return`(${l}).call(this${e});`}function tc(n,t){return n.name?gs(n):cl(n,t)}function Ts(n){return`globalThis.listenMessage(${typeof n=="string"?n:n.toString()});`}function nc(n){const t=n.map(function(s){return`${s}.call(this,${yn});`}).join(`
`),l=`function(${yn}){${t}}`;return Ts(l)}function lc(n){const t=n.map(function(s){return cl(s,[yn])}).join(`
`),l=`function(${yn}){${t}}`;return Ts(l)}function sc(n,t){const l=new Blob(n,{type:"text/javascript",...t});return URL.createObjectURL(l)}function Cs(n){return n.name||n.fun?[n]:Object.entries(n).map(function([t,l]){return{name:t,fun:l}})}function ec(n,t){const{code:l,named:s,iife:e,message:d}=n,i=[],c=[],o=e||[],X=[],a=[],u=Array.isArray(l)?l:l?[l]:[];for(const y of u){const S=Ei(y);if(S===Object||S==="object"){const R=Cs(y);i.push(...R)}else c.push(y)}const r=Array.isArray(s)?s:s?[s]:[];for(const y of r)if(typeof y=="function")i.push({fun:y});else{const S=Cs(y);i.push(...S)}const Z=Array.isArray(d)?d:d?[d]:[];for(const y of Z)switch(typeof y){case"string":{a.push(y);break}case"function":{X.push(y);break}default:{const{name:S,fun:R}=y;R?X.push(R):S&&a.push(S)}}const G=i.map(function({name:y,fun:S}){return`${gs(S,y)}
`}),p=c.map(function(y){return typeof y=="function"?`${tc(y)}
`:y}),m=o.map(function(y){return`${cl(y)}
`}),W=[],L=lc(X);W.push(`${L}
`);const V=nc(a);return W.push(`${V}
`),[`${Ys}
`,...G,...p,...m,...W]}function dc(n,t){const l=n?ec(n):[];return t||l.unshift(Ys,$i),sc(l)}function fs(n){return n&&Array.isArray(n.args)&&Array.isArray(n.transfer)}const Fs=class Ni{constructor(t){if(Vn(this,"id",++Ni.instanceCount),Vn(this,"execCount",0),t)for(const l of Object.keys(t))this.setCMDToSelf(l)}get port(){return this.getPort(this.worker)}get workerAndPort(){const t=this.worker;return[t,this.getPort(t)]}getPort(t){return t.port||t}execStarted(t,l){++t.executingCount}execEnded(t){--t.executingCount}getExecId(t){return t=t??"匿名",`${t}_${this.execCount}`}getExecRecord(t){return{id:this.getExecId(t.name),...t}}listenResponse(t,l){const s=new AbortController,e=s.signal;let d=null;const i=this.getPort(l);return new Promise((c,o)=>{i.addEventListener("message",a=>{const u=a.data,{execId:r,state:Z,error:G,data:p}=u;if(t!==r)return;if(d){if(Z===il.End){s.abort(),G&&d.error(G),p!==void 0&&d.enqueue(p),d.close(),this.execEnded(l);return}if(G){d.error(G);return}d.enqueue(p);return}if(G){o(G),s.abort();return}if(Z===il.End){s.abort(),c(p),this.execEnded(l);return}const m=new ReadableStream({start:W=>{d=W,G&&d.error(G),d.enqueue(p)}});c(m)},{signal:e});const X=a=>{if(s.abort(),d){d.error(a),d.close(),this.execEnded(l);return}o(a)};l.addEventListener("error",X,{signal:e}),i.addEventListener("messageerror",X,{signal:e})}).catch(c=>{throw this.execEnded(l),c})}execCMD(t,l){++this.execCount;const s=this.getExecRecord(t),[e,d]=this.workerAndPort;this.execStarted(e,s);const i=this.listenResponse(s.id,e);d.postMessage(s,l);const c=t.name;return c in this?i:i.then(o=>(this.setCMDToSelf(c),o))}setCMDToSelf(t,l){const s=(...e)=>{const d=e[0];let i;return e.length===1&&fs(d)&&(i=d.transfer,e=d.args),this.execCMD({name:t,args:e.length>0?e:void 0},i)};return Reflect.defineProperty(this,t,{configurable:!0,enumerable:!0,...l?{get:s}:{value:s,writable:!0}})}};Vn(Fs,"instanceCount",0);let ic=Fs;function cc(n){const{url:t,name:l}=n;return new Worker(t,{name:l})}class bc extends ic{constructor(t,l){super(t?.named),Vn(this,"worker");const{id:s}=this;let e=(typeof l=="string"?l:l?.name)||`DynamicWorker/${s}`,d=t;if(!Di(t)){const i=typeof t=="string",{getWorker:c,noDep:o}=l||{},X=i?t:dc(t,o);d=(c||cc)({url:X,name:e,clientId:s,id:s}),i||URL.revokeObjectURL(X)}d.executingCount=0,d.name=e,d.id=d.clientId=s,this.worker=d}get executingCount(){return this.worker.executingCount}setCMD(t,l,s){const e=l||t.name;if(!e)return Promise.reject("没有函数的名字");const d=typeof t=="function"?t.toString():t;return this.execCMD({name:"setCMD",args:[d,e]}).then(i=>(i&&this.setCMDToSelf(e,s),i))}removeCMD(t){return this.execCMD({name:"removeCMD",args:[t]}).then(l=>(l&&Reflect.deleteProperty(this,t),l))}}function oc(n){return new Proxy(n,{get:function(t,l,s){const e=t[l];return typeof e=="function"?e.bind(t):e||function(...d){const i=d[0];let c;return d.length===1&&fs(i)&&(c=i.transfer,d=i.args),t.execCMD({name:l,args:d.length>0?d:void 0},c)}},set:function(t,l,s,e){return t.setCMD(s,l,typeof s!="function")},deleteProperty:function(t,l){return t.removeCMD(l)},has:function(t,l){return l in t},ownKeys:function(t){return Reflect.ownKeys(t)}})}function Xc(n,t){const l=new bc(n,t);return oc(l)}const ac=1/Math.PI*180,uc=1/180*Math.PI,hc={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...hc}};const w=globalThis.mathgl.config;function rc(n,{precision:t=w.precision}={}){return n=Wc(n),`${parseFloat(n.toPrecision(t))}`}function Vt(n){return Array.isArray(n)||ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Zc(n){return mc(n)}function Gc(n){return pc(n)}function mc(n,t){return bl(n,l=>l*uc,t)}function pc(n,t){return bl(n,l=>l*ac,t)}function Yt(n,t,l){return bl(n,s=>Math.max(t,Math.min(l,s)))}function A(n,t,l){const s=w.EPSILON;l&&(w.EPSILON=l);try{if(n===t)return!0;if(Vt(n)&&Vt(t)){if(n.length!==t.length)return!1;for(let e=0;e<n.length;++e)if(!A(n[e],t[e]))return!1;return!0}return n&&n.equals?n.equals(t):t&&t.equals?t.equals(n):typeof n=="number"&&typeof t=="number"?Math.abs(n-t)<=w.EPSILON*Math.max(1,Math.abs(n),Math.abs(t)):!1}finally{w.EPSILON=s}}function Wc(n){return Math.round(n/w.EPSILON)*w.EPSILON}function Vc(n){return n.clone?n.clone():new Array(n.length)}function bl(n,t,l){if(Vt(n)){const s=n;l=l||Vc(s);for(let e=0;e<l.length&&e<s.length;++e){const d=typeof n=="number"?n:n[e];l[e]=t(d,e,l)}return l}return t(n)}class Ln extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,l=0){for(let s=0;s<this.ELEMENTS;++s)this[s]=t[s+l];return this.check()}toArray(t=[],l=0){for(let s=0;s<this.ELEMENTS;++s)t[l+s]=this[s];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:Vt(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(w)}formatString(t){let l="";for(let s=0;s<this.ELEMENTS;++s)l+=(s>0?", ":"")+rc(this[s],t);return`${t.printTypes?this.constructor.name:""}[${l}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let l=0;l<this.ELEMENTS;++l)if(!A(this[l],t[l]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let l=0;l<this.ELEMENTS;++l)if(this[l]!==t[l])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,l,s){if(s===void 0)return this.lerp(this,t,l);for(let e=0;e<this.ELEMENTS;++e){const d=t[e],i=typeof l=="number"?l:l[e];this[e]=d+s*(i-d)}return this.check()}min(t){for(let l=0;l<this.ELEMENTS;++l)this[l]=Math.min(t[l],this[l]);return this.check()}max(t){for(let l=0;l<this.ELEMENTS;++l)this[l]=Math.max(t[l],this[l]);return this.check()}clamp(t,l){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t[s]),l[s]);return this.check()}add(...t){for(const l of t)for(let s=0;s<this.ELEMENTS;++s)this[s]+=l[s];return this.check()}subtract(...t){for(const l of t)for(let s=0;s<this.ELEMENTS;++s)this[s]-=l[s];return this.check()}scale(t){if(typeof t=="number")for(let l=0;l<this.ELEMENTS;++l)this[l]*=t;else for(let l=0;l<this.ELEMENTS&&l<t.length;++l)this[l]*=t[l];return this.check()}multiplyByScalar(t){for(let l=0;l<this.ELEMENTS;++l)this[l]*=t;return this.check()}check(){if(w.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let l=0;l<this.ELEMENTS;++l)t=t&&Number.isFinite(this[l]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let l=0;l<this.ELEMENTS;++l)this[l]=t;return this.check()}addScalar(t){for(let l=0;l<this.ELEMENTS;++l)this[l]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let l=0;l<this.ELEMENTS;++l)this[l]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,l){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t),l);return this.check()}get elements(){return this}}function yc(n,t){if(n.length!==t)return!1;for(let l=0;l<n.length;++l)if(!Number.isFinite(n[l]))return!1;return!0}function f(n){if(!Number.isFinite(n))throw new Error(`Invalid number ${JSON.stringify(n)}`);return n}function Ot(n,t,l=""){if(w.debug&&!yc(n,t))throw new Error(`math.gl: ${l} some fields set to invalid numbers'`);return n}function at(n,t){if(!n)throw new Error(`math.gl assertion ${t}`)}let ol=class extends Ln{get x(){return this[0]}set x(t){this[0]=f(t)}get y(){return this[1]}set y(t){this[1]=f(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let l=0;l<this.ELEMENTS;++l)t+=this[l]*this[l];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let l=0;for(let s=0;s<this.ELEMENTS;++s){const e=this[s]-t[s];l+=e*e}return f(l)}dot(t){let l=0;for(let s=0;s<this.ELEMENTS;++s)l+=this[s]*t[s];return f(l)}normalize(){const t=this.magnitude();if(t!==0)for(let l=0;l<this.ELEMENTS;++l)this[l]/=t;return this.check()}multiply(...t){for(const l of t)for(let s=0;s<this.ELEMENTS;++s)this[s]*=l[s];return this.check()}divide(...t){for(const l of t)for(let s=0;s<this.ELEMENTS;++s)this[s]/=l[s];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return at(t>=0&&t<this.ELEMENTS,"index is out of range"),f(this[t])}setComponent(t,l){return at(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=l,this.check()}addVectors(t,l){return this.copy(t).add(l)}subVectors(t,l){return this.copy(t).subtract(l)}multiplyVectors(t,l){return this.copy(t).multiply(l)}addScaledVector(t,l){return this.add(new this.constructor(t).multiplyScalar(l))}};const F=1e-6;let B=typeof Float32Array<"u"?Float32Array:Array;const yt=Math.random;function ot(n){return n>=0?Math.round(n):n%.5===0?Math.floor(n):Math.round(n)}function Ns(){const n=new B(2);return B!=Float32Array&&(n[0]=0,n[1]=0),n}function Lc(n){const t=new B(2);return t[0]=n[0],t[1]=n[1],t}function xc(n,t){const l=new B(2);return l[0]=n,l[1]=t,l}function Kc(n,t){return n[0]=t[0],n[1]=t[1],n}function Rc(n,t,l){return n[0]=t,n[1]=l,n}function Hs(n,t,l){return n[0]=t[0]+l[0],n[1]=t[1]+l[1],n}function tt(n,t,l){return n[0]=t[0]-l[0],n[1]=t[1]-l[1],n}function Js(n,t,l){return n[0]=t[0]*l[0],n[1]=t[1]*l[1],n}function Is(n,t,l){return n[0]=t[0]/l[0],n[1]=t[1]/l[1],n}function Sc(n,t){return n[0]=Math.ceil(t[0]),n[1]=Math.ceil(t[1]),n}function zc(n,t){return n[0]=Math.floor(t[0]),n[1]=Math.floor(t[1]),n}function Mc(n,t,l){return n[0]=Math.min(t[0],l[0]),n[1]=Math.min(t[1],l[1]),n}function Yc(n,t,l){return n[0]=Math.max(t[0],l[0]),n[1]=Math.max(t[1],l[1]),n}function gc(n,t){return n[0]=ot(t[0]),n[1]=ot(t[1]),n}function Tc(n,t,l){return n[0]=t[0]*l,n[1]=t[1]*l,n}function ks(n,t,l,s){return n[0]=t[0]+l[0]*s,n[1]=t[1]+l[1]*s,n}function Ps(n,t){const l=t[0]-n[0],s=t[1]-n[1];return Math.sqrt(l*l+s*s)}function Qs(n,t){const l=t[0]-n[0],s=t[1]-n[1];return l*l+s*s}function Bs(n){const t=n[0],l=n[1];return Math.sqrt(t*t+l*l)}function vs(n){const t=n[0],l=n[1];return t*t+l*l}function Cc(n,t){return n[0]=-t[0],n[1]=-t[1],n}function fc(n,t){return n[0]=1/t[0],n[1]=1/t[1],n}function Fc(n,t){const l=t[0],s=t[1];let e=l*l+s*s;return e>0&&(e=1/Math.sqrt(e)),n[0]=t[0]*e,n[1]=t[1]*e,n}function Nc(n,t){return n[0]*t[0]+n[1]*t[1]}function gt(n,t,l){const s=t[0]*l[1]-t[1]*l[0];return n[0]=n[1]=0,n[2]=s,n}function Hc(n,t,l,s){const e=t[0],d=t[1];return n[0]=e+s*(l[0]-e),n[1]=d+s*(l[1]-d),n}function Jc(n,t){t=t===void 0?1:t;const l=yt()*2*Math.PI;return n[0]=Math.cos(l)*t,n[1]=Math.sin(l)*t,n}function Xl(n,t,l){const s=t[0],e=t[1];return n[0]=l[0]*s+l[2]*e,n[1]=l[1]*s+l[3]*e,n}function ws(n,t,l){const s=t[0],e=t[1];return n[0]=l[0]*s+l[2]*e+l[4],n[1]=l[1]*s+l[3]*e+l[5],n}function al(n,t,l){const s=t[0],e=t[1];return n[0]=l[0]*s+l[3]*e+l[6],n[1]=l[1]*s+l[4]*e+l[7],n}function ul(n,t,l){const s=t[0],e=t[1];return n[0]=l[0]*s+l[4]*e+l[12],n[1]=l[1]*s+l[5]*e+l[13],n}function Ic(n,t,l,s){const e=t[0]-l[0],d=t[1]-l[1],i=Math.sin(s),c=Math.cos(s);return n[0]=e*c-d*i+l[0],n[1]=e*i+d*c+l[1],n}function kc(n,t){const l=n[0],s=n[1],e=t[0],d=t[1],i=Math.sqrt((l*l+s*s)*(e*e+d*d)),c=i&&(l*e+s*d)/i;return Math.acos(Math.min(Math.max(c,-1),1))}function Pc(n){return n[0]=0,n[1]=0,n}function Qc(n){return`vec2(${n[0]}, ${n[1]})`}function Bc(n,t){return n[0]===t[0]&&n[1]===t[1]}function hl(n,t){const l=n[0],s=n[1],e=t[0],d=t[1];return Math.abs(l-e)<=F*Math.max(1,Math.abs(l),Math.abs(e))&&Math.abs(s-d)<=F*Math.max(1,Math.abs(s),Math.abs(d))}const vc=Bs,wc=tt,Uc=Js,jc=Is,Ec=Ps,Oc=Qs,Ac=vs,Dc=(function(){const n=Ns();return function(t,l,s,e,d,i){let c,o;for(l||(l=2),s||(s=0),e?o=Math.min(e*l+s,t.length):o=t.length,c=s;c<o;c+=l)n[0]=t[c],n[1]=t[c+1],d(n,n,i),t[c]=n[0],t[c+1]=n[1];return t}})(),qc=Object.freeze(Object.defineProperty({__proto__:null,add:Hs,angle:kc,ceil:Sc,clone:Lc,copy:Kc,create:Ns,cross:gt,dist:Ec,distance:Ps,div:jc,divide:Is,dot:Nc,equals:hl,exactEquals:Bc,floor:zc,forEach:Dc,fromValues:xc,inverse:fc,len:vc,length:Bs,lerp:Hc,max:Yc,min:Mc,mul:Uc,multiply:Js,negate:Cc,normalize:Fc,random:Jc,rotate:Ic,round:gc,scale:Tc,scaleAndAdd:ks,set:Rc,sqrDist:Oc,sqrLen:Ac,squaredDistance:Qs,squaredLength:vs,str:Qc,sub:wc,subtract:tt,transformMat2:Xl,transformMat2d:ws,transformMat3:al,transformMat4:ul,zero:Pc},Symbol.toStringTag,{value:"Module"}));function Us(n,t,l){const s=t[0],e=t[1],d=l[3]*s+l[7]*e||1;return n[0]=(l[0]*s+l[4]*e)/d,n[1]=(l[1]*s+l[5]*e)/d,n}function js(n,t,l){const s=t[0],e=t[1],d=t[2],i=l[3]*s+l[7]*e+l[11]*d||1;return n[0]=(l[0]*s+l[4]*e+l[8]*d)/i,n[1]=(l[1]*s+l[5]*e+l[9]*d)/i,n[2]=(l[2]*s+l[6]*e+l[10]*d)/i,n}function _c(n,t,l){const s=t[0],e=t[1];return n[0]=l[0]*s+l[2]*e,n[1]=l[1]*s+l[3]*e,n[2]=t[2],n}function $c(n,t,l){const s=t[0],e=t[1];return n[0]=l[0]*s+l[2]*e,n[1]=l[1]*s+l[3]*e,n[2]=t[2],n[3]=t[3],n}function Es(n,t,l){const s=t[0],e=t[1],d=t[2];return n[0]=l[0]*s+l[3]*e+l[6]*d,n[1]=l[1]*s+l[4]*e+l[7]*d,n[2]=l[2]*s+l[5]*e+l[8]*d,n[3]=t[3],n}class nt extends ol{constructor(t=0,l=0){super(2),Vt(t)&&arguments.length===1?this.copy(t):(w.debug&&(f(t),f(l)),this[0]=t,this[1]=l)}set(t,l){return this[0]=t,this[1]=l,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this.check()}fromObject(t){return w.debug&&(f(t.x),f(t.y)),this[0]=t.x,this[1]=t.y,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return ul(this,this,t),this.check()}transformAsVector(t){return Us(this,this,t),this.check()}transformByMatrix3(t){return al(this,this,t),this.check()}transformByMatrix2x3(t){return ws(this,this,t),this.check()}transformByMatrix2(t){return Xl(this,this,t),this.check()}}function rl(){const n=new B(3);return B!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0),n}function t0(n){const t=new B(3);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t}function xn(n){const t=n[0],l=n[1],s=n[2];return Math.sqrt(t*t+l*l+s*s)}function Zl(n,t,l){const s=new B(3);return s[0]=n,s[1]=t,s[2]=l,s}function n0(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n}function l0(n,t,l,s){return n[0]=t,n[1]=l,n[2]=s,n}function s0(n,t,l){return n[0]=t[0]+l[0],n[1]=t[1]+l[1],n[2]=t[2]+l[2],n}function Gl(n,t,l){return n[0]=t[0]-l[0],n[1]=t[1]-l[1],n[2]=t[2]-l[2],n}function Os(n,t,l){return n[0]=t[0]*l[0],n[1]=t[1]*l[1],n[2]=t[2]*l[2],n}function As(n,t,l){return n[0]=t[0]/l[0],n[1]=t[1]/l[1],n[2]=t[2]/l[2],n}function e0(n,t){return n[0]=Math.ceil(t[0]),n[1]=Math.ceil(t[1]),n[2]=Math.ceil(t[2]),n}function d0(n,t){return n[0]=Math.floor(t[0]),n[1]=Math.floor(t[1]),n[2]=Math.floor(t[2]),n}function i0(n,t,l){return n[0]=Math.min(t[0],l[0]),n[1]=Math.min(t[1],l[1]),n[2]=Math.min(t[2],l[2]),n}function c0(n,t,l){return n[0]=Math.max(t[0],l[0]),n[1]=Math.max(t[1],l[1]),n[2]=Math.max(t[2],l[2]),n}function b0(n,t){return n[0]=ot(t[0]),n[1]=ot(t[1]),n[2]=ot(t[2]),n}function Ds(n,t,l){return n[0]=t[0]*l,n[1]=t[1]*l,n[2]=t[2]*l,n}function o0(n,t,l,s){return n[0]=t[0]+l[0]*s,n[1]=t[1]+l[1]*s,n[2]=t[2]+l[2]*s,n}function qs(n,t){const l=t[0]-n[0],s=t[1]-n[1],e=t[2]-n[2];return Math.sqrt(l*l+s*s+e*e)}function _s(n,t){const l=t[0]-n[0],s=t[1]-n[1],e=t[2]-n[2];return l*l+s*s+e*e}function $s(n){const t=n[0],l=n[1],s=n[2];return t*t+l*l+s*s}function X0(n,t){return n[0]=-t[0],n[1]=-t[1],n[2]=-t[2],n}function ml(n,t){return n[0]=1/t[0],n[1]=1/t[1],n[2]=1/t[2],n}function te(n,t){const l=t[0],s=t[1],e=t[2];let d=l*l+s*s+e*e;return d>0&&(d=1/Math.sqrt(d)),n[0]=t[0]*d,n[1]=t[1]*d,n[2]=t[2]*d,n}function At(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function Tt(n,t,l){const s=t[0],e=t[1],d=t[2],i=l[0],c=l[1],o=l[2];return n[0]=e*o-d*c,n[1]=d*i-s*o,n[2]=s*c-e*i,n}function a0(n,t,l,s){const e=t[0],d=t[1],i=t[2];return n[0]=e+s*(l[0]-e),n[1]=d+s*(l[1]-d),n[2]=i+s*(l[2]-i),n}function u0(n,t,l,s){const e=Math.acos(Math.min(Math.max(At(t,l),-1),1)),d=Math.sin(e),i=Math.sin((1-s)*e)/d,c=Math.sin(s*e)/d;return n[0]=i*t[0]+c*l[0],n[1]=i*t[1]+c*l[1],n[2]=i*t[2]+c*l[2],n}function h0(n,t,l,s,e,d){const i=d*d,c=i*(2*d-3)+1,o=i*(d-2)+d,X=i*(d-1),a=i*(3-2*d);return n[0]=t[0]*c+l[0]*o+s[0]*X+e[0]*a,n[1]=t[1]*c+l[1]*o+s[1]*X+e[1]*a,n[2]=t[2]*c+l[2]*o+s[2]*X+e[2]*a,n}function r0(n,t,l,s,e,d){const i=1-d,c=i*i,o=d*d,X=c*i,a=3*d*c,u=3*o*i,r=o*d;return n[0]=t[0]*X+l[0]*a+s[0]*u+e[0]*r,n[1]=t[1]*X+l[1]*a+s[1]*u+e[1]*r,n[2]=t[2]*X+l[2]*a+s[2]*u+e[2]*r,n}function Z0(n,t){t=t===void 0?1:t;const l=yt()*2*Math.PI,s=yt()*2-1,e=Math.sqrt(1-s*s)*t;return n[0]=Math.cos(l)*e,n[1]=Math.sin(l)*e,n[2]=s*t,n}function Kn(n,t,l){const s=t[0],e=t[1],d=t[2];let i=l[3]*s+l[7]*e+l[11]*d+l[15];return i=i||1,n[0]=(l[0]*s+l[4]*e+l[8]*d+l[12])/i,n[1]=(l[1]*s+l[5]*e+l[9]*d+l[13])/i,n[2]=(l[2]*s+l[6]*e+l[10]*d+l[14])/i,n}function Dt(n,t,l){const s=t[0],e=t[1],d=t[2];return n[0]=s*l[0]+e*l[3]+d*l[6],n[1]=s*l[1]+e*l[4]+d*l[7],n[2]=s*l[2]+e*l[5]+d*l[8],n}function pl(n,t,l){const s=l[0],e=l[1],d=l[2],i=l[3],c=t[0],o=t[1],X=t[2];let a=e*X-d*o,u=d*c-s*X,r=s*o-e*c,Z=e*r-d*u,G=d*a-s*r,p=s*u-e*a;const m=i*2;return a*=m,u*=m,r*=m,Z*=2,G*=2,p*=2,n[0]=c+a+Z,n[1]=o+u+G,n[2]=X+r+p,n}function ne(n,t,l,s){const e=[],d=[];return e[0]=t[0]-l[0],e[1]=t[1]-l[1],e[2]=t[2]-l[2],d[0]=e[0],d[1]=e[1]*Math.cos(s)-e[2]*Math.sin(s),d[2]=e[1]*Math.sin(s)+e[2]*Math.cos(s),n[0]=d[0]+l[0],n[1]=d[1]+l[1],n[2]=d[2]+l[2],n}function le(n,t,l,s){const e=[],d=[];return e[0]=t[0]-l[0],e[1]=t[1]-l[1],e[2]=t[2]-l[2],d[0]=e[2]*Math.sin(s)+e[0]*Math.cos(s),d[1]=e[1],d[2]=e[2]*Math.cos(s)-e[0]*Math.sin(s),n[0]=d[0]+l[0],n[1]=d[1]+l[1],n[2]=d[2]+l[2],n}function se(n,t,l,s){const e=[],d=[];return e[0]=t[0]-l[0],e[1]=t[1]-l[1],e[2]=t[2]-l[2],d[0]=e[0]*Math.cos(s)-e[1]*Math.sin(s),d[1]=e[0]*Math.sin(s)+e[1]*Math.cos(s),d[2]=e[2],n[0]=d[0]+l[0],n[1]=d[1]+l[1],n[2]=d[2]+l[2],n}function ee(n,t){const l=n[0],s=n[1],e=n[2],d=t[0],i=t[1],c=t[2],o=Math.sqrt((l*l+s*s+e*e)*(d*d+i*i+c*c)),X=o&&At(n,t)/o;return Math.acos(Math.min(Math.max(X,-1),1))}function G0(n){return n[0]=0,n[1]=0,n[2]=0,n}function m0(n){return`vec3(${n[0]}, ${n[1]}, ${n[2]})`}function p0(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]}function W0(n,t){const l=n[0],s=n[1],e=n[2],d=t[0],i=t[1],c=t[2];return Math.abs(l-d)<=F*Math.max(1,Math.abs(l),Math.abs(d))&&Math.abs(s-i)<=F*Math.max(1,Math.abs(s),Math.abs(i))&&Math.abs(e-c)<=F*Math.max(1,Math.abs(e),Math.abs(c))}const V0=Gl,y0=Os,L0=As,x0=qs,K0=_s,de=xn,R0=$s,S0=(function(){const n=rl();return function(t,l,s,e,d,i){let c,o;for(l||(l=3),s||(s=0),e?o=Math.min(e*l+s,t.length):o=t.length,c=s;c<o;c+=l)n[0]=t[c],n[1]=t[c+1],n[2]=t[c+2],d(n,n,i),t[c]=n[0],t[c+1]=n[1],t[c+2]=n[2];return t}})(),z0=Object.freeze(Object.defineProperty({__proto__:null,add:s0,angle:ee,bezier:r0,ceil:e0,clone:t0,copy:n0,create:rl,cross:Tt,dist:x0,distance:qs,div:L0,divide:As,dot:At,equals:W0,exactEquals:p0,floor:d0,forEach:S0,fromValues:Zl,hermite:h0,inverse:ml,len:de,length:xn,lerp:a0,max:c0,min:i0,mul:y0,multiply:Os,negate:X0,normalize:te,random:Z0,rotateX:ne,rotateY:le,rotateZ:se,round:b0,scale:Ds,scaleAndAdd:o0,set:l0,slerp:u0,sqrDist:K0,sqrLen:R0,squaredDistance:_s,squaredLength:$s,str:m0,sub:V0,subtract:Gl,transformMat3:Dt,transformMat4:Kn,transformQuat:pl,zero:G0},Symbol.toStringTag,{value:"Module"})),Wl=[0,0,0];let Rn;class N extends ol{static get ZERO(){return Rn||(Rn=new N(0,0,0),Object.freeze(Rn)),Rn}constructor(t=0,l=0,s=0){super(-0,-0,-0),arguments.length===1&&Vt(t)?this.copy(t):(w.debug&&(f(t),f(l),f(s)),this[0]=t,this[1]=l,this[2]=s)}set(t,l,s){return this[0]=t,this[1]=l,this[2]=s,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return w.debug&&(f(t.x),f(t.y),f(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=f(t)}angle(t){return ee(this,t)}cross(t){return Tt(this,this,t),this.check()}rotateX({radians:t,origin:l=Wl}){return ne(this,this,l,t),this.check()}rotateY({radians:t,origin:l=Wl}){return le(this,this,l,t),this.check()}rotateZ({radians:t,origin:l=Wl}){return se(this,this,l,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return Kn(this,this,t),this.check()}transformAsVector(t){return js(this,this,t),this.check()}transformByMatrix3(t){return Dt(this,this,t),this.check()}transformByMatrix2(t){return _c(this,this,t),this.check()}transformByQuaternion(t){return pl(this,this,t),this.check()}}let Sn;class ut extends ol{static get ZERO(){return Sn||(Sn=new ut(0,0,0,0),Object.freeze(Sn)),Sn}constructor(t=0,l=0,s=0,e=0){super(-0,-0,-0,-0),Vt(t)&&arguments.length===1?this.copy(t):(w.debug&&(f(t),f(l),f(s),f(e)),this[0]=t,this[1]=l,this[2]=s,this[3]=e)}set(t,l,s,e){return this[0]=t,this[1]=l,this[2]=s,this[3]=e,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(t){return w.debug&&(f(t.x),f(t.y),f(t.z),f(t.w)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(t){this[2]=f(t)}get w(){return this[3]}set w(t){this[3]=f(t)}transform(t){return Kn(this,this,t),this.check()}transformByMatrix3(t){return Es(this,this,t),this.check()}transformByMatrix2(t){return $c(this,this,t),this.check()}transformByQuaternion(t){return pl(this,this,t),this.check()}applyMatrix4(t){return t.transform(this,this),this}}let ie=class extends Ln{toString(){let t="[";if(w.printRowMajor){t+="row-major:";for(let l=0;l<this.RANK;++l)for(let s=0;s<this.RANK;++s)t+=` ${this[s*this.RANK+l]}`}else{t+="column-major:";for(let l=0;l<this.ELEMENTS;++l)t+=` ${this[l]}`}return t+="]",t}getElementIndex(t,l){return l*this.RANK+t}getElement(t,l){return this[l*this.RANK+t]}setElement(t,l,s){return this[l*this.RANK+t]=f(s),this}getColumn(t,l=new Array(this.RANK).fill(-0)){const s=t*this.RANK;for(let e=0;e<this.RANK;++e)l[e]=this[s+e];return l}setColumn(t,l){const s=t*this.RANK;for(let e=0;e<this.RANK;++e)this[s+e]=l[e];return this}};function ce(){const n=new B(9);return B!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[5]=0,n[6]=0,n[7]=0),n[0]=1,n[4]=1,n[8]=1,n}function Vl(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[4],n[4]=t[5],n[5]=t[6],n[6]=t[8],n[7]=t[9],n[8]=t[10],n}function M0(n){const t=new B(9);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t}function Y0(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n}function g0(n,t,l,s,e,d,i,c,o){const X=new B(9);return X[0]=n,X[1]=t,X[2]=l,X[3]=s,X[4]=e,X[5]=d,X[6]=i,X[7]=c,X[8]=o,X}function be(n,t,l,s,e,d,i,c,o,X){return n[0]=t,n[1]=l,n[2]=s,n[3]=e,n[4]=d,n[5]=i,n[6]=c,n[7]=o,n[8]=X,n}function T0(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function yl(n,t){if(n===t){const l=t[1],s=t[2],e=t[5];n[1]=t[3],n[2]=t[6],n[3]=l,n[5]=t[7],n[6]=s,n[7]=e}else n[0]=t[0],n[1]=t[3],n[2]=t[6],n[3]=t[1],n[4]=t[4],n[5]=t[7],n[6]=t[2],n[7]=t[5],n[8]=t[8];return n}function zn(n,t){const l=t[0],s=t[1],e=t[2],d=t[3],i=t[4],c=t[5],o=t[6],X=t[7],a=t[8],u=a*i-c*X,r=-a*d+c*o,Z=X*d-i*o;let G=l*u+s*r+e*Z;return G?(G=1/G,n[0]=u*G,n[1]=(-a*s+e*X)*G,n[2]=(c*s-e*i)*G,n[3]=r*G,n[4]=(a*l-e*o)*G,n[5]=(-c*l+e*d)*G,n[6]=Z*G,n[7]=(-X*l+s*o)*G,n[8]=(i*l-s*d)*G,n):null}function C0(n,t){const l=t[0],s=t[1],e=t[2],d=t[3],i=t[4],c=t[5],o=t[6],X=t[7],a=t[8];return n[0]=i*a-c*X,n[1]=e*X-s*a,n[2]=s*c-e*i,n[3]=c*o-d*a,n[4]=l*a-e*o,n[5]=e*d-l*c,n[6]=d*X-i*o,n[7]=s*o-l*X,n[8]=l*i-s*d,n}function qt(n){const t=n[0],l=n[1],s=n[2],e=n[3],d=n[4],i=n[5],c=n[6],o=n[7],X=n[8];return t*(X*d-i*o)+l*(-X*e+i*c)+s*(o*e-d*c)}function Mn(n,t,l){const s=t[0],e=t[1],d=t[2],i=t[3],c=t[4],o=t[5],X=t[6],a=t[7],u=t[8],r=l[0],Z=l[1],G=l[2],p=l[3],m=l[4],W=l[5],L=l[6],V=l[7],y=l[8];return n[0]=r*s+Z*i+G*X,n[1]=r*e+Z*c+G*a,n[2]=r*d+Z*o+G*u,n[3]=p*s+m*i+W*X,n[4]=p*e+m*c+W*a,n[5]=p*d+m*o+W*u,n[6]=L*s+V*i+y*X,n[7]=L*e+V*c+y*a,n[8]=L*d+V*o+y*u,n}function oe(n,t,l){const s=t[0],e=t[1],d=t[2],i=t[3],c=t[4],o=t[5],X=t[6],a=t[7],u=t[8],r=l[0],Z=l[1];return n[0]=s,n[1]=e,n[2]=d,n[3]=i,n[4]=c,n[5]=o,n[6]=r*s+Z*i+X,n[7]=r*e+Z*c+a,n[8]=r*d+Z*o+u,n}function Xe(n,t,l){const s=t[0],e=t[1],d=t[2],i=t[3],c=t[4],o=t[5],X=t[6],a=t[7],u=t[8],r=Math.sin(l),Z=Math.cos(l);return n[0]=Z*s+r*i,n[1]=Z*e+r*c,n[2]=Z*d+r*o,n[3]=Z*i-r*s,n[4]=Z*c-r*e,n[5]=Z*o-r*d,n[6]=X,n[7]=a,n[8]=u,n}function Ll(n,t,l){const s=l[0],e=l[1];return n[0]=s*t[0],n[1]=s*t[1],n[2]=s*t[2],n[3]=e*t[3],n[4]=e*t[4],n[5]=e*t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n}function f0(n,t){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=t[0],n[7]=t[1],n[8]=1,n}function F0(n,t){const l=Math.sin(t),s=Math.cos(t);return n[0]=s,n[1]=l,n[2]=0,n[3]=-l,n[4]=s,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function N0(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=0,n[4]=t[1],n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function H0(n,t){return n[0]=t[0],n[1]=t[1],n[2]=0,n[3]=t[2],n[4]=t[3],n[5]=0,n[6]=t[4],n[7]=t[5],n[8]=1,n}function xl(n,t){const l=t[0],s=t[1],e=t[2],d=t[3],i=l+l,c=s+s,o=e+e,X=l*i,a=s*i,u=s*c,r=e*i,Z=e*c,G=e*o,p=d*i,m=d*c,W=d*o;return n[0]=1-u-G,n[3]=a-W,n[6]=r+m,n[1]=a+W,n[4]=1-X-G,n[7]=Z-p,n[2]=r-m,n[5]=Z+p,n[8]=1-X-u,n}function Kl(n,t){const l=t[0],s=t[1],e=t[2],d=t[3],i=t[4],c=t[5],o=t[6],X=t[7],a=t[8],u=t[9],r=t[10],Z=t[11],G=t[12],p=t[13],m=t[14],W=t[15],L=l*c-s*i,V=l*o-e*i,y=l*X-d*i,S=s*o-e*c,R=s*X-d*c,T=e*X-d*o,Y=a*p-u*G,g=a*m-r*G,z=a*W-Z*G,H=u*m-r*p,J=u*W-Z*p,I=r*W-Z*m;let C=L*I-V*J+y*H+S*z-R*g+T*Y;return C?(C=1/C,n[0]=(c*I-o*J+X*H)*C,n[1]=(o*z-i*I-X*g)*C,n[2]=(i*J-c*z+X*Y)*C,n[3]=(e*J-s*I-d*H)*C,n[4]=(l*I-e*z+d*g)*C,n[5]=(s*z-l*J-d*Y)*C,n[6]=(p*T-m*R+W*S)*C,n[7]=(m*y-G*T-W*V)*C,n[8]=(G*R-p*y+W*L)*C,n):null}function J0(n,t,l){return n[0]=2/t,n[1]=0,n[2]=0,n[3]=0,n[4]=-2/l,n[5]=0,n[6]=-1,n[7]=1,n[8]=1,n}function I0(n){return`mat3(${n[0]}, ${n[1]}, ${n[2]}, ${n[3]}, ${n[4]}, ${n[5]}, ${n[6]}, ${n[7]}, ${n[8]})`}function k0(n){return Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]+n[3]*n[3]+n[4]*n[4]+n[5]*n[5]+n[6]*n[6]+n[7]*n[7]+n[8]*n[8])}function P0(n,t,l){return n[0]=t[0]+l[0],n[1]=t[1]+l[1],n[2]=t[2]+l[2],n[3]=t[3]+l[3],n[4]=t[4]+l[4],n[5]=t[5]+l[5],n[6]=t[6]+l[6],n[7]=t[7]+l[7],n[8]=t[8]+l[8],n}function ae(n,t,l){return n[0]=t[0]-l[0],n[1]=t[1]-l[1],n[2]=t[2]-l[2],n[3]=t[3]-l[3],n[4]=t[4]-l[4],n[5]=t[5]-l[5],n[6]=t[6]-l[6],n[7]=t[7]-l[7],n[8]=t[8]-l[8],n}function Q0(n,t,l){return n[0]=t[0]*l,n[1]=t[1]*l,n[2]=t[2]*l,n[3]=t[3]*l,n[4]=t[4]*l,n[5]=t[5]*l,n[6]=t[6]*l,n[7]=t[7]*l,n[8]=t[8]*l,n}function B0(n,t,l,s){return n[0]=t[0]+l[0]*s,n[1]=t[1]+l[1]*s,n[2]=t[2]+l[2]*s,n[3]=t[3]+l[3]*s,n[4]=t[4]+l[4]*s,n[5]=t[5]+l[5]*s,n[6]=t[6]+l[6]*s,n[7]=t[7]+l[7]*s,n[8]=t[8]+l[8]*s,n}function v0(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]}function w0(n,t){const l=n[0],s=n[1],e=n[2],d=n[3],i=n[4],c=n[5],o=n[6],X=n[7],a=n[8],u=t[0],r=t[1],Z=t[2],G=t[3],p=t[4],m=t[5],W=t[6],L=t[7],V=t[8];return Math.abs(l-u)<=F*Math.max(1,Math.abs(l),Math.abs(u))&&Math.abs(s-r)<=F*Math.max(1,Math.abs(s),Math.abs(r))&&Math.abs(e-Z)<=F*Math.max(1,Math.abs(e),Math.abs(Z))&&Math.abs(d-G)<=F*Math.max(1,Math.abs(d),Math.abs(G))&&Math.abs(i-p)<=F*Math.max(1,Math.abs(i),Math.abs(p))&&Math.abs(c-m)<=F*Math.max(1,Math.abs(c),Math.abs(m))&&Math.abs(o-W)<=F*Math.max(1,Math.abs(o),Math.abs(W))&&Math.abs(X-L)<=F*Math.max(1,Math.abs(X),Math.abs(L))&&Math.abs(a-V)<=F*Math.max(1,Math.abs(a),Math.abs(V))}const U0=Object.freeze(Object.defineProperty({__proto__:null,add:P0,adjoint:C0,clone:M0,copy:Y0,create:ce,determinant:qt,equals:w0,exactEquals:v0,frob:k0,fromMat2d:H0,fromMat4:Vl,fromQuat:xl,fromRotation:F0,fromScaling:N0,fromTranslation:f0,fromValues:g0,identity:T0,invert:zn,mul:Mn,multiply:Mn,multiplyScalar:Q0,multiplyScalarAndAdd:B0,normalFromMat4:Kl,projection:J0,rotate:Xe,scale:Ll,set:be,str:I0,sub:ae,subtract:ae,translate:oe,transpose:yl},Symbol.toStringTag,{value:"Module"}));var Rl;(function(n){n[n.COL0ROW0=0]="COL0ROW0",n[n.COL0ROW1=1]="COL0ROW1",n[n.COL0ROW2=2]="COL0ROW2",n[n.COL1ROW0=3]="COL1ROW0",n[n.COL1ROW1=4]="COL1ROW1",n[n.COL1ROW2=5]="COL1ROW2",n[n.COL2ROW0=6]="COL2ROW0",n[n.COL2ROW1=7]="COL2ROW1",n[n.COL2ROW2=8]="COL2ROW2"})(Rl||(Rl={}));const j0=Object.freeze([1,0,0,0,1,0,0,0,1]);class Xt extends ie{static get IDENTITY(){return O0()}static get ZERO(){return E0()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Rl}constructor(t,...l){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):l.length>0?this.copy([t,...l]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(j0)}fromObject(t){return this.check()}fromQuaternion(t){return xl(this,t),this.check()}set(t,l,s,e,d,i,c,o,X){return this[0]=t,this[1]=l,this[2]=s,this[3]=e,this[4]=d,this[5]=i,this[6]=c,this[7]=o,this[8]=X,this.check()}setRowMajor(t,l,s,e,d,i,c,o,X){return this[0]=t,this[1]=e,this[2]=c,this[3]=l,this[4]=d,this[5]=o,this[6]=s,this[7]=i,this[8]=X,this.check()}determinant(){return qt(this)}transpose(){return yl(this,this),this.check()}invert(){return zn(this,this),this.check()}multiplyLeft(t){return Mn(this,t,this),this.check()}multiplyRight(t){return Mn(this,this,t),this.check()}rotate(t){return Xe(this,this,t),this.check()}scale(t){return Array.isArray(t)?Ll(this,this,t):Ll(this,this,[t,t]),this.check()}translate(t){return oe(this,this,t),this.check()}transform(t,l){let s;switch(t.length){case 2:s=al(l||[-0,-0],t,this);break;case 3:s=Dt(l||[-0,-0,-0],t,this);break;case 4:s=Es(l||[-0,-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return Ot(s,t.length),s}transformVector(t,l){return this.transform(t,l)}transformVector2(t,l){return this.transform(t,l)}transformVector3(t,l){return this.transform(t,l)}}let Yn,gn=null;function E0(){return Yn||(Yn=new Xt([0,0,0,0,0,0,0,0,0]),Object.freeze(Yn)),Yn}function O0(){return gn||(gn=new Xt,Object.freeze(gn)),gn}function A0(){const n=new B(16);return B!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=0,n[12]=0,n[13]=0,n[14]=0),n[0]=1,n[5]=1,n[10]=1,n[15]=1,n}function D0(n){const t=new B(16);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t}function q0(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}function _0(n,t,l,s,e,d,i,c,o,X,a,u,r,Z,G,p){const m=new B(16);return m[0]=n,m[1]=t,m[2]=l,m[3]=s,m[4]=e,m[5]=d,m[6]=i,m[7]=c,m[8]=o,m[9]=X,m[10]=a,m[11]=u,m[12]=r,m[13]=Z,m[14]=G,m[15]=p,m}function $0(n,t,l,s,e,d,i,c,o,X,a,u,r,Z,G,p,m){return n[0]=t,n[1]=l,n[2]=s,n[3]=e,n[4]=d,n[5]=i,n[6]=c,n[7]=o,n[8]=X,n[9]=a,n[10]=u,n[11]=r,n[12]=Z,n[13]=G,n[14]=p,n[15]=m,n}function ue(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function he(n,t){if(n===t){const l=t[1],s=t[2],e=t[3],d=t[6],i=t[7],c=t[11];n[1]=t[4],n[2]=t[8],n[3]=t[12],n[4]=l,n[6]=t[9],n[7]=t[13],n[8]=s,n[9]=d,n[11]=t[14],n[12]=e,n[13]=i,n[14]=c}else n[0]=t[0],n[1]=t[4],n[2]=t[8],n[3]=t[12],n[4]=t[1],n[5]=t[5],n[6]=t[9],n[7]=t[13],n[8]=t[2],n[9]=t[6],n[10]=t[10],n[11]=t[14],n[12]=t[3],n[13]=t[7],n[14]=t[11],n[15]=t[15];return n}function re(n,t){const l=t[0],s=t[1],e=t[2],d=t[3],i=t[4],c=t[5],o=t[6],X=t[7],a=t[8],u=t[9],r=t[10],Z=t[11],G=t[12],p=t[13],m=t[14],W=t[15],L=l*c-s*i,V=l*o-e*i,y=l*X-d*i,S=s*o-e*c,R=s*X-d*c,T=e*X-d*o,Y=a*p-u*G,g=a*m-r*G,z=a*W-Z*G,H=u*m-r*p,J=u*W-Z*p,I=r*W-Z*m;let C=L*I-V*J+y*H+S*z-R*g+T*Y;return C?(C=1/C,n[0]=(c*I-o*J+X*H)*C,n[1]=(e*J-s*I-d*H)*C,n[2]=(p*T-m*R+W*S)*C,n[3]=(r*R-u*T-Z*S)*C,n[4]=(o*z-i*I-X*g)*C,n[5]=(l*I-e*z+d*g)*C,n[6]=(m*y-G*T-W*V)*C,n[7]=(a*T-r*y+Z*V)*C,n[8]=(i*J-c*z+X*Y)*C,n[9]=(s*z-l*J-d*Y)*C,n[10]=(G*R-p*y+W*L)*C,n[11]=(u*y-a*R-Z*L)*C,n[12]=(c*g-i*H-o*Y)*C,n[13]=(l*H-s*g+e*Y)*C,n[14]=(p*V-G*S-m*L)*C,n[15]=(a*S-u*V+r*L)*C,n):null}function tb(n,t){const l=t[0],s=t[1],e=t[2],d=t[3],i=t[4],c=t[5],o=t[6],X=t[7],a=t[8],u=t[9],r=t[10],Z=t[11],G=t[12],p=t[13],m=t[14],W=t[15],L=l*c-s*i,V=l*o-e*i,y=l*X-d*i,S=s*o-e*c,R=s*X-d*c,T=e*X-d*o,Y=a*p-u*G,g=a*m-r*G,z=a*W-Z*G,H=u*m-r*p,J=u*W-Z*p,I=r*W-Z*m;return n[0]=c*I-o*J+X*H,n[1]=e*J-s*I-d*H,n[2]=p*T-m*R+W*S,n[3]=r*R-u*T-Z*S,n[4]=o*z-i*I-X*g,n[5]=l*I-e*z+d*g,n[6]=m*y-G*T-W*V,n[7]=a*T-r*y+Z*V,n[8]=i*J-c*z+X*Y,n[9]=s*z-l*J-d*Y,n[10]=G*R-p*y+W*L,n[11]=u*y-a*R-Z*L,n[12]=c*g-i*H-o*Y,n[13]=l*H-s*g+e*Y,n[14]=p*V-G*S-m*L,n[15]=a*S-u*V+r*L,n}function Ze(n){const t=n[0],l=n[1],s=n[2],e=n[3],d=n[4],i=n[5],c=n[6],o=n[7],X=n[8],a=n[9],u=n[10],r=n[11],Z=n[12],G=n[13],p=n[14],m=n[15],W=t*i-l*d,L=t*c-s*d,V=l*c-s*i,y=X*G-a*Z,S=X*p-u*Z,R=a*p-u*G,T=t*R-l*S+s*y,Y=d*R-i*S+c*y,g=X*V-a*L+u*W,z=Z*V-G*L+p*W;return o*T-e*Y+m*g-r*z}function Tn(n,t,l){const s=t[0],e=t[1],d=t[2],i=t[3],c=t[4],o=t[5],X=t[6],a=t[7],u=t[8],r=t[9],Z=t[10],G=t[11],p=t[12],m=t[13],W=t[14],L=t[15];let V=l[0],y=l[1],S=l[2],R=l[3];return n[0]=V*s+y*c+S*u+R*p,n[1]=V*e+y*o+S*r+R*m,n[2]=V*d+y*X+S*Z+R*W,n[3]=V*i+y*a+S*G+R*L,V=l[4],y=l[5],S=l[6],R=l[7],n[4]=V*s+y*c+S*u+R*p,n[5]=V*e+y*o+S*r+R*m,n[6]=V*d+y*X+S*Z+R*W,n[7]=V*i+y*a+S*G+R*L,V=l[8],y=l[9],S=l[10],R=l[11],n[8]=V*s+y*c+S*u+R*p,n[9]=V*e+y*o+S*r+R*m,n[10]=V*d+y*X+S*Z+R*W,n[11]=V*i+y*a+S*G+R*L,V=l[12],y=l[13],S=l[14],R=l[15],n[12]=V*s+y*c+S*u+R*p,n[13]=V*e+y*o+S*r+R*m,n[14]=V*d+y*X+S*Z+R*W,n[15]=V*i+y*a+S*G+R*L,n}function Ge(n,t,l){const s=l[0],e=l[1],d=l[2];let i,c,o,X,a,u,r,Z,G,p,m,W;return t===n?(n[12]=t[0]*s+t[4]*e+t[8]*d+t[12],n[13]=t[1]*s+t[5]*e+t[9]*d+t[13],n[14]=t[2]*s+t[6]*e+t[10]*d+t[14],n[15]=t[3]*s+t[7]*e+t[11]*d+t[15]):(i=t[0],c=t[1],o=t[2],X=t[3],a=t[4],u=t[5],r=t[6],Z=t[7],G=t[8],p=t[9],m=t[10],W=t[11],n[0]=i,n[1]=c,n[2]=o,n[3]=X,n[4]=a,n[5]=u,n[6]=r,n[7]=Z,n[8]=G,n[9]=p,n[10]=m,n[11]=W,n[12]=i*s+a*e+G*d+t[12],n[13]=c*s+u*e+p*d+t[13],n[14]=o*s+r*e+m*d+t[14],n[15]=X*s+Z*e+W*d+t[15]),n}function me(n,t,l){const s=l[0],e=l[1],d=l[2];return n[0]=t[0]*s,n[1]=t[1]*s,n[2]=t[2]*s,n[3]=t[3]*s,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*d,n[9]=t[9]*d,n[10]=t[10]*d,n[11]=t[11]*d,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}function pe(n,t,l,s){let e=s[0],d=s[1],i=s[2],c=Math.sqrt(e*e+d*d+i*i),o,X,a,u,r,Z,G,p,m,W,L,V,y,S,R,T,Y,g,z,H,J,I,C,D;return c<F?null:(c=1/c,e*=c,d*=c,i*=c,X=Math.sin(l),o=Math.cos(l),a=1-o,u=t[0],r=t[1],Z=t[2],G=t[3],p=t[4],m=t[5],W=t[6],L=t[7],V=t[8],y=t[9],S=t[10],R=t[11],T=e*e*a+o,Y=d*e*a+i*X,g=i*e*a-d*X,z=e*d*a-i*X,H=d*d*a+o,J=i*d*a+e*X,I=e*i*a+d*X,C=d*i*a-e*X,D=i*i*a+o,n[0]=u*T+p*Y+V*g,n[1]=r*T+m*Y+y*g,n[2]=Z*T+W*Y+S*g,n[3]=G*T+L*Y+R*g,n[4]=u*z+p*H+V*J,n[5]=r*z+m*H+y*J,n[6]=Z*z+W*H+S*J,n[7]=G*z+L*H+R*J,n[8]=u*I+p*C+V*D,n[9]=r*I+m*C+y*D,n[10]=Z*I+W*C+S*D,n[11]=G*I+L*C+R*D,t!==n&&(n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15]),n)}function We(n,t,l){const s=Math.sin(l),e=Math.cos(l),d=t[4],i=t[5],c=t[6],o=t[7],X=t[8],a=t[9],u=t[10],r=t[11];return t!==n&&(n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15]),n[4]=d*e+X*s,n[5]=i*e+a*s,n[6]=c*e+u*s,n[7]=o*e+r*s,n[8]=X*e-d*s,n[9]=a*e-i*s,n[10]=u*e-c*s,n[11]=r*e-o*s,n}function Ve(n,t,l){const s=Math.sin(l),e=Math.cos(l),d=t[0],i=t[1],c=t[2],o=t[3],X=t[8],a=t[9],u=t[10],r=t[11];return t!==n&&(n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15]),n[0]=d*e-X*s,n[1]=i*e-a*s,n[2]=c*e-u*s,n[3]=o*e-r*s,n[8]=d*s+X*e,n[9]=i*s+a*e,n[10]=c*s+u*e,n[11]=o*s+r*e,n}function ye(n,t,l){const s=Math.sin(l),e=Math.cos(l),d=t[0],i=t[1],c=t[2],o=t[3],X=t[4],a=t[5],u=t[6],r=t[7];return t!==n&&(n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15]),n[0]=d*e+X*s,n[1]=i*e+a*s,n[2]=c*e+u*s,n[3]=o*e+r*s,n[4]=X*e-d*s,n[5]=a*e-i*s,n[6]=u*e-c*s,n[7]=r*e-o*s,n}function nb(n,t){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n}function lb(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=t[1],n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=t[2],n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function sb(n,t,l){let s=l[0],e=l[1],d=l[2],i=Math.sqrt(s*s+e*e+d*d),c,o,X;return i<F?null:(i=1/i,s*=i,e*=i,d*=i,o=Math.sin(t),c=Math.cos(t),X=1-c,n[0]=s*s*X+c,n[1]=e*s*X+d*o,n[2]=d*s*X-e*o,n[3]=0,n[4]=s*e*X-d*o,n[5]=e*e*X+c,n[6]=d*e*X+s*o,n[7]=0,n[8]=s*d*X+e*o,n[9]=e*d*X-s*o,n[10]=d*d*X+c,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n)}function eb(n,t){const l=Math.sin(t),s=Math.cos(t);return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=s,n[6]=l,n[7]=0,n[8]=0,n[9]=-l,n[10]=s,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function db(n,t){const l=Math.sin(t),s=Math.cos(t);return n[0]=s,n[1]=0,n[2]=-l,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=l,n[9]=0,n[10]=s,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function ib(n,t){const l=Math.sin(t),s=Math.cos(t);return n[0]=s,n[1]=l,n[2]=0,n[3]=0,n[4]=-l,n[5]=s,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function Le(n,t,l){const s=t[0],e=t[1],d=t[2],i=t[3],c=s+s,o=e+e,X=d+d,a=s*c,u=s*o,r=s*X,Z=e*o,G=e*X,p=d*X,m=i*c,W=i*o,L=i*X;return n[0]=1-(Z+p),n[1]=u+L,n[2]=r-W,n[3]=0,n[4]=u-L,n[5]=1-(a+p),n[6]=G+m,n[7]=0,n[8]=r+W,n[9]=G-m,n[10]=1-(a+Z),n[11]=0,n[12]=l[0],n[13]=l[1],n[14]=l[2],n[15]=1,n}function cb(n,t){const l=new B(3),s=-t[0],e=-t[1],d=-t[2],i=t[3],c=t[4],o=t[5],X=t[6],a=t[7],u=s*s+e*e+d*d+i*i;return u>0?(l[0]=(c*i+a*s+o*d-X*e)*2/u,l[1]=(o*i+a*e+X*s-c*d)*2/u,l[2]=(X*i+a*d+c*e-o*s)*2/u):(l[0]=(c*i+a*s+o*d-X*e)*2,l[1]=(o*i+a*e+X*s-c*d)*2,l[2]=(X*i+a*d+c*e-o*s)*2),Le(n,t,l),n}function Sl(n,t){return n[0]=t[12],n[1]=t[13],n[2]=t[14],n}function xe(n,t){const l=t[0],s=t[1],e=t[2],d=t[4],i=t[5],c=t[6],o=t[8],X=t[9],a=t[10];return n[0]=Math.sqrt(l*l+s*s+e*e),n[1]=Math.sqrt(d*d+i*i+c*c),n[2]=Math.sqrt(o*o+X*X+a*a),n}function bb(n,t){const l=new B(3);xe(l,t);const s=1/l[0],e=1/l[1],d=1/l[2],i=t[0]*s,c=t[1]*e,o=t[2]*d,X=t[4]*s,a=t[5]*e,u=t[6]*d,r=t[8]*s,Z=t[9]*e,G=t[10]*d,p=i+a+G;let m=0;return p>0?(m=Math.sqrt(p+1)*2,n[3]=.25*m,n[0]=(u-Z)/m,n[1]=(r-o)/m,n[2]=(c-X)/m):i>a&&i>G?(m=Math.sqrt(1+i-a-G)*2,n[3]=(u-Z)/m,n[0]=.25*m,n[1]=(c+X)/m,n[2]=(r+o)/m):a>G?(m=Math.sqrt(1+a-i-G)*2,n[3]=(r-o)/m,n[0]=(c+X)/m,n[1]=.25*m,n[2]=(u+Z)/m):(m=Math.sqrt(1+G-i-a)*2,n[3]=(c-X)/m,n[0]=(r+o)/m,n[1]=(u+Z)/m,n[2]=.25*m),n}function ob(n,t,l,s){t[0]=s[12],t[1]=s[13],t[2]=s[14];const e=s[0],d=s[1],i=s[2],c=s[4],o=s[5],X=s[6],a=s[8],u=s[9],r=s[10];l[0]=Math.sqrt(e*e+d*d+i*i),l[1]=Math.sqrt(c*c+o*o+X*X),l[2]=Math.sqrt(a*a+u*u+r*r);const Z=1/l[0],G=1/l[1],p=1/l[2],m=e*Z,W=d*G,L=i*p,V=c*Z,y=o*G,S=X*p,R=a*Z,T=u*G,Y=r*p,g=m+y+Y;let z=0;return g>0?(z=Math.sqrt(g+1)*2,n[3]=.25*z,n[0]=(S-T)/z,n[1]=(R-L)/z,n[2]=(W-V)/z):m>y&&m>Y?(z=Math.sqrt(1+m-y-Y)*2,n[3]=(S-T)/z,n[0]=.25*z,n[1]=(W+V)/z,n[2]=(R+L)/z):y>Y?(z=Math.sqrt(1+y-m-Y)*2,n[3]=(R-L)/z,n[0]=(W+V)/z,n[1]=.25*z,n[2]=(S+T)/z):(z=Math.sqrt(1+Y-m-y)*2,n[3]=(W-V)/z,n[0]=(R+L)/z,n[1]=(S+T)/z,n[2]=.25*z),n}function Xb(n,t,l,s){const e=t[0],d=t[1],i=t[2],c=t[3],o=e+e,X=d+d,a=i+i,u=e*o,r=e*X,Z=e*a,G=d*X,p=d*a,m=i*a,W=c*o,L=c*X,V=c*a,y=s[0],S=s[1],R=s[2];return n[0]=(1-(G+m))*y,n[1]=(r+V)*y,n[2]=(Z-L)*y,n[3]=0,n[4]=(r-V)*S,n[5]=(1-(u+m))*S,n[6]=(p+W)*S,n[7]=0,n[8]=(Z+L)*R,n[9]=(p-W)*R,n[10]=(1-(u+G))*R,n[11]=0,n[12]=l[0],n[13]=l[1],n[14]=l[2],n[15]=1,n}function ab(n,t,l,s