1try{!function(){var t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},s=(new t.Error).stack;s&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[s]="24196f41-fb09-434f-85a5-5efe1ec642e2",t._sentryDebugIdIdentifier="sentry-dbid-24196f41-fb09-434f-85a5-5efe1ec642e2")}()}catch(t){}"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7306],{7306:(t,s,e)=>{e.d(s,{Mesh:()=>z,Program:()=>h,Renderer:()=>w,Triangle:()=>Y});let i=1,r={};class h{constructor(t,{vertex:s,fragment:e,uniforms:r={},transparent:h=!1,cullFace:n=t.BACK,frontFace:a=t.CCW,depthTest:o=!0,depthWrite:l=!0,depthFunc:u=t.LEQUAL}={}){t.canvas||console.error("gl not passed as first argument to Program"),this.gl=t,this.uniforms=r,this.id=i++,s||console.warn("vertex shader not supplied"),e||console.warn("fragment shader not supplied"),this.transparent=h,this.cullFace=n,this.frontFace=a,this.depthTest=o,this.depthWrite=l,this.depthFunc=u,this.blendFunc={},this.blendEquation={},this.stencilFunc={},this.stencilOp={},this.transparent&&!this.blendFunc.src&&(this.gl.renderer.premultipliedAlpha?this.setBlendFunc(this.gl.ONE,this.gl.ONE_MINUS_SRC_ALPHA):this.setBlendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA)),this.vertexShader=t.createShader(t.VERTEX_SHADER),this.fragmentShader=t.createShader(t.FRAGMENT_SHADER),this.program=t.createProgram(),t.attachShader(this.program,this.vertexShader),t.attachShader(this.program,this.fragmentShader),this.setShaders({vertex:s,fragment:e})}setShaders({vertex:t,fragment:s}){if(t&&(this.gl.shaderSource(this.vertexShader,t),this.gl.compileShader(this.vertexShader),""!==this.gl.getShaderInfoLog(this.vertexShader)&&console.warn(`${this.gl.getShaderInfoLog(this.vertexShader)} 2Vertex Shader 3${a(t)}`)),s&&(this.gl.shaderSource(this.fragmentShader,s),this.gl.compileShader(this.fragmentShader),""!==this.gl.getShaderInfoLog(this.fragmentShader)&&console.warn(`${this.gl.getShaderInfoLog(this.fragmentShader)} 4Fragment Shader 5${a(s)}`)),this.gl.linkProgram(this.program),!this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS))return console.warn(this.gl.getProgramInfoLog(this.program));this.uniformLocations=new Map;let e=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_UNIFORMS);for(let t=0;t<e;t++){let s=this.gl.getActiveUniform(this.program,t);this.uniformLocations.set(s,this.gl.getUniformLocation(this.program,s.name));let e=s.name.match(/(\w+)/g);s.uniformName=e[0],s.nameComponents=e.slice(1)}this.attributeLocations=new Map;let i=[],r=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_ATTRIBUTES);for(let t=0;t<r;t++){let s=this.gl.getActiveAttrib(this.program,t),e=this.gl.getAttribLocation(this.program,s.name);-1!==e&&(i[e]=s.name,this.attributeLocations.set(s,e))}this.attributeOrder=i.join("")}setBlendFunc(t,s,e,i){this.blendFunc.src=t,this.blendFunc.dst=s,this.blendFunc.srcAlpha=e,this.blendFunc.dstAlpha=i,t&&(this.transparent=!0)}setBlendEquation(t,s){this.blendEquation.modeRGB=t,this.blendEquation.modeAlpha=s}setStencilFunc(t,s,e){this.stencilRef=s,this.stencilFunc.func=t,this.stencilFunc.ref=s,this.stencilFunc.mask=e}setStencilOp(t,s,e){this.stencilOp.stencilFail=t,this.stencilOp.depthFail=s,this.stencilOp.depthPass=e}applyState(){this.depthTest?this.gl.renderer.enable(this.gl.DEPTH_TEST):this.gl.renderer.disable(this.gl.DEPTH_TEST),this.cullFace?this.gl.renderer.enable(this.gl.CULL_FACE):this.gl.renderer.disable(this.gl.CULL_FACE),this.blendFunc.src?this.gl.renderer.enable(this.gl.BLEND):this.gl.renderer.disable(this.gl.BLEND),this.cullFace&&this.gl.renderer.setCullFace(this.cullFace),this.gl.renderer.setFrontFace(this.frontFace),this.gl.renderer.setDepthMask(this.depthWrite),this.gl.renderer.setDepthFunc(this.depthFunc),this.blendFunc.src&&this.gl.renderer.setBlendFunc(this.blendFunc.src,this.blendFunc.dst,this.blendFunc.srcAlpha,this.blendFunc.dstAlpha),this.gl.renderer.setBlendEquation(this.blendEquation.modeRGB,this.blendEquation.modeAlpha),this.stencilFunc.func||this.stencilOp.stencilFail?this.gl.renderer.enable(this.gl.STENCIL_TEST):this.gl.renderer.disable(this.gl.STENCIL_TEST),this.gl.renderer.setStencilFunc(this.stencilFunc.func,this.stencilFunc.ref,this.stencilFunc.mask),this.gl.renderer.setStencilOp(this.stencilOp.stencilFail,this.stencilOp.depthFail,this.stencilOp.depthPass)}use({flipFaces:t=!1}={}){let s=-1;this.gl.renderer.state.currentProgram!==this.id&&(this.gl.useProgram(this.program),this.gl.renderer.state.currentProgram=this.id
5),this.uniformLocations.forEach((t,e)=>{let i=this.uniforms[e.uniformName];for(let t of e.nameComponents){if(!i)break;if(t in i)i=i[t];else if(Array.isArray(i.value))break;else{i=void 0;break}}if(!i)return l(`Active uniform ${e.name} has not been supplied`);if(i&&void 0===i.value)return l(`${e.name} uniform is missing a value parameter`);if(i.value.texture)return s+=1,i.value.update(s),n(this.gl,e.type,t,s);if(i.value.length&&i.value[0].texture){let r=[];return i.value.forEach(t=>{s+=1,t.update(s),r.push(s)}),n(this.gl,e.type,t,r)}n(this.gl,e.type,t,i.value)}),this.applyState(),t&&this.gl.renderer.setFrontFace(this.frontFace===this.gl.CCW?this.gl.CW:this.gl.CCW)}remove(){this.gl.deleteProgram(this.program)}}function n(t,s,e,i){i=i.length?function(t){let s=t.length,e=t[0].length;if(void 0===e)return t;let i=s*e,h=r[i];h||(r[i]=h=new Float32Array(i));for(let i=0;i<s;i++)h.set(t[i],i*e);return h}(i):i;let h=t.renderer.state.uniformLocations.get(e);if(i.length)if(void 0===h||h.length!==i.length)t.renderer.state.uniformLocations.set(e,i.slice(0));else{if(function(t,s){if(t.length!==s.length)return!1;for(let e=0,i=t.length;e<i;e++)if(t[e]!==s[e])return!1;return!0}(h,i))return;h.set?h.set(i):function(t,s){for(let e=0,i=t.length;e<i;e++)t[e]=s[e]}(h,i),t.renderer.state.uniformLocations.set(e,h)}else{if(h===i)return;t.renderer.state.uniformLocations.set(e,i)}switch(s){case 5126:return i.length?t.uniform1fv(e,i):t.uniform1f(e,i);case 35664:return t.uniform2fv(e,i);case 35665:return t.uniform3fv(e,i);case 35666:return t.uniform4fv(e,i);case 35670:case 5124:case 35678:case 36306:case 35680:case 36289:return i.length?t.uniform1iv(e,i):t.uniform1i(e,i);case 35671:case 35667:return t.uniform2iv(e,i);case 35672:case 35668:return t.uniform3iv(e,i);case 35673:case 35669:return t.uniform4iv(e,i);case 35674:return t.uniformMatrix2fv(e,!1,i);case 35675:return t.uniformMatrix3fv(e,!1,i);case 35676:return t.uniformMatrix4fv(e,!1,i)}}function a(t){let s=t.split("\n");for(let t=0;t<s.length;t++)s[t]=t+1+": "+s[t];return s.join("\n")}let o=0;function l(t){!(o>100)&&(console.warn(t),++o>100&&console.warn("More than 100 program warnings - stopping logs."))}function u(t){let s=t[0],e=t[1],i=t[2];return Math.sqrt(s*s+e*e+i*i)}function d(t,s){return t[0]=s[0],t[1]=s[1],t[2]=s[2],t}function c(t,s,e){return t[0]=s[0]+e[0],t[1]=s[1]+e[1],t[2]=s[2]+e[2],t}function g(t,s,e){return t[0]=s[0]-e[0],t[1]=s[1]-e[1],t[2]=s[2]-e[2],t}function f(t,s,e){return t[0]=s[0]*e,t[1]=s[1]*e,t[2]=s[2]*e,t}function p(t){let s=t[0],e=t[1],i=t[2];return s*s+e*e+i*i}function m(t,s){let e=s[0],i=s[1],r=s[2],h=e*e+i*i+r*r;return h>0&&(h=1/Math.sqrt(h)),t[0]=s[0]*h,t[1]=s[1]*h,t[2]=s[2]*h,t}function x(t,s){return t[0]*s[0]+t[1]*s[1]+t[2]*s[2]}function b(t,s,e){let i=s[0],r=s[1],h=s[2],n=e[0],a=e[1],o=e[2];return t[0]=r*o-h*a,t[1]=h*n-i*o,t[2]=i*a-r*n,t}let M=function(){let t=[0,0,0],s=[0,0,0];return function(e,i){d(t,e),d(s,i),m(t,t),m(s,s);let r=x(t,s);return r>1?0:r<-1?Math.PI:Math.acos(r)}}();class _ extends Array{constructor(t=0,s=t,e=t){return super(t,s,e),this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this[0]=t}set y(t){this[1]=t}set z(t){this[2]=t}set(t,s=t,e=t){return t.length?this.copy(t):(this[0]=t,this[1]=s,this[2]=e,this)}copy(t){return d(this,t),this}add(t,s){return s?c(this,t,s):c(this,this,t),this}sub(t,s){return s?g(this,t,s):g(this,this,t),this}multiply(t){if(t.length)this[0]=this[0]*t[0],this[1]=this[1]*t[1],this[2]=this[2]*t[2];else f(this,this,t);return this}divide(t){if(t.length)this[0]=this[0]/t[0],this[1]=this[1]/t[1],this[2]=this[2]/t[2];else f(this,this,1/t);return this}inverse(t=this){return this[0]=1/t[0],this[1]=1/t[1],this[2]=1/t[2],this}len(){return u(this)}distance(t){let s,e,i;if(!t)return u(this);return s=t[0]-this[0],Math.sqrt(s*s+(e=t[1]-this[1])*e+(i=t[2]-this[2])*i)}squaredLen(){return p(this)}squaredDistance(t){let s,e,i;if(!t)return p(this);return s=t[0]-this[0],s*s+(e=t[1]-this[1])*e+(i=t[2]-this[2])*i}negate(t=this){return this[0]=-t[0],this[1]=-t[1],this[2]=-t[2],this}cross(t,s){return s?b(this,t,s):b(this,this,t),this}scale(t){return f(this,this,t),this}normalize(){return m(this,this),this}dot(t){return x(this,t)}equals(t){return this[0]===t[0]&&this[1]===t[1]&&this[2]===t[2]}applyMatrix3(t){let s,e,i;return s=this[0],e=this[1],i=this[2],this[0]=s*t[0]+e*t[3]+i*t[6],this[1]=s*t[1]+e*t[4]+i*t[7],this[2]=s*t[2]+e*t[5]+i*t[8],this}applyMatrix4(t){let s,e,i,r;return s=this[0],e=this[1],i=this[2],r=(r=t[3]*s+t[7]*e+t[11]*i+t[15])||1,this[0]=(t[0]*s+t[4]*e+t[8]*i+t[12])/r,this[1]=(t[1]*s+t[5]*e+t[9]*i+t[13])/r,this[2]=(t[2]*s+t[6]*e+t[10]*i+t[14])/r,this}scaleRotateMatrix4(t){let s,e,i,r;return s=this[0],e=this[1],i=this[2],r=(r=t[3]*s+t[7]*e+t[11]*i+t[15])||1,this[0]=(t[0]*s+t[4]*e+t[8]*i)/r,this[1]=(t[1]*s+t[5]*e+t[9]*i)/r,this[2]=(t[2]*s+t[6]*e+t[10]*i)/r,this}applyQuaternion(t){let s,e,i,r,h,n,a,o,l,u,d,c,g,f;return s=this[0],e=this[1],i=this[2],r=t[0],h=t[1],n=t[2],a=t[3],o=h*i-n*e,l=n*s-r*i,u=r*e-h*s,d=h*u-n*l,c=n*o-r*u,g=r*l-h*o,o*=f=2*a,l*=f,u*=f,d*=2,c*=2,g*=2,this[0]=s+o+d,this[1]=e+l+c,this[2]=i+u+g,this}angle(t){return M(this,t)}lerp(t,s){let e,i,r;return e=this[0],i=this[1],r=this[2],this[0]=e+s*(t[0]-e),this[1]=i+s*(t[1]-i),this[2]=r+s*(t[2]-r),this}smoothLerp(t,s,e){return!function(t,s,e,i,r){let h=Math.exp(-i*r),n=s[0],a=s[1],o=s[2];t[0]=e[0]+(n-e[0])*h,t[1]=e[1]+(a-e[1])*h,t[2]=e[2]+(o-e[2])*h}(this,this,t,s,e),this}clone(){return new _(this[0],this[1],this[2])}fromArray(t,s=0){return this[0]=t[s],this[1]=t[s+1],this[2]=t[s+2],this}toArray(t=[],s=0){return t[s]=this[0],t[s+1]=this[1],t[s+2]=this[2],t}transformDirection(t){let s=this[0],e=this[1],i=this[2];return this[0]=t[0]*s+t[4]*e+t[8]*i,this[1]=t[1]*s+t[5]*e+t[9]*i,this[2]=t[2]*s+t[6]*e+t[10]*i,this.normalize()}}let E=new _,A=1;class w{constructor({canvas:t=document.createElement("canvas"),width:s=300,height:e=150,dpr:i=1,alpha:r=!1,depth:h=!0,stencil:n=!1,antialias:a=!1,premultipliedAlpha:o=!1,preserveDrawingBuffer:l=!1,powerPreference:u="default",autoClear:d=!0,webgl:c=2}={}){let g={alpha:r,depth:h,stencil:n,antialias:a,premultipliedAlpha:o,preserveDrawingBuffer:l,powerPreference:u};this.dpr=i,this.alpha=r,this.color=!0,this.depth=h,this.stencil=n,this.premultipliedAlpha=o,this.autoClear=d,this.id=A++,2===c&&(this.gl=t.getContext("webgl2",g)),this.isWebgl2=!!this.gl,this.gl||(this.gl=t.getContext("webgl",g)),this.gl||console.error("unable to create webgl context"),this.gl.renderer=this,this.setSize(s,e),this.state={},this.state.blendFunc={src:this.gl.ONE,dst:this.gl.ZERO},this.state.blendEquation={modeRGB:this.gl.FUNC_ADD},this.state.cullFace=!1,this.state.frontFace=this.gl.CCW,this.state.depthMask=!0,this.state.depthFunc=this.gl.LEQUAL,this.state.premultiplyAlpha=!1,this.state.flipY=!1,this.state.unpackAlignment=4,this.state.framebuffer=null,this.state.viewport={x:0,y:0,width:null,height:null},this.state.textureUnits=[],this.state.activeTextureUnit=0,this.state.boundBuffer=null,this.state.uniformLocations=new Map,this.state.currentProgram=null,this.extensions={},this.isWebgl2?(this.getExtension("EXT_color_buffer_float"),this.getExtension("OES_texture_float_linear")):(this.getExtension("OES_texture_float"),this.getExtension("OES_texture_float_linear"),this.getExtension("OES_texture_half_float"),this.getExtension("OES_texture_half_float_linear"),this.getExtension("OES_element_index_uint"),this.getExtension("OES_standard_derivatives"),this.getExtension("EXT_sRGB"),this.getExtension("WEBGL_depth_texture"),this.getExtension("WEBGL_draw_buffers")),this.getExtension("WEBGL_compressed_texture_astc"),this.getExtension("EXT_texture_compression_bptc"),this.getExtension("WEBGL_compressed_texture_s3tc"),this.getExtension("WEBGL_compressed_texture_etc1"),this.getExtension("WEBGL_compressed_texture_pvrtc"),this.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),this.vertexAttribDivisor=this.getExtension("ANGLE_instanced_arrays","vertexAttribDivisor","vertexAttribDivisorANGLE"),this.drawArraysInstanced=this.getExtension("ANGLE_instanced_arrays","drawArraysInstanced","drawArraysInstancedANGLE"),this.drawElementsInstanced=this.getExtension("ANGLE_instanced_arrays","drawElementsInstanced","drawElementsInstancedANGLE"),this.createVertexArray=this.getExtension("OES_vertex_array_object","createVertexArray","createVertexArrayOES"),this.bindVertexArray=this.getExtension("OES_vertex_array_object","bindVertexArray","bindVertexArrayOES"),this.deleteVertexArray=this.getExtension("OES_vertex_array_object","deleteVertexArray","deleteVertexArrayOES"),this.drawBuffers=this.getExtension("WEBGL_draw_buffers","drawBuffers","drawBuffersWEBGL"),this.parameters={},this.parameters.maxTextureUnits=this.gl.getParameter(this.gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),this.parameters.maxAnisotropy=this.getExtension("EXT_texture_filter_anisotropic")?this.gl.getParameter(this.getExtension("EXT_texture_filter_anisotropic").MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}setSize(t,s){this.width=t,this.height=s,this.gl.canvas.width=t*this.dpr,this.gl.canvas.height=s*this.dpr,this.gl.canvas.style&&Object.assign(this.gl.canvas.style,{width:t+"px",height:s+"px"})}setViewport(t,s,e=0,i=0){(this.state.viewport.width!==t||this.state.viewport.height!==s)&&(this.state.viewport.width=t,this.state.viewport.height=s,this.state.viewport.x=e,this.state.viewport.y=i,this.gl.viewport(e,i,t,s))}setScissor(t,s,e=0,i=0){this.gl.scissor(e,i,t,s)}enable(t){!0!==this.state[t]&&(this.gl.enable(t),this.state[t]=!0)}disable(t){!1!==this.state[t]&&(this.gl.disable(t),this.state[t]=!1)}setBlendFunc(t,s,e,i){(this.state.blendFunc.src!==t||this.state.blendFunc.dst!==s||this.state.blendFunc.srcAlpha!==e||this.state.blendFunc.dstAlpha!==i)&&(this.state.blendFunc.src=t,this.state.blendFunc.dst=s,this.state.blendFunc.srcAlpha=e,this.state.blendFunc.dstAlpha=i,void 0!==e?this.gl.blendFuncSeparate(t,s,e,i):this.gl.blendFunc(t,s))}setBlendEquation(t,s){t=t||this.gl.FUNC_ADD,(this.state.blendEquation.modeRGB!==t||this.state.blendEquation.modeAlpha!==s)&&(this.state.blendEquation.modeRGB=t,this.state.blendEquation.modeAlpha=s,void 0!==s?this.gl.blendEquationSeparate(t,s):this.gl.blendEquation(t))}setCullFace(t){this.state.cullFace!==t&&(this.state.cullFace=t,this.gl.cullFace(t))}setFrontFace(t){this.state.frontFace!==t&&(this.state.frontFace=t,this.gl.frontFace(t))}setDepthMask(t){this.state.depthMask!==t&&(this.state.depthMask=t,this.gl.depthMask(t))}setDepthFunc(t){this.state.depthFunc!==t&&(this.state.depthFunc=t,this.gl.depthFunc(t))}setStencilMask(t){this.state.stencilMask!==t&&(this.state.stencilMask=t,this.gl.stencilMask(t))}setStencilFunc(t,s,e){(this.state.stencilFunc!==t||this.state.stencilRef!==s||this.state.stencilFuncMask!==e)&&(this.state.stencilFunc=t||this.gl.ALWAYS,this.state.stencilRef=s||0,this.state.stencilFuncMask=e||0,this.gl.stencilFunc(t||this.gl.ALWAYS,s||0,e||0))}setStencilOp(t,s,e){(this.state.stencilFail!==t||this.state.stencilDepthFail!==s||this.state.stencilDepthPass!==e)&&(this.state.stencilFail=t,this.state.stencilDepthFail=s,this.state.stencilDepthPass=e,this.gl.stencilOp(t,s,e))}activeTexture(t){this.state.activeTextureUnit!==t&&(this.state.activeTextureUnit=t,this.gl.activeTexture(this.gl.TEXTURE0+t))}bindFramebuffer({target:t=this.gl.FRAMEBUFFER,buffer:s=null}={}){this.state.framebuffer!==s&&(this.state.framebuffer=s,this.gl.bindFramebuffer(t,s))}getExtension(t,s,e){return s&&this.gl[s]?this.gl[s].bind(this.gl):(this.extensions[t]||(this.extensions[t]=this.gl.getExtension(t)),s)?this.extensions[t]?this.extensions[t][e].bind(this.extensions[t]):null:this.extensions[t]}sortOpaque(t,s){return t.renderOrder!==s.renderOrder?t.renderOrder-s.renderOrder:t.program.id!==s.program.id?t.program.id-s.program.id:t.zDepth!==s.zDepth?t.zDepth-s.zDepth:s.id-t.id}
5sortTransparent(t,s){return t.renderOrder!==s.renderOrder?t.renderOrder-s.renderOrder:t.zDepth!==s.zDepth?s.zDepth-t.zDepth:s.id-t.id}sortUI(t,s){return t.renderOrder!==s.renderOrder?t.renderOrder-s.renderOrder:t.program.id!==s.program.id?t.program.id-s.program.id:s.id-t.id}getRenderList({scene:t,camera:s,frustumCull:e,sort:i}){let r=[];if(s&&e&&s.updateFrustum(),t.traverse(t=>{if(!t.visible)return!0;t.draw&&(!e||!t.frustumCulled||!s||s.frustumIntersectsMesh(t))&&r.push(t)}),i){let t=[],e=[],i=[];r.forEach(r=>{r.program.transparent?r.program.depthTest?e.push(r):i.push(r):t.push(r),r.zDepth=0,0===r.renderOrder&&r.program.depthTest&&s&&(r.worldMatrix.getTranslation(E),E.applyMatrix4(s.projectionViewMatrix),r.zDepth=E.z)}),t.sort(this.sortOpaque),e.sort(this.sortTransparent),i.sort(this.sortUI),r=t.concat(e,i)}return r}render({scene:t,camera:s,target:e=null,update:i=!0,sort:r=!0,frustumCull:h=!0,clear:n}){null===e?(this.bindFramebuffer(),this.setViewport(this.width*this.dpr,this.height*this.dpr)):(this.bindFramebuffer(e),this.setViewport(e.width,e.height)),(n||this.autoClear&&!1!==n)&&(this.depth&&(!e||e.depth)&&(this.enable(this.gl.DEPTH_TEST),this.setDepthMask(!0)),(this.stencil||!e||e.stencil)&&(this.enable(this.gl.STENCIL_TEST),this.setStencilMask(255)),this.gl.clear((this.color?this.gl.COLOR_BUFFER_BIT:0)|(this.depth?this.gl.DEPTH_BUFFER_BIT:0)|(this.stencil?this.gl.STENCIL_BUFFER_BIT:0))),i&&t.updateMatrixWorld(),s&&s.updateMatrixWorld(),this.getRenderList({scene:t,camera:s,frustumCull:h,sort:r}).forEach(t=>{t.draw({camera:s})})}}function v(t,s,e){let i=s[0],r=s[1],h=s[2],n=s[3],a=e[0],o=e[1],l=e[2],u=e[3];return t[0]=i*u+n*a+r*l-h*o,t[1]=r*u+n*o+h*a-i*l,t[2]=h*u+n*l+i*o-r*a,t[3]=n*u-i*a-r*o-h*l,t}let y=function(t,s){let e=s[0],i=s[1],r=s[2],h=s[3],n=e*e+i*i+r*r+h*h;return n>0&&(n=1/Math.sqrt(n)),t[0]=e*n,t[1]=i*n,t[2]=r*n,t[3]=h*n,t};class F extends Array{constructor(t=0,s=0,e=0,i=1){super(t,s,e,i),this.onChange=()=>{},this._target=this;let r=["0","1","2","3"];return new Proxy(this,{set(t,s){let e=Reflect.set(...arguments);return e&&r.includes(s)&&t.onChange(),e}}
5)}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}get w(){return this[3]}set x(t){this._target[0]=t,this.onChange()}set y(t){this._target[1]=t,this.onChange()}set z(t){this._target[2]=t,this.onChange()}set w(t){this._target[3]=t,this.onChange()}identity(){var t;return(t=this._target)[0]=0,t[1]=0,t[2]=0,t[3]=1,this.onChange(),this}set(t,s,e,i){var r;return t.length?this.copy(t):(r=this._target,r[0]=t,r[1]=s,r[2]=e,r[3]=i,this.onChange(),this)}rotateX(t){var s,e,i;let r,h,n,a,o,l;return s=this._target,e=this._target,i=.5*t,r=e[0],h=e[1],n=e[2],a=e[3],o=Math.sin(i),l=Math.cos(i),s[0]=r*l+a*o,s[1]=h*l+n*o,s[2]=n*l-h*o,s[3]=a*l-r*o,this.onChange(),this}rotateY(t){var s,e,i;let r,h,n,a,o,l;return s=this._target,e=this._target,i=.5*t,r=e[0],h=e[1],n=e[2],a=e[3],o=Math.sin(i),l=Math.cos(i),s[0]=r*l-n*o,s[1]=h*l+a*o,s[2]=n*l+r*o,s[3]=a*l-h*o,this.onChange(),this}rotateZ(t){var s,e,i;let r,h,n,a,o,l;return s=this._target,e=this._target,i=.5*t,r=e[0],h=e[1],n=e[2],a=e[3],o=Math.sin(i),l=Math.cos(i),s[0]=r*l+h*o,s[1]=h*l-r*o,s[2]=n*l+a*o,s[3]=a*l-n*o,this.onChange(),this}inverse(t=this._target){var s;let e,i,r,h,n,a;return s=this._target,e=t[0],i=t[1],a=(n=e*e+i*i+(r=t[2])*r+(h=t[3])*h)?1/n:0,s[0]=-e*a,s[1]=-i*a,s[2]=-r*a,s[3]=h*a,this.onChange(),this}conjugate(t=this._target){var s;return s=this._target,s[0]=-t[0],s[1]=-t[1],s[2]=-t[2],s[3]=t[3],this.onChange(),this}copy(t){var s;return s=this._target,s[0]=t[0],s[1]=t[1],s[2]=t[2],s[3]=t[3],this.onChange(),this}normalize(t=this._target){return y(this._target,t),this.onChange(),this}multiply(t,s){return s?v(this._target,t,s):v(this._target,this._target,t),this.onChange(),this}dot(t){var s;return s=this._target,s[0]*t[0]+s[1]*t[1]+s[2]*t[2]+s[3]*t[3]}fromMatrix3(t){return!function(t,s){let e,i=s[0]+s[4]+s[8];if(i>0)e=Math.sqrt(i+1),t[3]=.5*e,e=.5/e,t[0]=(s[5]-s[7])*e,t[1]=(s[6]-s[2])*e,t[2]=(s[1]-s[3])*e;else{let i=0;s[4]>s[0]&&(i=1),s[8]>s[3*i+i]&&(i=2);let r=(i+1)%3,h=(i+2)%3;e=Math.sqrt(s[3*i+i]-s[3*r+r]-s[3*h+h]+1),t[i]=.5*e,e=.5/e,t[3]=(s[3*r+h]-s[3*h+r])*e,t[r]=(s[3*r+i]+s[3*i+r])*e,t[h]=(s[3*h+i]+s[3*i+h])*e}}(this._target,t),this.onChange(),this}fromEuler(t,s){return!function(t,s,e="YXZ"){let i=Math.sin(.5*s[0]),r=Math.cos(.5*s[0]),h=Math.sin(.5*s[1]),n=Math.cos(.5*s[1]),a=Math.sin(.5*s[2]),o=Math.cos(.5*s[2]);"XYZ"===e?(t[0]=i*n*o+r*h*a,t[1]=r*h*o-i*n*a,t[2]=r*n*a+i*h*o,t[3]=r*n*o-i*h*a):"YXZ"===e?(t[0]=i*n*o+r*h*a,t[1]=r*h*o-i*n*a,t[2]=r*n*a-i*h*o,t[3]=r*n*o+i*h*a):"ZXY"===e?(t[0]=i*n*o-r*h*a,t[1]=r*h*o+i*n*a,t[2]=r*n*a+i*h*o,t[3]=r*n*o-i*h*a):"ZYX"===e?(t[0]=i*n*o-r*h*a,t[1]=r*h*o+i*n*a,t[2]=r*n*a-i*h*o,t[3]=r*n*o+i*h*a):"YZX"===e?(t[0]=i*n*o+r*h*a,t[1]=r*h*o+i*n*a,t[2]=r*n*a-i*h*o,t[3]=r*n*o-i*h*a):"XZY"===e&&(t[0]=i*n*o-r*h*a,t[1]=r*h*o-i*n*a,t[2]=r*n*a+i*h*o,t[3]=r*n*o+i*h*a)}(this._target,t,t.order),s||this.onChange(),this}fromAxisAngle(t,s){var e,i;let r;return e=this._target,r=Math.sin(i=.5*s),e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=Math.cos(i),this.onChange(),this}slerp(t,s){var e,i;let r,h,n,a,o,l,u,d,c,g,f,p,m;return e=this._target,i=this._target,l=i[0],u=i[1],d=i[2],c=i[3],g=t[0],f=t[1],(h=l*g+u*f+d*(p=t[2])+c*(m=t[3]))<0&&(h=-h,g=-g,f=-f,p=-p,m=-m),1-h>1e-6?(n=Math.sin(r=Math.acos(h)),a=Math.sin((1-s)*r)/n,o=Math.sin(s*r)/n):(a=1-s,o=s),e[0]=a*l+o*g,e[1]=a*u+o*f,e[2]=a*d+o*p,e[3]=a*c+o*m,this.onChange(),this}fromArray(t,s=0){return this._target[0]=t[s],this._target[1]=t[s+1],this._target[2]=t[s+2],this._target[3]=t[s+3],this.onChange(),this}toArray(t=[],s=0){return t[s]=this[0],t[s+1]=this[1],t[s+2]=this[2],t[s+3]=this[3],t}}function S(t){let s=t[0],e=t[1],i=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],l=t[8],u=t[9],d=t[10],c=t[11],g=t[12],f=t[13],p=t[14],m=t[15];return(s*n-e*h)*(d*m-c*p)-(s*a-i*h)*(u*m-c*f)+(s*o-r*h)*(u*p-d*f)+(e*a-i*n)*(l*m-c*g)-(e*o-r*n)*(l*p-d*g)+(i*o-r*a)*(l*f-u*g)}function C(t,s,e){let i=s[0],r=s[1],h=s[2],n=s[3],a=s[4],o=s[5],l=s[6],u=s[7],d=s[8],c=s[9],g=s[10],f=s[11],p=s[12],m=s[13],x=s[14],b=s[15],M=e[0],_=e[1],E=e[2],A=e[3];return t[0]=M*i+_*a+E*d+A*p,t[1]=M*r+_*o+E*c+A*m,t[2]=M*h+_*l+E*g+A*x,t[3]=M*n+_*u+E*f+A*b,M=e[4],_=e[5],E=e[6],A=e[7],t[4]=M*i+_*a+E*d+A*p,t[5]=M*r+_*o+E*c+A*m,t[6]=M*h+_*l+E*g+A*x,t[7]=M*n+_*u+E*f+A*b,M=e[8],_=e[9],E=e[10],A=e[11],t[8]=M*i+_*a+E*d+A*p,t[9]=M*r+_*o+E*c+A*m,t[10]=M*h+_*l+E*g+A*x,t[11]=M*n+_*u+E*f+A*b,M=e[12],_=e[13],E=e[14],A=e[15],t[12]=M*i+_*a+E*d+A*p,t[13]=M*r+_*o+E*c+A*m,t[14]=M*h+_*l+E*g+A*x,t[15]=M*n+_*u+E*f+A*b,t}function O(t,s){let e=s[0],i=s[1],r=s[2],h=s[4],n=s[5],a=s[6],o=s[8],l=s[9],u=s[10];return t[0]=Math.hypot(e,i,r),t[1]=Math.hypot(h,n,a),t[2]=Math.hypot(o,l,u),t}let R=function(){let t=[1,1,1];return function(s,e){O(t,e);let i=1/t[0],r=1/t[1],h=1/t[2],n=e[0]*i,a=e[1]*r,o=e[2]*h,l=e[4]*i,u=e[5]*r,d=e[6]*h,c=e[8]*i,g=e[9]*r,f=e[10]*h,p=n+u+f,m=0;return p>0?(m=2*Math.sqrt(p+1),s[3]=.25*m,s[0]=(d-g)/m,s[1]=(c-o)/m,s[2]=(a-l)/m):n>u&&n>f?(m=2*Math.sqrt(1+n-u-f),s[3]=(d-g)/m,s[0]=.25*m,s[1]=(a+l)/m,s[2]=(c+o)/m):u>f?(m=2*Math.sqrt(1+u-n-f),s[3]=(c-o)/m,s[0]=(a+l)/m,s[1]=.25*m,s[2]=(d+g)/m):(m=2*Math.sqrt(1+f-n-u),s[3]=(a-l)/m,s[0]=(c+o)/m,s[1]=(d+g)/m,s[2]=.25*m),s}}();function T(t,s,e){return t[0]=s[0]+e[0],t[1]=s[1]+e[1],t[2]=s[2]+e[2],t[3]=s[3]+e[3],t[4]=s[4]+e[4],t[5]=s[5]+e[5],t[6]=s[6]+e[6],t[7]=s[7]+e[7],t[8]=s[8]+e[8],t[9]=s[9]+e[9],t[10]=s[10]+e[10],t[11]=s[11]+e[11],t[12]=s[12]+e[12],t[13]=s[13]+e[13],t[14]=s[14]+e[14],t[15]=s[15]+e[15],t}
5function L(t,s,e){return t[0]=s[0]-e[0],t[1]=s[1]-e[1],t[2]=s[2]-e[2],t[3]=s[3]-e[3],t[4]=s[4]-e[4],t[5]=s[5]-e[5],t[6]=s[6]-e[6],t[7]=s[7]-e[7],t[8]=s[8]-e[8],t[9]=s[9]-e[9],t[10]=s[10]-e[10],t[11]=s[11]-e[11],t[12]=s[12]-e[12],t[13]=s[13]-e[13],t[14]=s[14]-e[14],t[15]=s[15]-e[15],t}class B extends Array{constructor(t=1,s=0,e=0,i=0,r=0,h=1,n=0,a=0,o=0,l=0,u=1,d=0,c=0,g=0,f=0,p=1){return super(t,s,e,i,r,h,n,a,o,l,u,d,c,g,f,p),this}get x(){return this[12]}get y(){return this[13]}get z(){return this[14]}get w(){return this[15]}set x(t){this[12]=t}set y(t){this[13]=t}set z(t){this[14]=t}set w(t){this[15]=t}set(t,s,e,i,r,h,n,a,o,l,u,d,c,g,f,p){return t.length?this.copy(t):(this[0]=t,this[1]=s,this[2]=e,this[3]=i,this[4]=r,this[5]=h,this[6]=n,this[7]=a,this[8]=o,this[9]=l,this[10]=u,this[11]=d,this[12]=c,this[13]=g,this[14]=f,this[15]=p,this)}translate(t,s=this){let e,i,r,h,n,a,o,l,u,d,c,g,f,p,m;return f=t[0],p=t[1],m=t[2],s===this?(this[12]=s[0]*f+s[4]*p+s[8]*m+s[12],this[13]=s[1]*f+s[5]*p+s[9]*m+s[13],this[14]=s[2]*f+s[6]*p+s[10]*m+s[14],this[15]=s[3]*f+s[7]*p+s[11]*m+s[15]):(e=s[0],i=s[1],r=s[2],h=s[3],n=s[4],a=s[5],o=s[6],l=s[7],u=s[8],d=s[9],c=s[10],g=s[11],this[0]=e,this[1]=i,this[2]=r,this[3]=h,this[4]=n,this[5
5]=a,this[6]=o,this[7]=l,this[8]=u,this[9]=d,this[10]=c,this[11]=g,this[12]=e*f+n*p+u*m+s[12],this[13]=i*f+a*p+d*m+s[13],this[14]=r*f+o*p+c*m+s[14],this[15]=h*f+l*p+g*m+s[15]),this}rotate(t,s,e=this){let i,r,h,n,a,o,l,u,d,c,g,f,p,m,x,b,M,_,E,A,w,v,y,F,S,C,O,R;return S=s[0],1e-6>Math.abs(R=Math.hypot(S,C=s[1],O=s[2]))||(S*=R=1/R,C*=R,O*=R,i=Math.sin(t),h=1-(r=Math.cos(t)),n=e[0],a=e[1],o=e[2],l=e[3],u=e[4],d=e[5],c=e[6],g=e[7],f=e[8],p=e[9],m=e[10],x=e[11],b=S*S*h+r,M=C*S*h+O*i,_=O*S*h-C*i,E=S*C*h-O*i,A=C*C*h+r,w=O*C*h+S*i,v=S*O*h+C*i,y=C*O*h-S*i,F=O*O*h+r,this[0]=n*b+u*M+f*_,this[1]=a*b+d*M+p*_,this[2]=o*b+c*M+m*_,this[3]=l*b+g*M+x*_,this[4]=n*E+u*A+f*w,this[5]=a*E+d*A+p*w,this[6]=o*E+c*A+m*w,this[7]=l*E+g*A+x*w,this[8]=n*v+u*y+f*F,this[9]=a*v+d*y+p*F,this[10]=o*v+c*y+m*F,this[11]=l*v+g*y+x*F,e!==this&&(this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15])),this}scale(t,s=this){var e;let i,r,h;return i=(e="number"==typeof t?[t,t,t]:t)[0],r=e[1],h=e[2],this[0]=s[0]*i,this[1]=s[1]*i,this[2]=s[2]*i,this[3]=s[3]*i,this[4]=s[4]*r,this[5]=s[5]*r,this[6]=s[6]*r,this[7]=s[7]*r,this[8]=s[8]*h,this[9]=s[9]*h,this[10]=s[10]*h,this[11]=s[11]*h,this[12]=s[12],this[13]=s[13],this[14]=s[14],this[15]=s[15],this}add(t,s){return s?T(this,t,s):T(this,this,t),this}sub(t,s){return s?L(this,t,s):L(this,this,t),this}multiply(t,s){if(t.length)s?C(this,t,s):C(this,this,t);else this[0]=this[0]*t,this[1]=this[1]*t,this[2]=this[2]*t,this[3]=this[3]*t,this[4]=this[4]*t,this[5]=this[5]*t,this[6]=this[6]*t,this[7]=this[7]*t,this[8]=this[8]*t,this[9]=this[9]*t,this[10]=this[10]*t,this[11]=this[11]*t,this[12]=this[12]*t,this[13]=this[13]*t,this[14]=this[14]*t,this[15]=this[15]*t;return this}identity(){return this[0]=1,this[1]=0,this[2]=0,this[3]=0,this[4]=0,this[5]=1,this[6]=0,this[7]=0,this[8]=0,this[9]=0,this[10]=1,this[11]=0,this[12]=0,this[13]=0,this[14]=0,this[15]=1,this}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[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this}fromPerspective({fov:t,aspect:s,near:e,far:i}={}){let r,h;return r=1/Math.tan(t/2),h=1/(e-i),this[0]=r/s,this[1]=0,this[2]=0,this[3]=0,this[4]=0,this[5]=r,this[6]=0,this[7]=0,this[8]=0,this[9]=0,this[10]=(i+e)*h,this[11]=-1,this[12]=0,this[13]=0,this[14]=2*i*e*h,this[15]=0,this}fromOrthogonal({left:t,right:s,bottom:e,top:i,near:r,far:h}){let n,a,o;return n=1/(t-s),a=1/(e-i),o=1/(r-h),this[0]=-2*n,this[1]=0,this[2]=0,this[3]=0,this[4]=0,this[5]=-2*a,this[6]=0,this[7]=0,this[8]=0,this[9]=0,this[10]=2*o,this[11]=0,this[12]=(t+s)*n,this[13]=(i+e)*a,this[14]=(h+r)*o,this[15]=1,this}fromQuaternion(t){let s,e,i,r,h,n,a,o,l,u,d,c,g,f,p,m;return s=t[0],e=t[1],i=t[2],r=t[3],h=s+s,n=e+e,a=i+i,o=s*h,l=e*h,u=e*n,d=i*h,c=i*n,g=i*a,f=r*h,p=r*n,m=r*a,this[0]=1-u-g,this[1]=l+m,this[2]=d-p,this[3]=0,this[4]=l-m,this[5]=1-o-g,this[6]=c+f,this[7]=0,this[8]=d+p,this[9]=c-f,this[10]=1-o-u,this[11]=0,this[12]=0,this[13]=0,this[14]=0,this[15]=1,this}setPosition(t){return this.x=t[0],this.y=t[1],this.z=t[2],this}inverse(t=this){let s,e,i,r,h,n,a,o,l,u,d,c,g,f,p,m,x,b,M,_,E,A,w,v,y,F,S,C,O;return s=t[0],e=t[1],i=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],l=t[8],u=t[9],d=t[10],c=t[11],g=t[12],f=t[13],p=t[14],m=t[15],x=s*n-e*h,b=s*a-i*h,M=s*o-r*h,_=e*a-i*n,E=e*o-r*n,A=i*o-r*a,w=l*f-u*g,v=l*p-d*g,y=l*m-c*g,F=u*p-d*f,S=u*m-c*f,(O=x*(C=d*m-c*p)-b*S+M*F+_*y-E*v+A*w)&&(O=1/O,this[0]=(n*C-a*S+o*F)*O,this[1]=(i*S-e*C-r*F)*O,this[2]=(f*A-p*E+m*_)*O,this[3]=(d*E-u*A-c*_)*O,this[4]=(a*y-h*C-o*v)*O,this[5]=(s*C-i*y+r*v)*O,this[6]=(p*M-g*A-m*b)*O,this[7]=(l*A-d*M+c*b)*O,this[8]=(h*S-n*y+o*w)*O,this[9]=(e*y-s*S-r*w)*O,this[10]=(g*E-f*M+m*x)*O,this[11]=(u*M-l*E-c*x)*O,this[12]=(n*v-h*F-a*w)*O,this[13]=(s*F-e*v+i*w)*O,this[14]=(f*b-g*_-p*x)*O,this[15]=(l*_-u*b+d*x)*O),this}compose(t,s,e){return!function(t,s,e,i){let r=s[0],h=s[1],n=s[2],a=s[3],o=r+r,l=h+h,u=n+n,d=r*o,c=r*l,g=r*u,f=h*l,p=h*u,m=n*u,x=a*o,b=a*l,M=a*u,_=i[0],E=i[1],A=i[2];t[0]=(1-(f+m))*_,t[1]=(c+M)*_,t[2]=(g-b)*_,t[3]=0,t[4]=(c-M)*E,t[5]=(1-(d+m))*E,t[6]=(p+x)*E,t[7]=0,t[8]=(g+b)*A,t[9]=(p-x)*A,t[10]=(1-(d+f))*A,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1}(this,t,s,e),this}decompose(t,s,e){return!function(t,s,e,i){let r=u([t[0],t[1],t[2]]),h=u([t[4],t[5],t[6]]),n=u([t[8],t[9],t[10]]);0>S(t)&&(r=-r),e[0]=t[12],e[1]=t[13],e[2]=t[14];let a=t.slice(),o=1/r,l=1/h,d=1/n;a[0]*=o,a[1]*=o,a[2]*=o,a[4]*=l,a[5]*=l,a[6]*=l,a[8]*=d,a[9]*=d,a[10]*=d,R(s,a),i[0]=r,i[1]=h,i[2]=n}(this,t,s,e),this}getRotation(t){return R(t,this),this}getTranslation(t){return t[0]=this[12],t[1]=this[13],t[2]=this[14],this}getScaling(t){return O(t,this),this}getMaxScaleOnAxis(){let t,s,e,i,r,h,n,a,o;return t=this[0],s=this[1],e=this[2],i=this[4],r=this[5],h=this[6],n=this[8],Math.sqrt(Math.max(t*t+s*s+e*e,i*i+r*r+h*h,n*n+(a=this[9])*a+(o=this[10])*o))}lookAt(t,s,e){let i,r,h,n,a,o,l,u,d,c,g,f,p;return i=t[0],r=t[1],h=t[2],n=e[0],a=e[1],o=e[2],l=i-s[0],0==(c=l*l+(u=r-s[1])*u+(d=h-s[2])*d)?d=1:(l*=c=1/Math.sqrt(c),u*=c,d*=c),0==(c=(g=a*d-o*u)*g+(f=o*l-n*d)*f+(p=n*u-a*l)*p)&&(o?n+=1e-6:a?o+=1e-6:a+=1e-6,c=(g=a*d-o*u)*g+(f=o*l-n*d)*f+(p=n*u-a*l)*p),g*=c=1/Math.sqrt(c),f*=c,p*=c,this[0]=g,this[1]=f,this[2]=p,this[3]=0,this[4]=u*p-d*f,this[5]=d*g-l*p,this[6]=l*f-u*g,this[7]=0,this[8]=l,this[9]=u,this[10]=d,this[11]=0,this[12]=i,this[13]=r,this[14]=h,this[15]=1,this}determinant(){return S(this)}fromArray(t,s=0){return this[0]=t[s],this[1]=t[s+1],this[2]=t[s+2],this[3]=t[s+3],this[4]=t[s+4],this[5
5]=t[s+5],this[6]=t[s+6],this[7]=t[s+7],this[8]=t[s+8],this[9]=t[s+9],this[10]=t[s+10],this[11]=t[s+11],this[12]=t[s+12],this[13]=t[s+13],this[14]=t[s+14],this[15]=t[s+15],this}toArray(t=[],s=0){return t[s]=this[0],t[s+1]=this[1],t[s+2]=this[2],t[s+3]=this[3],t[s+4]=this[4],t[s+5]=this[5],t[s+6]=this[6],t[s+7]=this[7],t[s+8]=this[8],t[s+9]=this[9],t[s+10]=this[10],t[s+11]=this[11],t[s+12]=this[12],t[s+13]=this[13],t[s+14]=this[14],t[s+15]=this[15],t}}let I=new B;class D extends Array{constructor(t=0,s=t,e=t,i="YXZ"){super(t,s,e),this.order=i,this.onChange=()=>{},this._target=this;let r=["0","1","2"];return new Proxy(this,{set(t,s){let e=Reflect.set(...arguments);return e&&r.includes(s)&&t.onChange(),e}})}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this._target[0]=t,this.onChange()}set y(t){this._target[1]=t,this.onChange()}set z(t){this._target[2]=t,this.onChange()}set(t,s=t,e=t){return t.length?this.copy(t):(this._target[0]=t,this._target[1]=s,this._target[2]=e,this.onChange(),this)}copy(t){return this._target[0]=t[0],this._target[1]=t[1],this._target[2]=t[2],this.onChange(),this}reorder(t){return this._target.order=t,this.onChange(),this}fromRotationMatrix(t,s=this.order){return!function(t,s,e="YXZ"){"XYZ"===e?(t[1]=Math.asin(Math.min(Math.max(s[8],-1),1)),.99999>Math.abs(s[8])?(t[0]=Math.atan2(-s[9],s[10]),t[2]=Math.atan2(-s[4],s[0])):(t[0]=Math.atan2(s[6],s[5]),t[2]=0)):"YXZ"===e?(t[0]=Math.asin(-Math.min(Math.max(s[9],-1),1)),.99999>Math.abs(s[9])?(t[1]=Math.atan2(s[8],s[10]),t[2]=Math.atan2(s[1],s[5])):(t[1]=Math.atan2(-s[2],s[0]),t[2]=0)):"ZXY"===e?(t[0]=Math.asin(Math.min(Math.max(s[6],-1),1)),.99999>Math.abs(s[6])?(t[1]=Math.atan2(-s[2],s[10]),t[2]=Math.atan2(-s[4],s[5])):(t[1]=0,t[2]=Math.atan2(s[1],s[0]))):"ZYX"===e?(t[1]=Math.asin(-Math.min(Math.max(s[2],-1),1)),.99999>Math.abs(s[2])?(t[0]=Math.atan2(s[6],s[10]),t[2]=Math.atan2(s[1],s[0])):(t[0]=0,t[2]=Math.atan2(-s[4],s[5]))):"YZX"===e?(t[2]=Math.asin(Math.min(Math.max(s[1],-1),1)),.99999>Math.abs(s[1])?(t[0]=Math.atan2(-s[9],s[5]),t[1]=Math.atan2(-s[2],s[0])):(t[0]=0,t[1]=Math.atan2(s[8],s[10]))):"XZY"===e&&(t[2]=Math.asin(-Math.min(Math.max(s[4],-1),1)),.99999>Math.abs(s[4])?(t[0]=Math.atan2(s[6],s[5]),t[1]=Math.atan2(s[8],s[0])):(t[0]=Math.atan2(-s[9],s[10]),t[1]=0))}(this._target,t,s),this.onChange(),this}fromQuaternion(t,s=this.order,e){return I.fromQuaternion(t),this._target.fromRotationMatrix(I,s),e||this.onChange(),this}fromArray(t,s=0){return this._target[0]=t[s],this._target[1]=t[s+1],this._target[2]=t[s+2],this}toArray(t=[],s=0){return t[s]=this[0],t[s+1]=this[1],t[s+2]=this[2],t}}class N{constructor(){this.parent=null,this.children=[],this.visible=!0,this.matrix=new B,this.worldMatrix=new B,this.matrixAutoUpdate=!0,this.worldMatrixNeedsUpdate=!1,this.position=new _,this.quaternion=new F,this.scale=new _(1),this.rotation=new D,this.up=new _(0,1,0),this.rotation._target.onChange=()=>this.quaternion.fromEuler(this.rotation,!0),this.quaternion._target.onChange=()=>this.rotation.fromQuaternion(this.quaternion,void 0,!0)}setParent(t,s=!0){this.parent&&t!==this.parent&&this.parent.removeChild(this,!1),this.parent=t,s&&t&&t.addChild(this,!1)}addChild(t,s=!0){~this.children.indexOf(t)||this.children.push(t),s&&t.setParent(this,!1)}removeChild(t,s=!0){~this.children.indexOf(t)&&this.children.splice(this.children.indexOf(t),1),s&&t.setParent(null,!1)}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.worldMatrixNeedsUpdate||t)&&(null===this.parent?this.worldMatrix.copy(this.matrix):this.worldMatrix.multiply(this.parent.worldMatrix,this.matrix),this.worldMatrixNeedsUpdate=!1,t=!0);for(let s=0,e=this.children.length;s<e;s++)this.children[s].updateMatrixWorld(t)}updateMatrix(){this.matrix.compose(this.quaternion,this.position,this.scale),this.worldMatrixNeedsUpdate=!0}traverse(t){if(!t(this))for(let s=0,e=this.children.length;s<e;s++)this.children[s].traverse(t)}decompose(){this.matrix.decompose(this.quaternion._target,this.position,this.scale),this.rotation.fromQuaternion(this.quaternion)}lookAt(t,s=!1){s?this.matrix.lookAt(this.position,t,this.up):this.matrix.lookAt(t,this.position,this.up),this.matrix.getRotation(this.quaternion._target),this.rotation.fromQuaternion(this.quaternion)}}
5function P(t,s,e){let i=s[0],r=s[1],h=s[2],n=s[3],a=s[4],o=s[5],l=s[6],u=s[7],d=s[8],c=e[0],g=e[1],f=e[2],p=e[3],m=e[4],x=e[5],b=e[6],M=e[7],_=e[8];return t[0]=c*i+g*n+f*l,t[1]=c*r+g*a+f*u,t[2]=c*h+g*o+f*d,t[3]=p*i+m*n+x*l,t[4]=p*r+m*a+x*u,t[5]=p*h+m*o+x*d,t[6]=b*i+M*n+_*l,t[7]=b*r+M*a+_*u,t[8]=b*h+M*o+_*d,t}class q extends Array{constructor(t=1,s=0,e=0,i=0,r=1,h=0,n=0,a=0,o=1){return super(t,s,e,i,r,h,n,a,o),this}set(t,s,e,i,r,h,n,a,o){return t.length?this.copy(t):(this[0]=t,this[1]=s,this[2]=e,this[3]=i,this[4]=r,this[5]=h,this[6]=n,this[7]=a,this[8]=o,this)}translate(t,s=this){let e,i,r,h,n,a,o,l,u,d,c;return e=s[0],i=s[1],r=s[2],h=s[3],n=s[4],a=s[5],o=s[6],l=s[7],u=s[8],d=t[0],c=t[1],this[0]=e,this[1]=i,this[2]=r,this[3]=h,this[4]=n,this[5]=a,this[6]=d*e+c*h+o,this[7]=d*i+c*n+l,this[8]=d*r+c*a+u,this}rotate(t,s=this){let e,i,r,h,n,a,o,l,u,d,c;return e=s[0],i=s[1],r=s[2],h=s[3],n=s[4],a=s[5],o=s[6],l=s[7],u=s[8],d=Math.sin(t),c=Math.cos(t),this[0]=c*e+d*h,this[1]=c*i+d*n,this[2]=c*r+d*a,this[3]=c*h-d*e,this[4]=c*n-d*i,this[5]=c*a-d*r,this[6]=o,this[7]=l,this[8]=u,this}scale(t,s=this){let e,i;return e=t[0],i=t[1],this[0]=e*s[0],this[1]=e*s[1],this[2]=e*s[2],this[3]=i*s[3],this[4]=i*s[4],this[5]=i*s[5],this[6]=s[6],this[7]=s[7],this[8]=s[8],this}multiply(t,s){return s?P(this,t,s):P(this,this,t),this}identity(){return this[0]=1,this[1]=0,this[2]=0,this[3]=0,this[4]=1,this[5]=0,this[6]=0,this[7]=0,this[8]=1,this}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}fromMatrix4(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[4],this[4]=t[5],this[5]=t[6],this[6]=t[8],this[7]=t[9],this[8]=t[10],this}fromQuaternion(t){let s,e,i,r,h,n,a,o,l,u,d,c,g,f,p,m;return s=t[0],e=t[1],i=t[2],r=t[3],h=s+s,n=e+e,a=i+i,o=s*h,l=e*h,u=e*n,d=i*h,c=i*n,g=i*a,f=r*h,p=r*n,m=r*a,this[0]=1-u-g,this[3]=l-m,this[6]=d+p,this[1]=l+m,this[4]=1-o-g,this[7]=c-f,this[2]=d-p,this[5]=c+f,this[8]=1-o-u,this}fromBasis(t,s,e){return this.set(t[0],t[1],t[2],s[0],s[1],s[2],e[0],e[1],e[2]),this}inverse(t=this){let s,e,i,r,h,n,a,o,l,u,d,c,g;return s=t[0],e=t[1],i=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],(g=s*(u=(l=t[8])*h-n*o)+e*(d=-l*r+n*a)+i*(c=o*r-h*a))&&(g=1/g,this[0]=u*g,this[1]=(-l*e+i*o)*g,this[2]=(n*e-i*h)*g,this[3]=d*g,this[4]=(l*s-i*a)*g,this[5]=(-n*s+i*r)*g,this[6]=c*g,this[7]=(-o*s+e*a)*g,this[8]=(h*s-e*r)*g),this}getNormalMatrix(t){let s,e,i,r,h,n,a,o,l,u,d,c,g,f,p,m,x,b,M,_,E,A,w,v,y,F,S,C,O;return s=t[0],e=t[1],i=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],l=t[8],u=t[9],d=t[10],c=t[11],g=t[12],f=t[13],p=t[14],m=t[15],x=s*n-e*h,b=s*a-i*h,M=s*o-r*h,_=e*a-i*n,E=e*o-r*n,A=i*o-r*a,w=l*f-u*g,v=l*p-d*g,y=l*m-c*g,F=u*p-d*f,S=u*m-c*f,(O=x*(C=d*m-c*p)-b*S+M*F+_*y-E*v+A*w)&&(O=1/O,this[0]=(n*C-a*S+o*F)*O,this[1]=(a*y-h*C-o*v)*O,this[2]=(h*S-n*y+o*w)*O,this[3]=(i*S-e*C-r*F)*O,this[4]=(s*C-i*y+r*v)*O,this[5]=(e*y-s*S-r*w)*O,this[6]=(f*A-p*E+m*_)*O,this[7]=(p*M-g*A-m*b)*O,this[8]=(g*E-f*M+m*x)*O),this}}let U=0;class z extends N{constructor(t,{geometry:s,program:e,mode:i=t.TRIANGLES,frustumCulled:r=!0,renderOrder:h=0}={}){super(),t.canvas||console.error("gl not passed as first argument to Mesh"),this.gl=t,this.id=U++,this.geometry=s,this.program=e,this.mode=i,this.frustumCulled=r,this.renderOrder=h,this.modelViewMatrix=new B,this.normalMatrix=new q,this.beforeRenderCallbacks=[],this.afterRenderCallbacks=[]}onBeforeRender(t){return this.beforeRenderCallbacks.push(t),this}onAfterRender(t){return this.afterRenderCallbacks.push(t),this}draw({camera:t}={}){t&&(this.program.uniforms.modelMatrix||Object.assign(this.program.uniforms,{modelMatrix:{value:null},viewMatrix:{value:null},modelViewMatrix:{value:null},normalMatrix:{value:null},projectionMatrix:{value:null},cameraPosition:{value:null}}),this.program.uniforms.projectionMatrix.value=t.projectionMatrix,this.program.uniforms.cameraPosition.value=t.worldPosition,this.program.uniforms.viewMatrix.value=t.viewMatrix,this.modelViewMatrix.multiply(t.viewMatrix,this.worldMatrix),this.normalMatrix.getNormalMatrix(this.modelViewMatrix),this.program.uniforms.modelMatrix.value=this.worldMatrix,this.program.uniforms.modelViewMatrix.value=this.modelViewMatrix,this.program.uniforms.normalMatrix.value=this.normalMatrix),this.beforeRenderCallbacks.forEach(s=>s&&s({mesh:this,camera:t}));let s=this.program.cullFace&&0>this.worldMatrix.determinant();this.program.use({flipFaces:s}),this.geometry.draw({mode:this.mode,program:this.program}),this.afterRenderCallbacks.forEach(s=>s&&s({mesh:this,camera:t}))}}let V=new _,k=1,G=1,X=!1;class W{constructor(t,s={}){for(let e in t.canvas||console.error("gl not passed as first argument to Geometry"),this.gl=t,this.attributes=s,this.id=k++,this.VAOs={},this.drawRange={start:0,count:0},this.instancedCount=0,this.gl.renderer.bindVertexArray(null),this.gl.renderer.currentGeometry=null,this.glState=this.gl.renderer.state,s)this.addAttribute(e,s[e])}addAttribute(t,s){if(this.attributes[t]=s,s.id=G++,s.size=s.size||1,s.type=s.type||(s.data.constructor===Float32Array?this.gl.FLOAT:s.data.constructor===Uint16Array?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT),s.target="index"===t?this.gl.ELEMENT_ARRAY_BUFFER:this.gl.ARRAY_BUFFER,s.normalized=s.normalized||!1,s.stride=s.stride||0,s.offset=s.offset||0,s.count=s.count||(s.stride?s.data.byteLength/s.stride:s.data.length/s.size),s.divisor=s.instanced||0,s.needsUpdate=!1,s.usage=s.usage||this.gl.STATIC_DRAW,s.buffer||this.updateAttribute(s),s.divisor){if(this.isInstanced=!0,this.instancedCount&&this.instancedCount!==s.count*s.divisor)return console.warn("geometry has multiple instanced buffers of different length"),this.instancedCount=Math.min(this.instancedCount,s.count*s.divisor);this.instancedCount=s.count*s.divisor}else"index"===t?this.drawRange.count=s.count:this.attributes.index||(this.drawRange.count=Math.max(this.drawRange.count,s.count))}updateAttribute(t){let s=!t.buffer;s&&(t.buffer=this.gl.createBuffer()),this.glState.boundBuffer!==t.buffer&&(this.gl.bindBuffer(t.target,t.buffer),this.glState.boundBuffer=t.buffer),s?this.gl.bufferData(t.target,t.data,t.usage):this.gl.bufferSubData(t.target,0,t.data),t.needsUpdate=!1}setIndex(t){this.addAttribute("index",t)}setDrawRange(t,s){this.drawRange.start=t,this.drawRange.count=s}setInstancedCount(t){this.instancedCount=t}createVAO(t){this.VAOs[t.attributeOrder]=this.gl.renderer.createVertexArray(),this.gl.renderer.bindVertexArray(this.VAOs[t.attributeOrder]),this.bindAttributes(t)}bindAttributes(t){t.attributeLocations.forEach((t,{name:s,type:e})=>
5{if(!this.attributes[s])return void console.warn(`active attribute ${s} not being supplied`);let i=this.attributes[s];this.gl.bindBuffer(i.target,i.buffer),this.glState.boundBuffer=i.buffer;let r=1;35674===e&&(r=2),35675===e&&(r=3),35676===e&&(r=4);let h=i.size/r,n=1===r?0:r*r*4,a=1===r?0:4*r;for(let s=0;s<r;s++)this.gl.vertexAttribPointer(t+s,h,i.type,i.normalized,i.stride+n,i.offset+s*a),this.gl.enableVertexAttribArray(t+s),this.gl.renderer.vertexAttribDivisor(t+s,i.divisor)}),this.attributes.index&&this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.attributes.index.buffer)}draw({program:t,mode:s=this.gl.TRIANGLES}){this.gl.renderer.currentGeometry!==`${this.id}_${t.attributeOrder}`&&(this.VAOs[t.attributeOrder]||this.createVAO(t),this.gl.renderer.bindVertexArray(this.VAOs[t.attributeOrder]),this.gl.renderer.currentGeometry=`${this.id}_${t.attributeOrder}`),t.attributeLocations.forEach((t,{name:s})=>{let e=this.attributes[s];e.needsUpdate&&this.updateAttribute(e)});let e=2;this.attributes.index?.type===this.gl.UNSIGNED_INT&&(e=4),this.isInstanced?this.attributes.index?this.gl.renderer.drawElementsInstanced(s,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+this.drawRange.start*e,this.instancedCount):this.gl.renderer.drawArraysInstanced(s,this.drawRange.start,this.drawRange.count,this.instancedCount):this.attributes.index?this.gl.drawElements(s,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+this.drawRange.start*e):this.gl.drawArrays(s,this.drawRange.start,this.drawRange.count)}getPosition(){let t=this.attributes.position;return t.data?t:X?void 0:(console.warn("No position buffer data found to compute bounds"),X=!0)}computeBoundingBox(t){t||(t=this.getPosition());let s=t.data,e=t.size;this.bounds||(this.bounds={min:new _,max:new _,center:new _,scale:new _,radius:1/0});let i=this.bounds.min,r=this.bounds.max,h=this.bounds.center,n=this.bounds.scale;i.set(Infinity),r.set(-1/0);for(let t=0,h=s.length;t<h;t+=e){let e=s[t],h=s[t+1],n=s[t+2];i.x=Math.min(e,i.x),i.y=Math.min(h,i.y),i.z=Math.min(n,i.z),r.x=Math.max(e,r.x),r.y=Math.max(h,r.y),r.z=Math.max(n,r.z)}n.sub(r,i),h.add(i,r).divide(2)}computeBoundingSphere(t){t||(t=this.getPosition());let s=t.data,e=t.size;this.bounds||this.computeBoundingBox(t);let i=0;for(let t=0,r=s.length;t<r;t+=e)V.fromArray(s,t),i=Math.max(i,this.bounds.center.squaredDistance(V));this.bounds.radius=Math.sqrt(i)}remove(){for(let t in this.VAOs)this.gl.renderer.deleteVertexArray(this.VAOs[t]),delete this.VAOs[t];for(let t in this.attributes)this.gl.deleteBuffer(this.attributes[t].buffer),delete this.attributes[t]}}class Y extends W{constructor(t,{attributes:s={}}={}){Object.assign(s,{position:{size:2,data:new Float32Array([-1,-1,3,-1,-1,3])},uv:{size:2,data:new Float32Array([0,0,2,0,0,2])}}),super(t,s)}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.