<!-- SOLID-PLAYTIME · part 64 -->
.min),this.max.max(t.max),this}applyMatrix4(t){if(this.isEmpty())return this;return As[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),As[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),As[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),As[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),As[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),As[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),As[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),As[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(As),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}}var As=[new C,new C,new C,new C,new C,new C,new C,new C],Ii=new C,Bh=new Fs,xo=new C,bo=new C,Eo=new C,pa=new C,ma=new C,ar=new C,pc=new C,Oh=new C,zh=new C,rr=new C;function om(t,e,n,i,s){for(let a=0,r=t.length-3;a<=r;a+=3){rr.fromArray(t,a);let o=s.x*Math.abs(rr.x)+s.y*Math.abs(rr.y)+s.z*Math.abs(rr.z),l=e.dot(rr),c=n.dot(rr),u=i.dot(rr);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}var bS=new Fs,mc=new C,lm=new C;class Ns{constructor(t=new C,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;if(e!==void 0)n.copy(e);else bS.setFromPoints(t).getCenter(n);let i=0;for(let s=0,a=t.length;s<a;s++)i=Math.max(i,n.distanceToSquared(t[s]));return this.radius=Math.sqrt(i),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){let e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){let n=this.center.distanceToSquared(t);if(e.copy(t),n>this.radius*this.radius)e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center);return e}getBoundingBox(t){if(this.isEmpty())return t.makeEmpty(),t;return t.set(this.center,this.center),t.expandByScalar(this.radius),t}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;mc.subVectors(t,this.center);let e=mc.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*0.5;this.center.addScaledVector(mc,i/n),this.radius+=i}return this}union(t){if(t.isEmpty())return this;if(this.isEmpty())return this.copy(t),this;if(this.center.equals(t.center)===!0)this.radius=Math.max(this.radius,t.radius);else lm.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(mc.copy(t.center).add(lm)),this.expandByPoint(mc.copy(t.center).sub(lm));return this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}}var Ss=new C,cm=new C,kh=new C,Ua=new C,um=new C,Vh=new C,hm=new C;class Yo{constructor(t=new C,e=new C(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Ss)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);if(n<0)return e.copy(this.origin);return e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=Ss.subVectors(t,this.origin).dot(this.direction);if(e<0)return this.origin.distanceToSquared(t);return Ss.copy(this.origin).addScaledVector(this.direction,e),Ss.distanceToSquared(t)}distanceSqToSegment(t,e,n,i){cm.copy(t).add(e).multiplyScalar(0.5),kh.copy(e).sub(t).normalize(),Ua.copy(this.origin).sub(cm);let s=t.distanceTo(e)*0.5,a=-this.direction.dot(kh),r=Ua.dot(this.direction),o=-Ua.dot(kh),l=Ua.lengthSq(),c=Math.abs(1-a*a),u,f,h,p;if(c>0)if(u=a*o-r,f=a*r-o,p=s*c,u>=0)if(f>=-p)if(f<=p){let v=1/c;u*=v,f*=v,h=u*(u+a*f+2*r)+f*(a*u+f+2*o)+l}else f=s,u=Math.max(0,-(a*f+r)),h=-u*u+f*(f+2*o)+l;else f=-s,u=Math.max(0,-(a*f+r)),h=-u*u+f*(f+2*o)+l;else if(f<=-p)u=Math.max(0,-(-a*s+r)),f=u>0?-s:Math.min(Math.max(-s,-o),s),h=