@mlightcad/geometry-engine 3.4.6 → 3.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(f,V){typeof exports=="object"&&typeof module<"u"?V(exports,require("@mlightcad/common")):typeof define=="function"&&define.amd?define(["exports","@mlightcad/common"],V):(f=typeof globalThis<"u"?globalThis:f||self,V(f["geometry-engine"]={},f.common))})(this,function(f,V){"use strict";const L=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let rn=1234567;const jt=Math.PI/180,qt=180/Math.PI;function on(){const o=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0,e=Math.random()*4294967295|0;return(L[o&255]+L[o>>8&255]+L[o>>16&255]+L[o>>24&255]+"-"+L[t&255]+L[t>>8&255]+"-"+L[t>>16&15|64]+L[t>>24&255]+"-"+L[n&63|128]+L[n>>8&255]+"-"+L[n>>16&255]+L[n>>24&255]+L[e&255]+L[e>>8&255]+L[e>>16&255]+L[e>>24&255]).toLowerCase()}function Q(o,t,n){return Math.max(t,Math.min(n,o))}function Vt(o,t){return(o%t+t)%t}function hn(o,t,n,e,s){return e+(o-t)*(s-e)/(n-t)}function an(o,t,n){return o!==t?(n-o)/(t-o):0}function Lt(o,t,n){return(1-n)*o+n*t}function cn(o,t,n,e){return Lt(o,t,1-Math.exp(-n*e))}function ln(o,t=1){return t-Math.abs(Vt(o,t*2)-t)}function un(o,t,n){return o<=t?0:o>=n?1:(o=(o-t)/(n-t),o*o*(3-2*o))}function dn(o,t,n){return o<=t?0:o>=n?1:(o=(o-t)/(n-t),o*o*o*(o*(o*6-15)+10))}function mn(o,t){return o+Math.floor(Math.random()*(t-o+1))}function gn(o,t){return o+Math.random()*(t-o)}function yn(o){return o*(.5-Math.random())}function xn(o){o!==void 0&&(rn=o);let t=rn+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function _n(o){return o*jt}function fn(o){return o*qt}function An(o){return(o&o-1)===0&&o!==0}function Pn(o){return Math.pow(2,Math.ceil(Math.log(o)/Math.LN2))}function pn(o){return Math.pow(2,Math.floor(Math.log(o)/Math.LN2))}function ut(o){const t=Math.PI*2;return(o%t+t)%t}function wn(o,t,n){return o>t&&o<n||o>n&&o<t}function Mn(o,t,n,e=!1){return o=ut(o),t=ut(t),n=ut(n),e?t>n?o<=t&&o>=n:o<=t||o>=n:t<n?o>=t&&o<=n:o>=t||o<=n}function vt(o){return o=Math.abs(o),o<1?0:Math.ceil(Math.log10(Math.abs(o)+1))}function zn(o,t=1e-7){const n=vt(o);return Math.max(Math.pow(10,n)*t,t)}const w={DEG2RAD:jt,RAD2DEG:qt,generateUUID:on,clamp:Q,euclideanModulo:Vt,mapLinear:hn,inverseLerp:an,lerp:Lt,damp:cn,pingpong:ln,smoothstep:un,smootherstep:dn,randInt:mn,randFloat:gn,randFloatSpread:yn,seededRandom:xn,degToRad:_n,radToDeg:fn,isPowerOfTwo:An,ceilPowerOfTwo:Pn,floorPowerOfTwo:pn,normalizeAngle:ut,isBetween:wn,isBetweenAngle:Mn,intPartLength:vt,relativeEps:zn},_t=class _t{constructor(t,n){this.x=0,this.y=0;const e=+(t!==void 0)+ +(n!==void 0);if(e!==0){if(e===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(e===1){const{x:s,y:i}=t;this.x=s,this.y=i;return}if(e===2){this.x=t,this.y=n;return}throw V.AcCmErrors.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,n){return this.x=t,this.y=n,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,n){switch(t){case 0:this.x=n;break;case 1:this.y=n;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new _t(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,n){return this.x=t.x+n.x,this.y=t.y+n.y,this}addScaledVector(t,n){return this.x+=t.x*n,this.y+=t.y*n,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,n){return this.x=t.x-n.x,this.y=t.y-n.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix2d(t){const n=this.x,e=this.y,s=t.elements;return this.x=s[0]*n+s[3]*e+s[6],this.y=s[1]*n+s[4]*e+s[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,n){return this.x=Math.max(t.x,Math.min(n.x,this.x)),this.y=Math.max(t.y,Math.min(n.y,this.y)),this}clampScalar(t,n){return this.x=Math.max(t,Math.min(n,this.x)),this.y=Math.max(t,Math.min(n,this.y)),this}clampLength(t,n){const e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(n,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const n=Math.sqrt(this.lengthSq()*t.lengthSq());if(n===0)return Math.PI/2;const e=this.dot(t)/n;return Math.acos(Math.max(-1,Math.min(1,e)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const n=this.x-t.x,e=this.y-t.y;return n*n+e*e}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,n){return this.x+=(t.x-this.x)*n,this.y+=(t.y-this.y)*n,this}lerpVectors(t,n,e){return this.x=t.x+(n.x-t.x)*e,this.y=t.y+(n.y-t.y)*e,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,n=0){return this.x=t[n],this.y=t[n+1],this}toArray(t=[],n=0){return t[n]=this.x,t[n+1]=this.y,t}rotateAround(t,n){const e=Math.cos(n),s=Math.sin(n),i=this.x-t.x,r=this.y-t.y;return this.x=i*e-r*s+t.x,this.y=i*s+r*e+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(w.relativeEps(this.x,t),w.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};_t.EMPTY=Object.freeze(new _t(0,0));let R=_t;const ft=class ft{constructor(t,n,e,s,i,r,h,a,c){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&n!=null&&e!=null&&s!=null&&i!=null&&r!=null&&h!=null&&a!=null&&c!=null&&this.set(t,n,e,s,i,r,h,a,c)}set(t,n,e,s,i,r,h,a,c){const l=this.elements;return l[0]=t,l[1]=s,l[2]=h,l[3]=n,l[4]=i,l[5]=a,l[6]=e,l[7]=r,l[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const n=this.elements,e=t.elements;return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],this}extractBasis(t,n,e){return t.setFromMatrix3Column(this,0),n.setFromMatrix3Column(this,1),e.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const n=t.elements;return this.set(n[0],n[4],n[8],n[1],n[5],n[9],n[2],n[6],n[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,n){const e=t.elements,s=n.elements,i=this.elements,r=e[0],h=e[3],a=e[6],c=e[1],l=e[4],u=e[7],d=e[2],m=e[5],g=e[8],y=s[0],x=s[3],_=s[6],b=s[1],p=s[4],C=s[7],S=s[2],T=s[5],z=s[8];return i[0]=r*y+h*b+a*S,i[3]=r*x+h*p+a*T,i[6]=r*_+h*C+a*z,i[1]=c*y+l*b+u*S,i[4]=c*x+l*p+u*T,i[7]=c*_+l*C+u*z,i[2]=d*y+m*b+g*S,i[5]=d*x+m*p+g*T,i[8]=d*_+m*C+g*z,this}multiplyScalar(t){const n=this.elements;return n[0]*=t,n[3]*=t,n[6]*=t,n[1]*=t,n[4]*=t,n[7]*=t,n[2]*=t,n[5]*=t,n[8]*=t,this}determinant(){const t=this.elements,n=t[0],e=t[1],s=t[2],i=t[3],r=t[4],h=t[5],a=t[6],c=t[7],l=t[8];return n*r*l-n*h*c-e*i*l+e*h*a+s*i*c-s*r*a}invert(){const t=this.elements,n=t[0],e=t[1],s=t[2],i=t[3],r=t[4],h=t[5],a=t[6],c=t[7],l=t[8],u=l*r-h*c,d=h*a-l*i,m=c*i-r*a,g=n*u+e*d+s*m;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const y=1/g;return t[0]=u*y,t[1]=(s*c-l*e)*y,t[2]=(h*e-s*r)*y,t[3]=d*y,t[4]=(l*n-s*a)*y,t[5]=(s*i-h*n)*y,t[6]=m*y,t[7]=(e*a-c*n)*y,t[8]=(r*n-e*i)*y,this}transpose(){let t;const n=this.elements;return t=n[1],n[1]=n[3],n[3]=t,t=n[2],n[2]=n[6],n[6]=t,t=n[5],n[5]=n[7],n[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const n=this.elements;return t.elements[0]=n[0],t.elements[1]=n[3],t.elements[2]=n[6],t.elements[3]=n[1],t.elements[4]=n[4],t.elements[5]=n[7],t.elements[6]=n[2],t.elements[7]=n[5],t.elements[8]=n[8],this}setUvTransform(t,n,e,s,i,r,h){const a=Math.cos(i),c=Math.sin(i);return this.set(e*a,e*c,-e*(a*r+c*h)+r+t,-s*c,s*a,-s*(-c*r+a*h)+h+n,0,0,1),this}scale(t,n){return this.premultiply(Ut.makeScale(t,n)),this}rotate(t){return this.premultiply(Ut.makeRotation(-t)),this}translate(t,n){return this.premultiply(Ut.makeTranslation(t,n)),this}makeTranslation(t,n){return t instanceof R?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,n,0,0,1),this}makeRotation(t){const n=Math.cos(t),e=Math.sin(t);return this.set(n,-e,0,e,n,0,0,0,1),this}makeScale(t,n){return this.set(t,0,0,0,n,0,0,0,1),this}equals(t){const n=this.elements,e=t.elements;for(let s=0;s<9;s++)if(n[s]!==e[s])return!1;return!0}fromArray(t,n=0){for(let e=0;e<9;e++)this.elements[e]=t[e+n];return this}toArray(t=[],n=0){const e=this.elements;return t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3],t[n+4]=e[4],t[n+5]=e[5],t[n+6]=e[6],t[n+7]=e[7],t[n+8]=e[8],t}clone(){return new ft().fromArray(this.elements)}};ft.IDENTITY=Object.freeze(new ft);let rt=ft;const Ut=new rt,K=1e-6,I=2*Math.PI,ie={x:0,y:0},Ft={x:0,y:0,z:0};class B{constructor(){this.equalPointTol=K,this.equalVectorTol=K}clone(){const t=new B;return t.equalPointTol=this.equalPointTol,t.equalVectorTol=this.equalVectorTol,t}equalPoint2d(t,n){return new R(t).sub(n).length()<this.equalPointTol}equalPoint3d(t,n){return new A(t).sub(n).length()<this.equalPointTol}static equalToZero(t,n=K){return t<n&&t>-n}static equal(t,n,e=K){return Math.abs(t-n)<e}static great(t,n,e=K){return t-n>e}static less(t,n,e=K){return t-n<e}static isPositive(t,n=K){return t>n}static isNonPositive(t,n=K){return t<=n}}const pt=new B;class dt{constructor(t=0,n=0,e=0,s=1){this._x=t,this._y=n,this._z=e,this._w=s}static slerpFlat(t,n,e,s,i,r,h){let a=e[s+0],c=e[s+1],l=e[s+2],u=e[s+3];const d=i[r+0],m=i[r+1],g=i[r+2],y=i[r+3];if(h===0){t[n+0]=a,t[n+1]=c,t[n+2]=l,t[n+3]=u;return}if(h===1){t[n+0]=d,t[n+1]=m,t[n+2]=g,t[n+3]=y;return}if(u!==y||a!==d||c!==m||l!==g){let x=1-h;const _=a*d+c*m+l*g+u*y,b=_>=0?1:-1,p=1-_*_;if(p>Number.EPSILON){const S=Math.sqrt(p),T=Math.atan2(S,_*b);x=Math.sin(x*T)/S,h=Math.sin(h*T)/S}const C=h*b;if(a=a*x+d*C,c=c*x+m*C,l=l*x+g*C,u=u*x+y*C,x===1-h){const S=1/Math.sqrt(a*a+c*c+l*l+u*u);a*=S,c*=S,l*=S,u*=S}}t[n]=a,t[n+1]=c,t[n+2]=l,t[n+3]=u}static multiplyQuaternionsFlat(t,n,e,s,i,r){const h=e[s],a=e[s+1],c=e[s+2],l=e[s+3],u=i[r],d=i[r+1],m=i[r+2],g=i[r+3];return t[n]=h*g+l*u+a*m-c*d,t[n+1]=a*g+l*d+c*u-h*m,t[n+2]=c*g+l*m+h*d-a*u,t[n+3]=l*g-h*u-a*d-c*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,n,e,s){return this._x=t,this._y=n,this._z=e,this._w=s,this._onChangeCallback(),this}clone(){return new dt(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,n=!0){const e=t.x,s=t.y,i=t.z,r=t.order,h=Math.cos,a=Math.sin,c=h(e/2),l=h(s/2),u=h(i/2),d=a(e/2),m=a(s/2),g=a(i/2);switch(r){case"XYZ":this._x=d*l*u+c*m*g,this._y=c*m*u-d*l*g,this._z=c*l*g+d*m*u,this._w=c*l*u-d*m*g;break;case"YXZ":this._x=d*l*u+c*m*g,this._y=c*m*u-d*l*g,this._z=c*l*g-d*m*u,this._w=c*l*u+d*m*g;break;case"ZXY":this._x=d*l*u-c*m*g,this._y=c*m*u+d*l*g,this._z=c*l*g+d*m*u,this._w=c*l*u-d*m*g;break;case"ZYX":this._x=d*l*u-c*m*g,this._y=c*m*u+d*l*g,this._z=c*l*g-d*m*u,this._w=c*l*u+d*m*g;break;case"YZX":this._x=d*l*u+c*m*g,this._y=c*m*u+d*l*g,this._z=c*l*g-d*m*u,this._w=c*l*u-d*m*g;break;case"XZY":this._x=d*l*u-c*m*g,this._y=c*m*u-d*l*g,this._z=c*l*g+d*m*u,this._w=c*l*u+d*m*g;break}return n===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,n){const e=n/2,s=Math.sin(e);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(e),this._onChangeCallback(),this}setFromRotationMatrix(t){const n=t.elements,e=n[0],s=n[4],i=n[8],r=n[1],h=n[5],a=n[9],c=n[2],l=n[6],u=n[10],d=e+h+u;if(d>0){const m=.5/Math.sqrt(d+1);this._w=.25/m,this._x=(l-a)*m,this._y=(i-c)*m,this._z=(r-s)*m}else if(e>h&&e>u){const m=2*Math.sqrt(1+e-h-u);this._w=(l-a)/m,this._x=.25*m,this._y=(s+r)/m,this._z=(i+c)/m}else if(h>u){const m=2*Math.sqrt(1+h-e-u);this._w=(i-c)/m,this._x=(s+r)/m,this._y=.25*m,this._z=(a+l)/m}else{const m=2*Math.sqrt(1+u-e-h);this._w=(r-s)/m,this._x=(i+c)/m,this._y=(a+l)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,n){let e=t.dot(n)+1;return e<Number.EPSILON?(e=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=e):(this._x=0,this._y=-t.z,this._z=t.y,this._w=e)):(this._x=t.y*n.z-t.z*n.y,this._y=t.z*n.x-t.x*n.z,this._z=t.x*n.y-t.y*n.x,this._w=e),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(Q(this.dot(t),-1,1)))}rotateTowards(t,n){const e=this.angleTo(t);if(e===0)return this;const s=Math.min(1,n/e);return this.slerp(t,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,n){const e=t._x,s=t._y,i=t._z,r=t._w,h=n._x,a=n._y,c=n._z,l=n._w;return this._x=e*l+r*h+s*c-i*a,this._y=s*l+r*a+i*h-e*c,this._z=i*l+r*c+e*a-s*h,this._w=r*l-e*h-s*a-i*c,this._onChangeCallback(),this}slerp(t,n){if(n===0)return this;if(n===1)return this.copy(t);const e=this._x,s=this._y,i=this._z,r=this._w;let h=r*t._w+e*t._x+s*t._y+i*t._z;if(h<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,h=-h):this.copy(t),h>=1)return this._w=r,this._x=e,this._y=s,this._z=i,this;const a=1-h*h;if(a<=Number.EPSILON){const m=1-n;return this._w=m*r+n*this._w,this._x=m*e+n*this._x,this._y=m*s+n*this._y,this._z=m*i+n*this._z,this.normalize(),this}const c=Math.sqrt(a),l=Math.atan2(c,h),u=Math.sin((1-n)*l)/c,d=Math.sin(n*l)/c;return this._w=r*u+this._w*d,this._x=e*u+this._x*d,this._y=s*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(t,n,e){return this.copy(t).slerp(n,e)}random(){const t=2*Math.PI*Math.random(),n=2*Math.PI*Math.random(),e=Math.random(),s=Math.sqrt(1-e),i=Math.sqrt(e);return this.set(s*Math.sin(t),s*Math.cos(t),i*Math.sin(n),i*Math.cos(n))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,n=0){return this._x=t[n],this._y=t[n+1],this._z=t[n+2],this._w=t[n+3],this._onChangeCallback(),this}toArray(t=[],n=0){return t[n]=this._x,t[n+1]=this._y,t[n+2]=this._z,t[n+3]=this._w,t}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}const j=class j{constructor(t,n,e){this.x=0,this.y=0,this.z=0;const s=+(t!==void 0)+ +(n!==void 0)+ +(e!==void 0);if(s!==0){if(s===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(s===1){const{x:i,y:r,z:h}=t;this.x=i,this.y=r,this.z=h||0;return}if(s===3){this.x=t,this.y=n,this.z=e;return}throw V.AcCmErrors.ILLEGAL_PARAMETERS}}set(t,n,e){return e===void 0&&(e=this.z),this.x=t,this.y=n,this.z=e,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,n){switch(t){case 0:this.x=n;break;case 1:this.y=n;break;case 2:this.z=n;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new j(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,n){return this.x=t.x+n.x,this.y=t.y+n.y,this.z=t.z+n.z,this}addScaledVector(t,n){return this.x+=t.x*n,this.y+=t.y*n,this.z+=t.z*n,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,n){return this.x=t.x-n.x,this.y=t.y-n.y,this.z=t.z-n.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,n){return this.x=t.x*n.x,this.y=t.y*n.y,this.z=t.z*n.z,this}applyEuler(t){return this.applyQuaternion(bn.setFromEuler(t))}applyAxisAngle(t,n){return this.applyQuaternion(bn.setFromAxisAngle(t,n))}applyMatrix3(t){const n=this.x,e=this.y,s=this.z,i=t.elements;return this.x=i[0]*n+i[3]*e+i[6]*s,this.y=i[1]*n+i[4]*e+i[7]*s,this.z=i[2]*n+i[5]*e+i[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const n=this.x,e=this.y,s=this.z,i=t.elements,r=1/(i[3]*n+i[7]*e+i[11]*s+i[15]);return this.x=(i[0]*n+i[4]*e+i[8]*s+i[12])*r,this.y=(i[1]*n+i[5]*e+i[9]*s+i[13])*r,this.z=(i[2]*n+i[6]*e+i[10]*s+i[14])*r,this}applyQuaternion(t){const n=this.x,e=this.y,s=this.z,i=t.x,r=t.y,h=t.z,a=t.w,c=2*(r*s-h*e),l=2*(h*n-i*s),u=2*(i*e-r*n);return this.x=n+a*c+r*u-h*l,this.y=e+a*l+h*c-i*u,this.z=s+a*u+i*l-r*c,this}transformDirection(t){const n=this.x,e=this.y,s=this.z,i=t.elements;return this.x=i[0]*n+i[4]*e+i[8]*s,this.y=i[1]*n+i[5]*e+i[9]*s,this.z=i[2]*n+i[6]*e+i[10]*s,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,n){return this.x=Math.max(t.x,Math.min(n.x,this.x)),this.y=Math.max(t.y,Math.min(n.y,this.y)),this.z=Math.max(t.z,Math.min(n.z,this.z)),this}clampScalar(t,n){return this.x=Math.max(t,Math.min(n,this.x)),this.y=Math.max(t,Math.min(n,this.y)),this.z=Math.max(t,Math.min(n,this.z)),this}clampLength(t,n){const e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(n,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isParallelTo(t){const n=this.dot(t),e=this.length(),s=t.length();return Math.abs(n)===e*s}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,n){return this.x+=(t.x-this.x)*n,this.y+=(t.y-this.y)*n,this.z+=(t.z-this.z)*n,this}lerpVectors(t,n,e){return this.x=t.x+(n.x-t.x)*e,this.y=t.y+(n.y-t.y)*e,this.z=t.z+(n.z-t.z)*e,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,n){const e=t.x,s=t.y,i=t.z,r=n.x,h=n.y,a=n.z;return this.x=s*a-i*h,this.y=i*r-e*a,this.z=e*h-s*r,this}projectOnVector(t){const n=t.lengthSq();if(n===0)return this.set(0,0,0);const e=t.dot(this)/n;return this.copy(t).multiplyScalar(e)}projectOnPlane(t){return Ot.copy(this).projectOnVector(t),this.sub(Ot)}reflect(t){return this.sub(Ot.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const n=Math.sqrt(this.lengthSq()*t.lengthSq());if(n===0)return Math.PI/2;const e=this.dot(t)/n;return Math.acos(Math.max(-1,Math.min(1,e)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const n=this.x-t.x,e=this.y-t.y,s=this.z-t.z;return n*n+e*e+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromMatrixPosition(t){const n=t.elements;return this.x=n[12],this.y=n[13],this.z=n[14],this}setFromMatrixScale(t){const n=this.setFromMatrixColumn(t,0).length(),e=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=n,this.y=e,this.z=s,this}setFromMatrixColumn(t,n){return this.fromArray(t.elements,n*4)}setFromMatrix3Column(t,n){return this.fromArray(t.elements,n*3)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,n=0){return this.x=t[n],this.y=t[n+1],this.z=t[n+2],this}toArray(t=[],n=0){return t[n]=this.x,t[n+1]=this.y,t[n+2]=this.z,t}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,n=Math.random()*2-1,e=Math.sqrt(1-n*n);return this.x=e*Math.cos(t),this.y=n,this.z=e*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};j.ORIGIN=Object.freeze(new j(0,0,0)),j.X_AXIS=Object.freeze(new j(1,0,0)),j.NEGATIVE_X_AXIS=Object.freeze(new j(-1,0,0)),j.Y_AXIS=Object.freeze(new j(0,1,0)),j.NEGATIVE_Y_AXIS=Object.freeze(new j(0,-1,0)),j.Z_AXIS=Object.freeze(new j(0,0,1)),j.NEGATIVE_Z_AXIS=Object.freeze(new j(0,0,-1));let A=j;const Ot=new A,bn=new dt,At=class At{constructor(t,n,e,s,i,r,h,a,c,l,u,d,m,g,y,x){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&n!=null&&e!=null&&s!=null&&i!=null&&r!=null&&h!=null&&a!=null&&c!=null&&l!=null&&u!=null&&d!=null&&m!=null&&g!=null&&y!=null&&x!=null&&this.set(t,n,e,s,i,r,h,a,c,l,u,d,m,g,y,x)}set(t,n,e,s,i,r,h,a,c,l,u,d,m,g,y,x){const _=this.elements;return _[0]=t,_[4]=n,_[8]=e,_[12]=s,_[1]=i,_[5]=r,_[9]=h,_[13]=a,_[2]=c,_[6]=l,_[10]=u,_[14]=d,_[3]=m,_[7]=g,_[11]=y,_[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new At().fromArray(this.elements)}copy(t){const n=this.elements,e=t.elements;return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],this}copyPosition(t){const n=this.elements,e=t.elements;return n[12]=e[12],n[13]=e[13],n[14]=e[14],this}setFromMatrix3(t){const n=t.elements;return this.set(n[0],n[3],n[6],0,n[1],n[4],n[7],0,n[2],n[5],n[8],0,0,0,0,1),this}setFromExtrusionDirection(t){if(pt.equalPoint3d(t,A.Z_AXIS))this.identity();else{const n=new A(1,0,0);Math.abs(t.x)<1/64&&Math.abs(t.y)<1/64?n.crossVectors(A.Y_AXIS,t).normalize():n.crossVectors(A.Z_AXIS,t).normalize();const e=t.clone().cross(n).normalize();this.set(n.x,n.y,n.z,0,e.x,e.y,e.z,0,t.x,t.y,t.z,0,0,0,0,1)}return this}extractBasis(t,n,e){return t.setFromMatrixColumn(this,0),n.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this}makeBasis(t,n,e){return this.set(t.x,n.x,e.x,0,t.y,n.y,e.y,0,t.z,n.z,e.z,0,0,0,0,1),this}extractRotation(t){const n=this.elements,e=t.elements,s=1/ot.setFromMatrixColumn(t,0).length(),i=1/ot.setFromMatrixColumn(t,1).length(),r=1/ot.setFromMatrixColumn(t,2).length();return n[0]=e[0]*s,n[1]=e[1]*s,n[2]=e[2]*s,n[3]=0,n[4]=e[4]*i,n[5]=e[5]*i,n[6]=e[6]*i,n[7]=0,n[8]=e[8]*r,n[9]=e[9]*r,n[10]=e[10]*r,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,this}makeRotationFromQuaternion(t){return this.compose(re,t,oe)}lookAt(t,n,e){const s=this.elements;return F.subVectors(t,n),F.lengthSq()===0&&(F.z=1),F.normalize(),H.crossVectors(e,F),H.lengthSq()===0&&(Math.abs(e.z)===1?F.x+=1e-4:F.z+=1e-4,F.normalize(),H.crossVectors(e,F)),H.normalize(),wt.crossVectors(F,H),s[0]=H.x,s[4]=wt.x,s[8]=F.x,s[1]=H.y,s[5]=wt.y,s[9]=F.y,s[2]=H.z,s[6]=wt.z,s[10]=F.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,n){const e=t.elements,s=n.elements,i=this.elements,r=e[0],h=e[4],a=e[8],c=e[12],l=e[1],u=e[5],d=e[9],m=e[13],g=e[2],y=e[6],x=e[10],_=e[14],b=e[3],p=e[7],C=e[11],S=e[15],T=s[0],z=s[4],k=s[8],E=s[12],N=s[1],q=s[5],Y=s[9],J=s[13],U=s[2],Et=s[6],It=s[10],Tt=s[14],Bt=s[3],Rt=s[7],kt=s[11],Nt=s[15];return i[0]=r*T+h*N+a*U+c*Bt,i[4]=r*z+h*q+a*Et+c*Rt,i[8]=r*k+h*Y+a*It+c*kt,i[12]=r*E+h*J+a*Tt+c*Nt,i[1]=l*T+u*N+d*U+m*Bt,i[5]=l*z+u*q+d*Et+m*Rt,i[9]=l*k+u*Y+d*It+m*kt,i[13]=l*E+u*J+d*Tt+m*Nt,i[2]=g*T+y*N+x*U+_*Bt,i[6]=g*z+y*q+x*Et+_*Rt,i[10]=g*k+y*Y+x*It+_*kt,i[14]=g*E+y*J+x*Tt+_*Nt,i[3]=b*T+p*N+C*U+S*Bt,i[7]=b*z+p*q+C*Et+S*Rt,i[11]=b*k+p*Y+C*It+S*kt,i[15]=b*E+p*J+C*Tt+S*Nt,this}multiplyScalar(t){const n=this.elements;return n[0]*=t,n[4]*=t,n[8]*=t,n[12]*=t,n[1]*=t,n[5]*=t,n[9]*=t,n[13]*=t,n[2]*=t,n[6]*=t,n[10]*=t,n[14]*=t,n[3]*=t,n[7]*=t,n[11]*=t,n[15]*=t,this}determinant(){const t=this.elements,n=t[0],e=t[4],s=t[8],i=t[12],r=t[1],h=t[5],a=t[9],c=t[13],l=t[2],u=t[6],d=t[10],m=t[14],g=t[3],y=t[7],x=t[11],_=t[15];return g*(+i*a*u-s*c*u-i*h*d+e*c*d+s*h*m-e*a*m)+y*(+n*a*m-n*c*d+i*r*d-s*r*m+s*c*l-i*a*l)+x*(+n*c*u-n*h*m-i*r*u+e*r*m+i*h*l-e*c*l)+_*(-s*h*l-n*a*u+n*h*d+s*r*u-e*r*d+e*a*l)}transpose(){const t=this.elements;let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,this}setPosition(t,n,e){const s=this.elements;return t instanceof A?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=n,s[14]=e),this}invert(){const t=this.elements,n=t[0],e=t[1],s=t[2],i=t[3],r=t[4],h=t[5],a=t[6],c=t[7],l=t[8],u=t[9],d=t[10],m=t[11],g=t[12],y=t[13],x=t[14],_=t[15],b=u*x*c-y*d*c+y*a*m-h*x*m-u*a*_+h*d*_,p=g*d*c-l*x*c-g*a*m+r*x*m+l*a*_-r*d*_,C=l*y*c-g*u*c+g*h*m-r*y*m-l*h*_+r*u*_,S=g*u*a-l*y*a-g*h*d+r*y*d+l*h*x-r*u*x,T=n*b+e*p+s*C+i*S;if(T===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const z=1/T;return t[0]=b*z,t[1]=(y*d*i-u*x*i-y*s*m+e*x*m+u*s*_-e*d*_)*z,t[2]=(h*x*i-y*a*i+y*s*c-e*x*c-h*s*_+e*a*_)*z,t[3]=(u*a*i-h*d*i-u*s*c+e*d*c+h*s*m-e*a*m)*z,t[4]=p*z,t[5]=(l*x*i-g*d*i+g*s*m-n*x*m-l*s*_+n*d*_)*z,t[6]=(g*a*i-r*x*i-g*s*c+n*x*c+r*s*_-n*a*_)*z,t[7]=(r*d*i-l*a*i+l*s*c-n*d*c-r*s*m+n*a*m)*z,t[8]=C*z,t[9]=(g*u*i-l*y*i-g*e*m+n*y*m+l*e*_-n*u*_)*z,t[10]=(r*y*i-g*h*i+g*e*c-n*y*c-r*e*_+n*h*_)*z,t[11]=(l*h*i-r*u*i-l*e*c+n*u*c+r*e*m-n*h*m)*z,t[12]=S*z,t[13]=(l*y*s-g*u*s+g*e*d-n*y*d-l*e*x+n*u*x)*z,t[14]=(g*h*s-r*y*s-g*e*a+n*y*a+r*e*x-n*h*x)*z,t[15]=(r*u*s-l*h*s+l*e*a-n*u*a-r*e*d+n*h*d)*z,this}scale(t){const n=this.elements,e=t.x,s=t.y,i=t.z;return n[0]*=e,n[4]*=s,n[8]*=i,n[1]*=e,n[5]*=s,n[9]*=i,n[2]*=e,n[6]*=s,n[10]*=i,n[3]*=e,n[7]*=s,n[11]*=i,this}getMaxScaleOnAxis(){const t=this.elements,n=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],e=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],s=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(n,e,s))}makeTranslation(t,n,e){return t instanceof A?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,n,0,0,1,e,0,0,0,1),this}makeRotationX(t){const n=Math.cos(t),e=Math.sin(t);return this.set(1,0,0,0,0,n,-e,0,0,e,n,0,0,0,0,1),this}makeRotationY(t){const n=Math.cos(t),e=Math.sin(t);return this.set(n,0,e,0,0,1,0,0,-e,0,n,0,0,0,0,1),this}makeRotationZ(t){const n=Math.cos(t),e=Math.sin(t);return this.set(n,-e,0,0,e,n,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,n){const e=Math.cos(n),s=Math.sin(n),i=1-e,r=t.x,h=t.y,a=t.z,c=i*r,l=i*h;return this.set(c*r+e,c*h-s*a,c*a+s*h,0,c*h+s*a,l*h+e,l*a-s*r,0,c*a-s*h,l*a+s*r,i*a*a+e,0,0,0,0,1),this}makeScale(t,n,e){return this.set(t,0,0,0,0,n,0,0,0,0,e,0,0,0,0,1),this}makeShear(t,n,e,s,i,r){return this.set(1,e,i,0,t,1,r,0,n,s,1,0,0,0,0,1),this}compose(t,n,e){const s=this.elements,i=n.x,r=n.y,h=n.z,a=n.w,c=i+i,l=r+r,u=h+h,d=i*c,m=i*l,g=i*u,y=r*l,x=r*u,_=h*u,b=a*c,p=a*l,C=a*u,S=e.x,T=e.y,z=e.z;return s[0]=(1-(y+_))*S,s[1]=(m+C)*S,s[2]=(g-p)*S,s[3]=0,s[4]=(m-C)*T,s[5]=(1-(d+_))*T,s[6]=(x+b)*T,s[7]=0,s[8]=(g+p)*z,s[9]=(x-b)*z,s[10]=(1-(d+y))*z,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,n,e){const s=this.elements;let i=ot.set(s[0],s[1],s[2]).length();const r=ot.set(s[4],s[5],s[6]).length(),h=ot.set(s[8],s[9],s[10]).length();this.determinant()<0&&(i=-i),t.x=s[12],t.y=s[13],t.z=s[14],D.copy(this);const c=1/i,l=1/r,u=1/h;return D.elements[0]*=c,D.elements[1]*=c,D.elements[2]*=c,D.elements[4]*=l,D.elements[5]*=l,D.elements[6]*=l,D.elements[8]*=u,D.elements[9]*=u,D.elements[10]*=u,n.setFromRotationMatrix(D),e.x=i,e.y=r,e.z=h,this}equals(t){const n=this.elements,e=t.elements;for(let s=0;s<16;s++)if(n[s]!==e[s])return!1;return!0}fromArray(t,n=0){for(let e=0;e<16;e++)this.elements[e]=t[e+n];return this}toArray(t=[],n=0){const e=this.elements;return t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3],t[n+4]=e[4],t[n+5]=e[5],t[n+6]=e[6],t[n+7]=e[7],t[n+8]=e[8],t[n+9]=e[9],t[n+10]=e[10],t[n+11]=e[11],t[n+12]=e[12],t[n+13]=e[13],t[n+14]=e[14],t[n+15]=e[15],t}};At.IDENTITY=Object.freeze(new At);let W=At;const ot=new A,D=new W,re=new A(0,0,0),oe=new A(1,1,1),H=new A,wt=new A,F=new A;class Z{constructor(t=void 0,n=void 0){this.min=t==null?new A(1/0,1/0,1/0):new A(t.x,t.y,t.z),this.max=n==null?new A(-1/0,-1/0,-1/0):new A(n.x,n.y,n.z)}set(t,n){return this.min.copy(t),this.max.copy(n),this}setFromArray(t){this.makeEmpty();for(let n=0,e=t.length;n<e;n+=3)this.expandByPoint(Xt.fromArray(t,n));return this}setFromPoints(t){this.makeEmpty();for(let n=0,e=t.length;n<e;n++)this.expandByPoint(t[n]);return this}setFromCenterAndSize(t,n){const e=Xt.copy(n).multiplyScalar(.5);return this.min.copy(t).sub(e),this.max.copy(t).add(e),this}clone(){return new Z().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new A(0,0,0):new A(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new A(0,0,0):new A(0,0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,n){return n.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsPlane(t){let n,e;return t.normal.x>0?(n=t.normal.x*this.min.x,e=t.normal.x*this.max.x):(n=t.normal.x*this.max.x,e=t.normal.x*this.min.x),t.normal.y>0?(n+=t.normal.y*this.min.y,e+=t.normal.y*this.max.y):(n+=t.normal.y*this.max.y,e+=t.normal.y*this.min.y),t.normal.z>0?(n+=t.normal.z*this.min.z,e+=t.normal.z*this.max.z):(n+=t.normal.z*this.max.z,e+=t.normal.z*this.min.z),n<=-t.constant&&e>=-t.constant}clampPoint(t,n){return n.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Xt).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:($[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),$[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),$[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),$[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),$[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),$[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),$[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),$[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints($),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)}}const $=[new A,new A,new A,new A,new A,new A,new A,new A],Xt=new A,Sn=new R;class O{constructor(t=void 0,n=void 0){this.min=t==null?new R(1/0,1/0):new R(t.x,t.y),this.max=n==null?new R(-1/0,-1/0):new R(n.x,n.y)}set(t,n){return this.min.copy(t),this.max.copy(n),this}setFromPoints(t){this.makeEmpty();for(let n=0,e=t.length;n<e;n++)this.expandByPoint(t[n]);return this}setFromCenterAndSize(t,n){const e=Sn.copy(n).multiplyScalar(.5);return this.min.copy(t).sub(e),this.max.copy(t).add(e),this}clone(){return new O().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new R(0,0):new R(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new R(0,0):new R(0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,n){return n.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y)}clampPoint(t,n){return n.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Sn).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),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)}}const Cn=new A,he=new A,ae=new rt;class mt{constructor(t=new A(1,0,0),n=0){this.normal=t,this.constant=n}set(t,n){return this.normal.copy(t),this.constant=n,this}setComponents(t,n,e,s){return this.normal.set(t,n,e),this.constant=s,this}setFromNormalAndCoplanarPoint(t,n){return this.normal.copy(t),this.constant=-n.dot(this.normal),this}setFromCoplanarPoints(t,n,e){const s=Cn.subVectors(e,n).cross(he.subVectors(t,n)).normalize();return this.setFromNormalAndCoplanarPoint(s,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}projectPoint(t,n){return n.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectsBox(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,n){const e=n||ae.getNormalMatrix(t),s=this.coplanarPoint(Cn).applyMatrix4(t),i=this.normal.applyMatrix3(e).normalize();return this.constant=-s.dot(i),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new mt().copy(this)}}class P extends R{clone(){return new P(this.x,this.y)}static pointArrayToNumberArray(t){const n=new Array(t.length*2);return t.forEach((e,s)=>{e.toArray(n,s*2)}),n}}class M extends A{clone(){return new M(this.x,this.y,this.z)}static pointArrayToNumberArray(t,n=!0){const e=n?3:2,s=new Array(t.length*e);return t.forEach((i,r)=>{i.toArray(s,r*e)}),s}}const En=new W,In=new dt,Pt=class Pt{constructor(t=0,n=0,e=0,s=Pt.DEFAULT_ORDER){this._x=t,this._y=n,this._z=e,this._order=s}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,n,e,s=this._order){return this._x=t,this._y=n,this._z=e,this._order=s,this._onChangeCallback(),this}clone(){return new Pt(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,n=this._order,e=!0){const s=t.elements,i=s[0],r=s[4],h=s[8],a=s[1],c=s[5],l=s[9],u=s[2],d=s[6],m=s[10];switch(n){case"XYZ":this._y=Math.asin(Q(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-l,m),this._z=Math.atan2(-r,i)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Q(l,-1,1)),Math.abs(l)<.9999999?(this._y=Math.atan2(h,m),this._z=Math.atan2(a,c)):(this._y=Math.atan2(-u,i),this._z=0);break;case"ZXY":this._x=Math.asin(Q(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,m),this._z=Math.atan2(-r,c)):(this._y=0,this._z=Math.atan2(a,i));break;case"ZYX":this._y=Math.asin(-Q(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,m),this._z=Math.atan2(a,i)):(this._x=0,this._z=Math.atan2(-r,c));break;case"YZX":this._z=Math.asin(Q(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-l,c),this._y=Math.atan2(-u,i)):(this._x=0,this._y=Math.atan2(h,m));break;case"XZY":this._z=Math.asin(-Q(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(h,i)):(this._x=Math.atan2(-l,m),this._y=0);break}return this._order=n,e===!0&&this._onChangeCallback(),this}setFromQuaternion(t,n,e=!0){return En.makeRotationFromQuaternion(t),this.setFromRotationMatrix(En,n,e)}setFromVector3(t,n=this._order){return this.set(t.x,t.y,t.z,n)}reorder(t){return In.setFromEuler(this),this.setFromQuaternion(In,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],n=0){return t[n]=this._x,t[n+1]=this._y,t[n+2]=this._z,t[n+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Pt.DEFAULT_ORDER="XYZ";let Dt=Pt;function Yt(o,t,n=!1){const e=o.x,s=o.y;let i=!1;const r=t.length;for(let h=0,a=r-1;h<r;a=h++){const c=t[h].x,l=t[h].y,u=t[a].x,d=t[a].y;let m=l>s!=d>s;n&&(m=l>=s!=d>=s),m&&e<(u-c)*(s-l)/(d-l)+c&&(i=!i)}return i}function Tn(o,t){if(o.length===0||t.length===0)return!1;const n=new O().setFromPoints(o),e=new O().setFromPoints(t);if(!n.intersectsBox(e))return!1;for(let s=0;s<o.length;){if(Yt(o[s],t,!0))return!0;s<o.length-1&&pt.equalPoint2d(o[s+1],o[s])&&++s,++s}return!1}const Bn={isPointInPolygon:Yt,isPolygonIntersect:Tn};function ce(o,t){const n=[],e=t-1,s=o;for(let i=0;i<=s;i++)n.push(0);for(let i=1;i<=e-s;i++)n.push(i);for(let i=0;i<=s;i++)n.push(e-s+1);return n}function le(o,t){const n=t.length-1,e=o,s=[0];let i=0;for(let h=1;h<=n;h++){const a=t[h][0]-t[h-1][0],c=t[h][1]-t[h-1][1],l=t[h][2]-t[h-1][2],u=Math.sqrt(a*a+c*c+l*l);i+=u,s.push(i)}const r=[];for(let h=0;h<=e;h++)r.push(0);for(let h=1;h<=n-e;h++){const a=s[h]/i;r.push(a*(n-e+1))}for(let h=0;h<=e;h++)r.push(n-e+1);return r}function Rn(o,t="Uniform"){const n=o.length;if(n===0)return[];if(n===1)return[0];const e=n-1;if(t==="Uniform")return new Array(n).fill(0).map((r,h)=>h/e);const s=[0];let i=0;for(let r=1;r<=e;r++){const h=o[r][0]-o[r-1][0],a=o[r][1]-o[r-1][1],c=o[r][2]-o[r-1][2],l=Math.sqrt(h*h+a*a+c*c),u=t==="SqrtChord"?Math.sqrt(l):l;i+=u,s.push(i)}return i<1e-12?new Array(n).fill(0).map((r,h)=>h/e):s.map(r=>r/i)}function kn(o,t){const n=t.length-1,e=o,s=n+e+1,i=new Array(s+1).fill(0),r=t[t.length-1];for(let h=s-e;h<=s;h++)i[h]=r;for(let h=1;h<=n-e;h++){let a=0;for(let c=h;c<h+e;c++)a+=t[c];i[h+e]=a/e}return i}function ue(o,t){const n=t.length-1,e=o,s=[0];let i=0;for(let h=1;h<=n;h++){const a=t[h][0]-t[h-1][0],c=t[h][1]-t[h-1][1],l=t[h][2]-t[h-1][2],u=Math.sqrt(a*a+c*c+l*l),d=Math.sqrt(u);i+=d,s.push(i)}const r=[];for(let h=0;h<=e;h++)r.push(0);for(let h=1;h<=n-e;h++){const a=s[h]/i;r.push(a*(n-e+1))}for(let h=0;h<=e;h++)r.push(n-e+1);return r}function Zt(o,t){const n=o.length,e=o.map(r=>r.slice()),s=t.slice();for(let r=0;r<n;r++){let h=r,a=Math.abs(e[r][r]);for(let c=r+1;c<n;c++){const l=Math.abs(e[c][r]);l>a&&(a=l,h=c)}if(a<1e-12)throw new Error("Interpolation matrix is singular.");if(h!==r){const c=e[r];e[r]=e[h],e[h]=c;const l=s[r];s[r]=s[h],s[h]=l}for(let c=r+1;c<n;c++){const l=e[c][r]/e[r][r];if(!(Math.abs(l)<1e-14)){for(let u=r;u<n;u++)e[c][u]-=l*e[r][u];s[c]-=l*s[r]}}}const i=new Array(n).fill(0);for(let r=n-1;r>=0;r--){let h=s[r];for(let a=r+1;a<n;a++)h-=e[r][a]*i[a];i[r]=h/e[r][r]}return i}function Gt(o,t,n="Uniform",e,s){if(o.length===0)return{controlPoints:[],knots:[],weights:[]};const i=o.map(E=>[E[0],E[1],E[2]??0]),r=!!e,h=!!s,a=(r?1:0)+(h?1:0),c=i.length-1,l=c+a;if(l<t)throw new Error("Not enough points to interpolate a curve of this degree.");const u=Rn(i,n),d=u.slice();r&&d.unshift(u[0]),h&&d.push(u[u.length-1]);const m=kn(t,d),g=l+1,y=new Array(g),x=new Array(g),_=new Array(g),b=new Array(g);let p=0;y[p]=new Array(g).fill(0),y[p][0]=1,x[p]=i[0][0],_[p]=i[0][1],b[p]=i[0][2],p++;for(let E=1;E<=c-1;E++){const N=u[E];y[p]=new Array(g).fill(0);for(let q=0;q<=l;q++)y[p][q]=tt(q,t,N,m);x[p]=i[E][0],_[p]=i[E][1],b[p]=i[E][2],p++}if(y[p]=new Array(g).fill(0),y[p][l]=1,x[p]=i[c][0],_[p]=i[c][1],b[p]=i[c][2],p++,r){const E=m[t+1]-m[0],N=E!==0?t/E:0;y[p]=new Array(g).fill(0),y[p][0]=-N,y[p][1]=N,x[p]=(e==null?void 0:e[0])??0,_[p]=(e==null?void 0:e[1])??0,b[p]=(e==null?void 0:e[2])??0,p++}if(h){const E=m[l+t+1]-m[l],N=E!==0?t/E:0;y[p]=new Array(g).fill(0),y[p][l-1]=-N,y[p][l]=N,x[p]=(s==null?void 0:s[0])??0,_[p]=(s==null?void 0:s[1])??0,b[p]=(s==null?void 0:s[2])??0,p++}const C=Zt(y,x),S=Zt(y,_),T=Zt(y,b),z=new Array(g);for(let E=0;E<g;E++)z[E]=[C[E],S[E],T[E]];const k=new Array(g).fill(1);return{controlPoints:z,knots:m,weights:k}}function tt(o,t,n,e){if(t===0)return n>=e[o]&&n<e[o+1]?1:0;const s=e[o+t]-e[o],i=e[o+t+1]-e[o+1],r=s>1e-10?(n-e[o])/s:0,h=i>1e-10?(e[o+t+1]-n)/i:0;return r*tt(o,t-1,n,e)+h*tt(o+1,t-1,n,e)}function gt(o,t,n,e,s){const i=e.length-1,r=t;if(o=Math.max(n[r],Math.min(n[i+1],o)),Math.abs(o-n[i+1])<1e-8)return[...e[i]];if(Math.abs(o-n[r])<1e-8)return[...e[0]];const h=[0,0,0];let a=0;for(let c=0;c<=i;c++){const l=tt(c,r,o,n),u=s[c]*l;h[0]+=e[c][0]*u,h[1]+=e[c][1]*u,h[2]+=e[c][2]*u,a+=u}if(Math.abs(a)<1e-10){const c=n[n.length-r-1];if(Math.abs(o-c)<1e-8)return[...e[i]];if(Math.abs(o-n[r])<1e-8)return[...e[0]]}return Math.abs(a)>=1e-10&&(h[0]/=a,h[1]/=a,h[2]/=a),h}function Qt(o,t,n,e){if(t===0)return 0;const s=e[o+t]-e[o],i=e[o+t+1]-e[o+1];let r=0;return s>1e-10&&(r+=t/s*tt(o,t-1,n,e)),i>1e-10&&(r-=t/i*tt(o+1,t-1,n,e)),r}function de(o,t,n,e){if(t<=1)return 0;const s=e[o+t]-e[o],i=e[o+t+1]-e[o+1];let r=0;return s>1e-10&&(r+=t/s*Qt(o,t-1,n,e)),i>1e-10&&(r-=t/i*Qt(o+1,t-1,n,e)),r}function Nn(o,t,n,e,s){const i=e.length-1,r=t,h=n[r],a=n[i+1];o=Math.max(h,Math.min(a,o));const c=[0,0,0],l=[0,0,0],u=[0,0,0];let d=0,m=0,g=0;for(let T=0;T<=i;T++){const z=tt(T,r,o,n),k=Qt(T,r,o,n),E=de(T,r,o,n),N=s[T],q=N*z,Y=N*k,J=N*E,U=e[T];c[0]+=q*U[0],c[1]+=q*U[1],c[2]+=q*U[2],l[0]+=Y*U[0],l[1]+=Y*U[1],l[2]+=Y*U[2],u[0]+=J*U[0],u[1]+=J*U[1],u[2]+=J*U[2],d+=q,m+=Y,g+=J}if(Math.abs(d)<1e-10)return{point:gt(o,t,n,e,s),deriv1:[0,0,0],deriv2:[0,0,0]};const y=d*d,x=[c[0]/d,c[1]/d,c[2]/d],_=[(l[0]*d-c[0]*m)/y,(l[1]*d-c[1]*m)/y,(l[2]*d-c[2]*m)/y],b=u[0]*d-c[0]*g,p=u[1]*d-c[1]*g,C=u[2]*d-c[2]*g,S=[b/y-2*m*_[0]/d,p/y-2*m*_[1]/d,C/y-2*m*_[2]/d];return{point:x,deriv1:_,deriv2:S}}function jn(o,t){const n=o[0],e=o[1],s=t[0],i=t[1],r=n*n+e*e;return r<1e-20?0:(n*i-e*s)/Math.pow(r,1.5)}function qn(o,t,n,e){const s=o,i=t[s],r=t[t.length-s-1];let h=0;const a=1e3,c=(r-i)/a;let l=gt(i,o,t,n,e);for(let y=1;y<=a;y++){const x=i+y*c,_=gt(x,o,t,n,e),b=_[0]-l[0],p=_[1]-l[1],C=_[2]-l[2];h+=Math.sqrt(b*b+p*p+C*C),l=_}const u=gt(r,o,t,n,e),d=u[0]-l[0],m=u[1]-l[1],g=u[2]-l[2];return h+=Math.sqrt(d*d+m*m+g*g),h}function me(o,t=3,n="Uniform",e,s){return o.length===0?[]:Gt(o,t,n,e,s).controlPoints}const Vn=new W,Ln=new A,ge=new A,ye=new A,Kt=new M;function vn(o){return new W().setFromExtrusionDirection(new A(o.x,o.y,o.z))}function xe(o){return Vn.setFromExtrusionDirection(new A(o.x,o.y,o.z)),Vn.extractBasis(Ln,ge,ye),Ln.clone()}function _e(o,t){return new M(o.x,o.y,o.z??0).applyMatrix4(vn(t))}function Wt(o,t){return new M(o.x,o.y,o.z??0).applyMatrix4(vn(t).invert())}function fe(o,t,n){const e=Wt(o,n),s=Wt(t,n);return Kt.set(s.x-e.x,s.y-e.y,(s.z??0)-(e.z??0)),w.normalizeAngle(Math.atan2(Kt.y,Kt.x))}function $t(o){const t=o.length;if(t<3)return 0;let n=0;for(let e=0,s=t-1;e<t;s=e++){const i=o[s],r=o[e];n+=i.x*r.y-r.x*i.y}return n*.5}function Un(o){return Math.abs($t(o))}function Fn(o){const t=o.length;if(t<3)return 0;let n=0,e=0,s=0;for(let i=0,r=t-1;i<t;r=i++){const h=o[r],a=o[i],c=h.x,l=h.y,u=h.z??0,d=a.x,m=a.y,g=a.z??0;n+=(u+g)*(l-m),e+=(c+d)*(u-g),s+=(l+m)*(c-d)}return .5*Math.hypot(n,e,s)}function On(o){return o.length<3?0:Un(o)}function Xn(o){return o.length<3?0:Fn(o)}class Dn{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class Jt extends Dn{translate(t){return this.transform(new rt().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class ht extends Jt{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(t){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(t){const n=this.getUtoTmapping(t);return this.getPoint(n)}getPoints(t=5){const n=[];for(let e=0;e<=t;e++)n.push(this.getPoint(e/t));return n}getSpacedPoints(t=5){const n=[];for(let e=0;e<=t;e++)n.push(this.getPointAt(e/t));return n}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){const n=[];let e,s=this.getPoint(0),i=0;n.push(0);for(let r=1;r<=t;r++)e=this.getPoint(r/t),i+=e.distanceTo(s),n.push(i),s=e;return n}getUtoTmapping(t,n){const e=this.getLengths();let s=0;const i=e.length;let r;n?r=n:r=t*e[i-1];let h=0,a=i-1,c;for(;h<=a;)if(s=Math.floor(h+(a-h)/2),c=e[s]-r,c<0)h=s+1;else if(c>0)a=s-1;else{a=s;break}if(s=a,e[s]===r)return s/(i-1);const l=e[s],d=e[s+1]-l,m=(r-l)/d;return(s+m)/(i-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const i=this.getPoint(e),r=this.getPoint(s),h=new P;return h.copy(r).sub(i).normalize(),h}getTangentAt(t){const n=this.getUtoTmapping(t);return this.getTangent(n)}}class G extends ht{constructor(t,n,e,s,i){super();const r=+(t!==void 0)+ +(n!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(i!==void 0);if(r==3)typeof t=="object"&&typeof n=="object"&&typeof e=="object"?this.createByThreePoints(t,n,e):this.createByStartEndPointsAndBulge(t,n,e);else if(r==5){const h=t;this.center=new P(h.x,h.y),this.radius=n,this._clockwise=i,this._startAngle=this._clockwise?this._mirrorAngle(w.normalizeAngle(e)):w.normalizeAngle(e),this._endAngle=this._clockwise?this._mirrorAngle(w.normalizeAngle(s)):w.normalizeAngle(s)}else throw V.AcCmErrors.ILLEGAL_PARAMETERS}createByThreePoints(t,n,e){const s=(z,k)=>({x:(z.x+k.x)/2,y:(z.y+k.y)/2}),i=(z,k)=>(k.y-z.y)/(k.x-z.x),r=z=>-1/z,h=s(t,n),a=s(n,e),c=i(t,n),l=i(n,e),u=r(c),d=r(l),m=(z,k,E,N)=>{const q=(N-k)/(z-E),Y=z*q+k;return{x:q,y:Y}},g=h.y-u*h.x,y=a.y-d*a.x,x=m(u,g,d,y),_=Math.sqrt(Math.pow(t.x-x.x,2)+Math.pow(t.y-x.y,2)),b=(z,k)=>Math.atan2(z.y-k.y,z.x-k.x),p=b(t,x),C=b(n,x),S=b(e,x),T=S>p&&S<C||p>S&&p<C||C>S&&C<p;this.center=x,this.radius=_,this._clockwise=!T,this._startAngle=p,this._endAngle=S}createByStartEndPointsAndBulge(t,n,e){let s,i,r;e<0?(s=Math.atan(-e)*4,i=new R(t),r=new R(n)):(s=Math.atan(e)*4,i=new R(n),r=new R(t));const h=new R().subVectors(r,i),a=h.length(),c=new R().addVectors(i,h.multiplyScalar(.5)),l=Math.abs(a/2/Math.tan(s/2)),u=h.normalize(),d=e<0?-Math.PI/2:Math.PI/2,m=new R(u.x*Math.cos(d)-u.y*Math.sin(d),u.y*Math.cos(d)+u.x*Math.sin(d));let g;s<Math.PI?e<0?g=c.add(m.multiplyScalar(l)):g=c.add(m.multiplyScalar(-l)):e<0?g=c.add(m.multiplyScalar(-l)):g=c.add(m.multiplyScalar(l)),e<0?(this._startAngle=Math.atan2(i.y-g.y,i.x-g.x),this._endAngle=Math.atan2(r.y-g.y,r.x-g.x)):(this._startAngle=Math.atan2(r.y-g.y,r.x-g.x),this._endAngle=Math.atan2(i.y-g.y,i.x-g.x)),this._clockwise=e<0,this.center=g,this.radius=r.sub(g).length()}get center(){return this._center}set center(t){this._center=new P(t.x,t.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(t){this._startAngle=this._clockwise?this._mirrorAngle(w.normalizeAngle(t)):w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(t){const n=this.startAngle==0&&t==I?t:w.normalizeAngle(t);this._endAngle=this._clockwise?this._mirrorAngle(n):n,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(t){return(360-t*180/Math.PI)%360*Math.PI/180}_getInternalAngle(t){return this._clockwise?this._mirrorAngle(t):t}get deltaAngle(){const t=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return this.clockwise?w.normalizeAngle(t-n):w.normalizeAngle(n-t)}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const t=this._getInternalAngle(this.startAngle),n=this._clockwise?w.normalizeAngle(t-this.deltaAngle/2):w.normalizeAngle(t+this.deltaAngle/2),e=this._clockwise?this._mirrorAngle(n):n;return this.getPointAtAngle(e)}get closed(){const t=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return Math.abs(n-t)/Math.PI%2==0}calculateBoundingBox(){const t=[this.startPoint,this.endPoint],n=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const i of n){const r=this._getInternalAngle(i);w.isBetweenAngle(r,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(i))}const e=t.map(i=>i.x),s=t.map(i=>i.y);return new O(new P(Math.min(...e),Math.min(...s)),new P(Math.max(...e),Math.max(...s)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){const n=t,e=this.center.clone().applyMatrix2d(n),s=this.startPoint.clone().applyMatrix2d(n);if(this.closed)return this.center=e,this.radius=e.distanceTo(s),this._startAngle=Math.atan2(s.y-e.y,s.x-e.x),this._endAngle=this._startAngle,this._clockwise=n.determinant()<0?!this._clockwise:this._clockwise,this._boundingBoxNeedsUpdate=!0,this;const i=this.midPoint.clone().applyMatrix2d(n),r=this.endPoint.clone().applyMatrix2d(n),h=new G(s,i,r),a=n.determinant()<0?!this.clockwise:this.clockwise,c=l=>{const u=w.normalizeAngle(l);return a?this._mirrorAngle(u):u};return this.center=h.center,this.radius=h.radius,this.clockwise=a,this.startAngle=c(Math.atan2(s.y-h.center.y,s.x-h.center.x)),this.endAngle=c(Math.atan2(r.y-h.center.y,r.x-h.center.x)),this._boundingBoxNeedsUpdate=!0,this}clone(){return new G(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(t){const n=this._getInternalAngle(t),e=this.center.x+this.radius*Math.cos(n),s=this.center.y+this.radius*Math.sin(n);return new P(e,s)}getQuadrantPoints(){const t=[],n=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle),s=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const i of s){const r=this._getInternalAngle(i);w.isBetweenAngle(r,n,e,this.clockwise)&&t.push(this.getPointAtAngle(i))}return t}nearestPoint(t){const n=new P(t.x,t.y),e=n.x-this.center.x,s=n.y-this.center.y;if(Math.hypot(e,s)<1e-12)return this.startPoint.clone();const r=Math.atan2(s,e),h=this.clockwise?this._mirrorAngle(w.normalizeAngle(r)):w.normalizeAngle(r),a=this._getInternalAngle(h),c=this._getInternalAngle(this.startAngle),l=this._getInternalAngle(this.endAngle);if(w.isBetweenAngle(a,c,l,this.clockwise))return this.getPointAtAngle(h);const u=n.distanceToSquared(this.startPoint),d=n.distanceToSquared(this.endPoint);return u<=d?this.startPoint.clone():this.endPoint.clone()}perpendicularPoints(t){const n=new P(t.x,t.y),e=n.x-this.center.x,s=n.y-this.center.y,i=Math.hypot(e,s);if(i<1e-12)return[];const r=e/i,h=s/i,a=[new P(this.center.x+r*this.radius,this.center.y+h*this.radius),new P(this.center.x-r*this.radius,this.center.y-h*this.radius)],c=[],l=this._getInternalAngle(this.startAngle),u=this._getInternalAngle(this.endAngle);for(const d of a){const m=Math.atan2(d.y-this.center.y,d.x-this.center.x),g=this.clockwise?this._mirrorAngle(w.normalizeAngle(m)):w.normalizeAngle(m),y=this._getInternalAngle(g);(this.closed||w.isBetweenAngle(y,l,u,this.clockwise))&&c.push(d)}return c}tangentPoints(t){const n=[],e=t.x-this.center.x,s=t.y-this.center.y,i=Math.hypot(e,s),r=this.radius;if(i<r)return n;const h=Math.acos(r/i),a=Math.atan2(s,e),c=[a+h,a-h],l=this._getInternalAngle(this.startAngle),u=this._getInternalAngle(this.endAngle);for(const d of c){const m=this.clockwise?this._mirrorAngle(w.normalizeAngle(d)):w.normalizeAngle(d),g=this._getInternalAngle(m);(this.closed||w.isBetweenAngle(g,l,u,this.clockwise))&&n.push(this.getPointAtAngle(m))}return n}getPoints(t=100){const n=[];let e=this.deltaAngle,s=this._getInternalAngle(this.startAngle);if(this.closed&&(e=I,s=0),this.clockwise)for(let i=0;i<=t;i++){const r=s-e*(i/t),h=this._clockwise?this._mirrorAngle(r):r,a=this.getPointAtAngle(h);n.push(new P(a.x,a.y))}else for(let i=0;i<=t;i++){const r=s+e*(i/t),h=this._clockwise?this._mirrorAngle(r):r,a=this.getPointAtAngle(h);n.push(new P(a.x,a.y))}return n}}const Mt=1e-6;function Yn(o,t){if(Ue(o)){const i=Pe(o,t);return i?[i]:[]}const n=$n(o);if(n.numberOfVertices<2)return[];const s=Oe(n,t);return s?[s]:[]}function Ae(o){return $n(o)}function Pe(o,t){const n=pe(o);if(n.length===0)return null;const e=[];for(const h of n){const a=Me(h,t);if(!a)return null;e.push(a)}const s=we(o),i=Ce(e,s,o.closed,t);if(i.length<2)return null;const r=new nt;return i.forEach((h,a)=>{r.addVertexAt(a,{x:h.x,y:h.y})}),r.closed=o.closed,r}function pe(o){const t=[],n=o.numberOfVertices,e=o.closed?n:n-1;for(let s=0;s<e;s++){const i=o.vertices[s],r=o.vertices[(s+1)%n];B.isPositive(Math.abs(i.bulge??0))?t.push({kind:"arc",arc:new G(i,r,i.bulge)}):t.push({kind:"line",start:new P(i.x,i.y),end:new P(r.x,r.y)})}return t}function we(o){const t=[];for(let n=0;n<o.numberOfVertices;n++)t.push(o.getPointAt(n));return t}function Me(o,t){if(o.kind==="line"){const e=Se(o.start,o.end,t);return e?{kind:"line",...e}:null}const n=ze(o.arc,o.arc.startPoint,o.arc.endPoint,t);return n?{kind:"arc",arc:n}:null}function ze(o,t,n,e){const s=be(o,t,n,e),i=o.radius+s;return B.isNonPositive(i)?null:new G(o.center,i,o.startAngle,o.endAngle,o.clockwise)}function be(o,t,n,e){const s=n.x-t.x,i=n.y-t.y,r=Math.hypot(s,i);if(B.isNonPositive(r))return o.clockwise?-e:e;const h=-i/r,a=s/r,c=o.center.x-(t.x+n.x)/2,l=o.center.y-(t.y+n.y)/2;return c*h+l*a>0?-e:e}function Se(o,t,n){const e=t.x-o.x,s=t.y-o.y,i=Math.hypot(e,s);if(B.isNonPositive(i))return null;const r=-s/i*n,h=e/i*n;return{start:new P(o.x+r,o.y+h),end:new P(t.x+r,t.y+h),dx:e,dy:s}}function Ce(o,t,n,e){var h;const s=o.length;if(s===0)return[];const i=Ee(o,t,n,e),r=[((h=i[0].nextSegmentStart)==null?void 0:h.clone())??i[0].point.clone()];for(let a=0;a<s;a++){const c=o[a],l=a===s-1&&!n?{point:ke(c)}:i[(a+1)%s];if(a>0&&i[a].filletPoints&&i[a].filletPoints.forEach(u=>r.push(u.clone())),c.kind==="arc"){const u=i[a].nextSegmentStart??i[a].point,d=l.point,m=Ie(c.arc,u,d,Math.max(16,32));for(let g=1;g<m.length;g++)r.push(m[g])}else r.push(l.point.clone())}return Jn(r)}function Ee(o,t,n,e){const s=o.length,i=[];for(let r=0;r<s;r++)r===0?i.push(n?Zn(o[s-1],o[0],t[0],e):{point:Re(o[0])}):i.push(Zn(o[r-1],o[r],t[r],e));return i}function Ie(o,t,n,e){const s=o.nearestPoint(t),i=o.nearestPoint(n),r=Ht(o,s),h=Ht(o,i),a=Be(o,r,h),c=[];for(let l=0;l<=e;l++){const u=l/e,d=o.clockwise?r-a*u:r+a*u;c.push(o.getPointAtAngle(Te(o,d)))}return c}function Ht(o,t){return Math.atan2(t.y-o.center.y,t.x-o.center.x)}function Te(o,t){const n=w.normalizeAngle(t);return o.clockwise?tn(n):n}function tn(o){return(360-o*180/Math.PI)%360*(Math.PI/180)}function Be(o,t,n){if(o.clockwise){let s=t-n;return B.isNonPositive(s)&&(s+=I),s}let e=n-t;return B.isNonPositive(e)&&(e+=I),e}function Re(o){return o.kind==="line"?o.start.clone():o.arc.startPoint.clone()}function ke(o){return o.kind==="line"?o.end.clone():o.arc.endPoint.clone()}function Zn(o,t,n,e){return o.kind==="line"&&t.kind==="line"?{point:nn({start:o.start,end:o.end,dx:o.dx,dy:o.dy},{start:t.start,end:t.end,dx:t.dx,dy:t.dy})}:o.kind==="line"&&t.kind==="arc"?Gn(o,t.arc,n,e,!0):o.kind==="arc"&&t.kind==="line"?Gn(t,o.arc,n,e,!1):o.kind==="arc"&&t.kind==="arc"?Ne(o.arc,t.arc,n,e):{point:n.clone()}}function Ne(o,t,n,e){const s=Wn(o.endPoint,t.startPoint),r=ve(o,t).filter(l=>zt(o,l)&&zt(t,l));if(r.length>0)return{point:Kn(r,s)};const h=o.endPoint.clone(),a=t.startPoint.clone(),c=Qn(n,Math.abs(e),h,a);return{point:h,filletPoints:c,nextSegmentStart:a}}function Gn(o,t,n,e,s){const i=Wn(s?o.end:o.start,s?t.startPoint:t.endPoint),r=Le(o,t,i);if(qe(o,r)&&zt(t,r))return{point:r};const h=je(o,n,e),a=s?t.startPoint.clone():t.endPoint.clone(),c=Qn(n,Math.abs(e),s?h:a,s?a:h);return s?{point:h,filletPoints:c,nextSegmentStart:a}:{point:a,filletPoints:c,nextSegmentStart:h}}function je(o,t,n){const e=Math.hypot(o.dx,o.dy),s=-o.dy/e*n,i=o.dx/e*n;return new P(t.x+s,t.y+i)}function qe(o,t){const n=Math.hypot(o.dx,o.dy);if(B.isNonPositive(n))return!1;const e=o.dx/n,s=o.dy/n,i=t.x-o.start.x,r=t.y-o.start.y,h=Math.abs(i*s-r*e);return B.equalToZero(h)}function Qn(o,t,n,e){const s=Math.atan2(n.y-o.y,n.x-o.x),i=Math.atan2(e.y-o.y,e.x-o.x),r=Ve(s,i);if(B.equalToZero(Math.abs(r)))return[];const h=[],a=Math.max(2,Math.ceil(Math.abs(r)/Math.PI*16));for(let c=1;c<a;c++){const l=c/a,u=s+r*l;h.push(new P(o.x+t*Math.cos(u),o.y+t*Math.sin(u)))}return h}function Ve(o,t){let n=t-o;for(;n>Math.PI;)n-=I;for(;n<=-Math.PI;)n+=I;return n}function Le(o,t,n){const e=Math.hypot(o.dx,o.dy);if(B.isNonPositive(e))return n.clone();const s=o.dx/e,i=o.dy/e,r=o.start.x-t.center.x,h=o.start.y-t.center.y,a=2*(r*s+h*i),c=r*r+h*h-t.radius*t.radius,l=a*a-4*c;if(l<0)return n.clone();const u=Math.sqrt(l),d=[(-a-u)/2,(-a+u)/2].map(g=>new P(o.start.x+s*g,o.start.y+i*g)),m=d.filter(g=>zt(t,g));return Kn(m.length>0?m:d,n)}function zt(o,t){const n=Math.abs(Math.hypot(t.x-o.center.x,t.y-o.center.y)-o.radius);if(B.isPositive(n))return!1;const e=Ht(o,t),s=o.clockwise?tn(w.normalizeAngle(o.startAngle)):w.normalizeAngle(o.startAngle),i=o.clockwise?tn(w.normalizeAngle(o.endAngle)):w.normalizeAngle(o.endAngle);return w.isBetweenAngle(e,s,i,o.clockwise)}function ve(o,t){const n=t.center.x-o.center.x,e=t.center.y-o.center.y,s=Math.hypot(n,e);if(B.isNonPositive(s))return[];const i=o.radius+t.radius,r=Math.abs(o.radius-t.radius);if(s>i+Mt)return[];if(s<r-Mt)return[];const h=(o.radius*o.radius-t.radius*t.radius+s*s)/(2*s),a=o.radius*o.radius-h*h;if(a<-Mt)return[];const c=o.center.x+h*n/s,l=o.center.y+h*e/s;if(a<=Mt)return[new P(c,l)];const u=Math.sqrt(a),d=-e*u/s,m=n*u/s;return[new P(c+d,l+m),new P(c-d,l-m)]}function Kn(o,t){let n=o[0],e=n.distanceToSquared(t);for(let s=1;s<o.length;s++){const i=o[s].distanceToSquared(t);i<e&&(n=o[s],e=i)}return n.clone()}function Wn(o,t){return new P((o.x+t.x)/2,(o.y+t.y)/2)}function Ue(o){const t=o.numberOfVertices,n=o.closed?t:t-1;for(let e=0;e<n;e++){const s=o.vertices[e];if(B.isPositive(Math.abs(s.bulge??0)))return!0}return!1}function $n(o){const t=Fe(o.vertices.map(n=>new P(n.x,n.y)),o.closed);return t.length===o.numberOfVertices?o:new nt(t.map(n=>({x:n.x,y:n.y})),o.closed)}function Fe(o,t){const n=Jn(o);if(!t||n.length<2)return n;const e=n[0],s=n[n.length-1];return B.isNonPositive(Math.hypot(e.x-s.x,e.y-s.y))&&n.pop(),n}function Jn(o){const t=[];return o.forEach(n=>{const e=t[t.length-1];(!e||B.isPositive(Math.hypot(e.x-n.x,e.y-n.y)))&&t.push(new P(n.x,n.y))}),t}function Oe(o,t){const n=[];for(let r=0;r<o.numberOfVertices;r++)n.push(o.getPointAt(r));const e=Xe(n,o.closed,t);if(e.length===0)return null;const s=[];if(o.closed){if(e.length<2)return null;const r=e.length;for(let h=0;h<r;h++){const a=e[(h-1+r)%r],c=e[h];s.push(nn(a,c))}}else{s.push(e[0].start);for(let r=1;r<e.length;r++)s.push(nn(e[r-1],e[r]));s.push(e[e.length-1].end)}const i=new nt;return s.forEach((r,h)=>{i.addVertexAt(h,{x:r.x,y:r.y})}),i.closed=o.closed,i}function Xe(o,t,n){const e=[],s=t?o.length:o.length-1;for(let i=0;i<s;i++){const r=o[i],h=o[t?(i+1)%o.length:i+1],a=h.x-r.x,c=h.y-r.y,l=Math.hypot(a,c);if(B.isNonPositive(l))continue;const u=-c/l*n,d=a/l*n;e.push({start:new P(r.x+u,r.y+d),end:new P(h.x+u,h.y+d),dx:a,dy:c})}return e}function nn(o,t){const n=o.dx*t.dy-o.dy*t.dx;if(B.equalToZero(n))return new P((o.end.x+t.start.x)/2,(o.end.y+t.start.y)/2);const e=t.start.x-o.start.x,s=t.start.y-o.start.y,i=(e*t.dy-s*t.dx)/n;return new P(o.start.x+i*o.dx,o.start.y+i*o.dy)}class nt extends ht{constructor(t=null,n=!1){super(),this._vertices=t||new Array,this._closed=n}get vertices(){return this._vertices}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const t=this._vertices[0];return new P(t.x,t.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const t=this.numberOfVertices;if(t>0)if(this.closed){const n=this._vertices[0];return new P(n.x,n.y)}else{const n=this._vertices[t-1];return new P(n.x,n.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let t=0;const n=this._vertices.length;for(let e=0;e<n;++e){const s=this._vertices[e];let i=null;if(e<n-1?i=this._vertices[e+1]:e==n-1&&this.closed&&(i=this._vertices[0]),i)if(s.bulge){const r=new G(s,i,s.bulge);t+=r.length}else t+=new P(s.x,s.y).distanceTo(i)}return t}get area(){if(!this._closed||this._vertices.length<3)return 0;const t=this.getPoints(128);return On(t)}set closed(t){this._closed=t,this._boundingBoxNeedsUpdate=!0}addVertexAt(t,n){t<=0?this._vertices.unshift(n):this._vertices.splice(t,0,n),this._boundingBoxNeedsUpdate=!0}removeVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error(`Index ${t} is out of bounds. Valid range is 0 to ${this._vertices.length-1}.`);this._vertices.splice(t,1),this._boundingBoxNeedsUpdate=!0}reset(t,n){t?n!==void 0&&n>=0&&n<this._vertices.length&&(this._vertices=this._vertices.slice(0,n),this._boundingBoxNeedsUpdate=!0):(this._vertices=new Array,this._boundingBoxNeedsUpdate=!0)}getPointAt(t){const n=this._vertices[t];return new P(n.x,n.y)}calculateBoundingBox(){const t=this.getPoints(100);return new O().setFromPoints(t)}transform(t){const n=t.determinant()<0;return this._vertices.forEach(e=>{const s=new P(e).applyMatrix2d(t);e.x=s.x,e.y=s.y,n&&e.bulge!=null&&(e.bulge=-e.bulge)}),this._boundingBoxNeedsUpdate=!0,this}clone(){return new nt(this._vertices.map(t=>({...t})),this._closed)}getPoints3d(t,n){const e=[];return this.getPoints(t).forEach(i=>e.push(new M().set(i.x,i.y,n))),e}getPoints(t){const n=[],e=this._vertices.length;for(let s=0;s<e;++s){const i=this._vertices[s];if(i.bulge){let r=null;if(s<e-1?r=this._vertices[s+1]:s==e-1&&this.closed&&(r=this._vertices[0]),r){const a=new G(i,r,i.bulge).getPoints(t),c=a.length;for(let l=0;l<c;++l){const u=a[l];n.push(new P(u.x,u.y))}}}else n.push(new P(i.x,i.y)),s==e-1&&this.closed&&n.push(n[0])}return n}offset(t){return Yn(this,t)}}function De(o,t,n){const e=Math.hypot(t.x,t.y);if(B.isNonPositive(e))return null;const s=-t.y/e*n,i=t.x/e*n;return new M(o.x+s,o.y+i,o.z)}function Ye(o,t,n){if(o.length<2)return null;const e=Ae(new nt(o.map(i=>({x:i.x,y:i.y})),t));return Yn(e,n)[0]??null}function Ze(o,t,n,e){if(o.length<2||B.equalToZero(n))return null;const{points:s,tangents:i}=te(o,e);if(s.length<2)return null;const r=i??Ge(s,t),h=Qe(s,r,n),a=t?We(h):Ke(h);if(a.length<2)return null;const c=new nt;return a.forEach((l,u)=>{c.addVertexAt(u,{x:l.x,y:l.y})}),c.closed=t,c}function Ge(o,t){const n=o.length,e=new Array(n);for(let s=0;s<n;s++){let i=0,r=0;if(t){const a=o[(s-1+n)%n],c=o[(s+1)%n];i=c.x-a.x,r=c.y-a.y}else s===0?(i=o[1].x-o[0].x,r=o[1].y-o[0].y):s===n-1?(i=o[n-1].x-o[n-2].x,r=o[n-1].y-o[n-2].y):(i=o[s+1].x-o[s-1].x,r=o[s+1].y-o[s-1].y);const h=Math.hypot(i,r);B.isNonPositive(h)?e[s]=new P(1,0):e[s]=new P(i/h,r/h)}return e}function Qe(o,t,n){return o.map((e,s)=>{const i=t[s],r=-i.y*n,h=i.x*n;return new P(e.x+r,e.y+h)})}function Ke(o){let t=bt(o);if(t.length<3)return t;for(;;){const n=Hn(t,!1);if(!n||(t=bt([...t.slice(0,n.segmentA+1),n.point,...t.slice(n.segmentB+1)]),t.length<2))break}return t}function We(o){let t=bt(o);if(t.length<4)return t;for(;;){const n=Hn(t,!0);if(!n||(t=bt([...t.slice(0,n.segmentA+1),n.point,...t.slice(n.segmentB+1)]),t.length<3))break}return t}function Hn(o,t){const n=t?o.length:o.length-1;if(n<2)return null;for(let e=0;e<n;e++){const s=o[e],i=o[(e+1)%o.length];for(let r=e+1;r<n;r++){if($e(e,r,n,t))continue;const h=o[r],a=o[(r+1)%o.length],c=Je(s,i,h,a);if(c)return{point:c,segmentA:e,segmentB:r}}}return null}function $e(o,t,n,e){return!!(t===o||t===o+1||e&&o===0&&t===n-1)}function Je(o,t,n,e){const s=t.x-o.x,i=t.y-o.y,r=e.x-n.x,h=e.y-n.y,a=s*h-i*r;if(B.equalToZero(a))return null;const c=n.x-o.x,l=n.y-o.y,u=(c*h-l*r)/a,d=(c*i-l*s)/a,m=pt.equalPointTol;return u<-m||u>1+m||d<-m||d>1+m?null:new P(o.x+u*s,o.y+u*i)}function te(o,t){const n=[],e=[],s=t!=null&&t.length===o.length;return o.forEach((i,r)=>{const h=n[n.length-1];if((!h||B.isPositive(Math.hypot(h.x-i.x,h.y-i.y)))&&(n.push(new P(i.x,i.y)),s)){const a=t[r];e.push(new P(a.x,a.y))}}),{points:n,tangents:s?e:void 0}}function bt(o){return te(o).points}class en extends Jt{constructor(){super(),this._loops=[]}add(t){this._loops.push(t),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const t=this.outter;return t?t.box:new O}transform(t){return this._loops.forEach(n=>{n.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}clone(){const t=new en;return this._loops.forEach(n=>{t.add(n.clone())}),t}getPoints(t){const n=[];for(let e=0;e<this.loops.length;++e){const i=this.loops[e].getPoints(t);n.push(i)}return n}buildHierarchy(){var h;const t=this.getPoints(100),n=this.calculateBoundaryBoxes(t),e=this.sortBoundaryBoxesByAreas(n),s=new Map,i=e.length;for(let a=0;a<i;a++)s.set(e[a],{index:e[a],children:[]});const r={index:-1,children:[]};for(let a=0;a<i;a++){const c=e[a],l=t[c],u=n[c];let d=a+1;for(;d<i;d++){const m=e[d],g=t[m];if(n[m].containsBox(u)&&Bn.isPointInPolygon(l[w.randInt(0,l.length-1)],g)){(h=s.get(m))==null||h.children.push(s.get(c));break}}d===i&&r.children.push(s.get(c))}return r}get area(){if(this._loops.length===0)return 0;let t=0;for(let n=0;n<this._loops.length;n++){const s=this._loops[n].getPoints(128),i=$t(s);n===0?t+=Math.abs(i):t-=Math.abs(i)}return t}calculateBoundaryBoxes(t){const n=[];return t.forEach(e=>{n.push(new O().setFromPoints(e))}),n}sortBoundaryBoxesByAreas(t){const n=[];t.forEach((s,i)=>{const r=s.size,h=r.width*r.height;n.push({area:h,index:i})}),n.sort((s,i)=>s.area-i.area);const e=[];return n.forEach(s=>{e.push(s.index)}),e}}class He extends Dn{translate(t){return this.transform(new W().makeTranslation(t.x,t.y,t.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class yt extends He{}class at extends yt{constructor(t,n){super(),this._start=new M(t),this._end=new M(n)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}get direction(){return new A().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new M((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}nearestPoint(t){return this.project(t)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(t){return this.project(t).distanceTo(t)<1e-6}at(t,n){return this.delta(n).multiplyScalar(t).add(this._start)}atLength(t,n=!1){if(n){const e=this.delta(st).normalize();return new M(this._start).addScaledVector(e,t)}else{const e=this.delta(st).normalize();return new M(this._end).addScaledVector(e,t)}}extend(t,n=!1){if(n){const e=st.subVectors(this._start,this._end).normalize();this._start=new M(this._start).addScaledVector(e,t)}else{const e=this.delta(st).normalize();this._end=new M(this._end).addScaledVector(e,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,n){ne.subVectors(t,this._start),St.subVectors(this.endPoint,this.startPoint);const e=St.dot(St);let i=St.dot(ne)/e;return n&&(i=w.clamp(i,0,1)),i}closestPointToPoint(t,n,e){const s=this.closestPointToPointParameter(t,n);return this.delta(e).multiplyScalar(s).add(this._start)}delta(t){return t.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(t){const n=this.direction,s=st.subVectors(t,this.startPoint).dot(n);return new M().copy(n).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const n=this.direction,e=this.startPoint,i=st.subVectors(t,e).dot(n),r=st.copy(n).multiplyScalar(i);return new M().addVectors(e,r)}calculateBoundingBox(){const t=new M(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),n=new M(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new Z(t,n)}transform(t){return this._start.applyMatrix4(t),this._end.applyMatrix4(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new at(this._start.clone(),this._end.clone())}offset(t){const n=this.startPoint,e=this.endPoint;if(Math.hypot(e.x-n.x,e.y-n.y)===0)return this.clone();const i=new A(e.x-n.x,e.y-n.y,0).normalize(),r=new A(-i.y,i.x,0);return new at(new M(n.x+r.x*t,n.y+r.y*t,n.z),new M(e.x+r.x*t,e.y+r.y*t,e.z))}}const st=new A,ne=new A,St=new A;class ct extends yt{static computeCenterPoint(t,n,e){const s=new A().addVectors(t,n).multiplyScalar(.5),i=new A().addVectors(t,e).multiplyScalar(.5),r=new A().subVectors(n,t),h=new A().subVectors(e,t),a=new A().crossVectors(r,h).normalize();if(a.lengthSq()===0)return null;const c=new A().crossVectors(r,a).normalize(),l=new A().crossVectors(h,a).normalize(),u=c.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),d=l.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),m=new at(s,s.clone().add(u)),g=new at(i,i.clone().add(d)),y=new A;return m.closestPointToPoint(g.startPoint,!0,y)?y:null}static createByThreePoints(t,n,e){const s=ct.computeCenterPoint(t,n,e);if(s){const i=s.distanceTo(t),r=new A().subVectors(t,s),h=new A().subVectors(n,s),a=Math.atan2(r.y,r.x),c=Math.atan2(h.y,h.x);return new ct(s,i,a,c,A.Z_AXIS)}}constructor(t,n,e,s,i,r=A.X_AXIS){super(),this.center=t,this.radius=n,this.startAngle=e,this.endAngle=s,this.normal=i,this.refVec=r,(s-e)%I==0?(this.startAngle=0,this.endAngle=I):(this.startAngle=e,this.endAngle=s)}get center(){return this._center}set center(t){this._center=new M(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==I?t:w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return w.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new A(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new A(t.x,t.y,t.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,n=this.deltaAngle;this.closed&&(t=0,n=I);const e=t+n*.5;return this.getPointAtAngle(e)}get length(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)}get area(){return this.closed?Math.PI*this.radius*this.radius:0}nearestPoint(t){const n=new A(t.x,t.y,t.z||0),e=this.center,s=this.normal,r=n.clone().sub(e).dot(s),a=n.clone().sub(s.clone().multiplyScalar(r)).clone().sub(e);if(a.lengthSq()===0)return this.startPoint.clone();a.normalize().multiplyScalar(this.radius);const c=e.clone().add(a),l=this.getAngle(c.clone()),u=this.startAngle,d=this.deltaAngle;let m=w.normalizeAngle(l-u);m<0&&(m=0),m>d&&(m=d);const g=this.getPointAtAngle(u+m),y=g.distanceTo(n),x=this.startPoint.distanceTo(n),_=this.endPoint.distanceTo(n);return x<y&&x<=_?this.startPoint.clone():_<y&&_<x?this.endPoint.clone():g}tangentPoints(t){const n=[],e=new A(t.x,t.y,t.z||0),s=this.center,i=this.normal,r=this.radius,a=e.clone().sub(s).dot(i),c=e.clone().sub(i.clone().multiplyScalar(a)),l=s.clone(),d=c.clone().sub(l).length();if(d<r)return n;const m=Math.acos(r/d),g=this.getAngle(c.clone()),y=[g+m,g-m];for(const x of y){const _=w.normalizeAngle(x-this.startAngle);_>=0&&_<=this.deltaAngle&&n.push(this.getPointAtAngle(this.startAngle+_))}return n}perpendicularPoints(t){const n=[],e=new A(t.x,t.y,t.z||0),s=this.center,i=this.normal,r=this.radius,a=e.clone().sub(s).dot(i),l=e.clone().sub(i.clone().multiplyScalar(a)).clone().sub(s);if(l.lengthSq()<1e-24)return n;l.normalize();const u=[s.clone().add(l.clone().multiplyScalar(r)),s.clone().sub(l.clone().multiplyScalar(r))];for(const d of u){const m=this.getAngle(d.clone()),g=w.normalizeAngle(m-this.startAngle);g>=0&&g<=this.deltaAngle&&n.push(new M(d.x,d.y,d.z||0))}return n}nearestTangentPoint(t){const n=this.tangentPoints(t);if(n.length===0)return null;const e=new M(t.x,t.y,t.z||0);return n.length===1||n[0].distanceTo(e)<n[1].distanceTo(e)?n[0]:n[1]}calculateBoundingBox(){const t=[this.startAngle,this.endAngle];for(let a=0;a<2*Math.PI;a+=Math.PI/2)w.isBetweenAngle(a,this.startAngle,this.endAngle)&&t.push(a);let n=1/0,e=1/0,s=1/0,i=-1/0,r=-1/0,h=-1/0;for(const a of t){const c=this.getPointAtAngle(a);c.x<n&&(n=c.x),c.y<e&&(e=c.y),c.z<s&&(s=c.z),c.x>i&&(i=c.x),c.y>r&&(r=c.y),c.z>h&&(h=c.z)}return new Z({x:n,y:e,z:s},{x:i,y:r,z:h})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const n=[];let e=this.deltaAngle,s=this.startAngle;this.closed&&(e=I,s=0);for(let i=0;i<=t;i++){const r=s+e*(i/t),h=this.getPointAtAngle(r);n.push(h)}return n}transform(t){const n=this.center.clone().applyMatrix4(t),e=this.startPoint.clone().applyMatrix4(t),s=this.endPoint.clone().applyMatrix4(t),i=this.getPointAtAngle(this.closed?Math.PI/2:this.startAngle+this.deltaAngle/2).clone().applyMatrix4(t),r=new A(e).sub(n).normalize(),h=n.distanceTo(e);let a=new A().crossVectors(new A(e).sub(n),new A(i).sub(n)).normalize();a.lengthSq()===0&&(a=this.normal.clone().transformDirection(t));const c=l=>{const u=new A(l).sub(n);return Math.atan2(u.dot(ee.crossVectors(a,r)),u.dot(r))};return this.center=n,this.radius=h,this.normal=a,this.refVec=r,this.startAngle=0,this.endAngle=this.closed?I:c(s),this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.radius=t.radius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.normal=t.normal,this.refVec=t.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new ct(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(ee.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const n=this.normal,e=this.refVec,s={x:n.y*e.z-n.z*e.y,y:n.z*e.x-n.x*e.z,z:n.x*e.y-n.y*e.x},i=this.center,r=this.radius;return new M(i.x+r*(e.x*Math.cos(t)+s.x*Math.sin(t)),i.y+r*(e.y*Math.cos(t)+s.y*Math.sin(t)),i.z+r*(e.z*Math.cos(t)+s.z*Math.sin(t)))}get plane(){const t=new A(this.center).distanceTo(Ft);return new mt(this.normal,t)}offset(t){const n=this.radius+t;return n<=0?null:new ct(this.center,n,this.startAngle,this.endAngle,this.normal,this.refVec)}}const ee=new A;class it extends ht{constructor(t,n,e,s=0,i=I,r=!1,h=0){super(),this.center=t,this.majorAxisRadius=n,this.minorAxisRadius=e,(i-s)%I==0?(this.startAngle=0,this.endAngle=I):(this.startAngle=s,this.endAngle=i),this.clockwise=r,this.rotation=h}get center(){return this._center}set center(t){this._center=new M(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==I?t:w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(t){this._rotation=t,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return w.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let n=1/0,e=1/0,s=-1/0,i=-1/0;for(let r=0;r<=100;r++){const h=this.getPoint(r/100);n=Math.min(n,h.x),e=Math.min(e,h.y),s=Math.max(s,h.x),i=Math.max(i,h.y)}return new O({x:n,y:e},{x:s,y:i})}get closed(){return this.deltaAngle==0}getPoint(t){const n=Math.PI*2;let e=this.endAngle-this.startAngle;const s=Math.abs(e)<Number.EPSILON;for(;e<0;)e+=n;for(;e>n;)e-=n;e<Number.EPSILON&&(s?e=0:e=n),this.clockwise===!0&&!s&&(e===n?e=-n:e=e-n);const i=this.startAngle+t*e;let r=this.center.x+this.majorAxisRadius*Math.cos(i),h=this.center.y+this.minorAxisRadius*Math.sin(i);if(this.rotation!==0){const a=Math.cos(this.rotation),c=Math.sin(this.rotation),l=r-this.center.x,u=h-this.center.y;r=l*a-u*c+this.center.x,h=l*c+u*a+this.center.y}return new P(r,h)}transform(t){const n=t,e=new P(this.center).applyMatrix2d(n),s=new M(e.x,e.y,this.center.z),i=this.getPointAtAngle(0).clone().applyMatrix2d(n),r=this.getPointAtAngle(Math.PI/2).clone().applyMatrix2d(n),h=new P(i).sub(e),a=new P(r).sub(e),c=h.length(),l=a.length(),u=Math.atan2(h.y,h.x),d=h.clone().normalize(),m=a.clone().normalize(),g=_=>{const b=new P(_).sub(e),p=b.dot(d),C=b.dot(m);return w.normalizeAngle(Math.atan2(C/l,p/c))},y=n.determinant()<0?!this.clockwise:this.clockwise,x=this.closed?new it(s,c,l,0,I,y,u):new it(s,c,l,g(this.startPoint.clone().applyMatrix2d(n)),g(this.endPoint.clone().applyMatrix2d(n)),y,u);return this.center=x.center,this.majorAxisRadius=x.majorAxisRadius,this.minorAxisRadius=x.minorAxisRadius,this._startAngle=x._startAngle,this._endAngle=x._endAngle,this._clockwise=x._clockwise,this.rotation=x.rotation,this._boundingBoxNeedsUpdate=!0,this}getPointAtAngle(t){return this.getPoint(this.closed?t/I:w.normalizeAngle(t-this.startAngle)/this.deltaAngle)}copy(t){return this.center=t.center,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.clockwise=t.clockwise,this.rotation=t.rotation,this}clone(){return new it(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}getFocusPoints(){const t=Math.max(this.majorAxisRadius,this.minorAxisRadius),n=Math.min(this.majorAxisRadius,this.minorAxisRadius);if(t-n<1e-9)return[];const e=Math.sqrt(t*t-n*n),s=Math.cos(this.rotation),i=Math.sin(this.rotation),r=this.majorAxisRadius>=this.minorAxisRadius,h=r?s:-i,a=r?i:s;return[new P(this.center.x-e*h,this.center.y-e*a),new P(this.center.x+e*h,this.center.y+e*a)]}getQuadrantPoints(){return this.closed?[this.getPoint(0),this.getPoint(.25),this.getPoint(.5),this.getPoint(.75)]:[]}nearestPoint(t){const n=new P(t.x,t.y);let e=this.getPoint(0),s=n.distanceToSquared(e);const i=72;for(let r=1;r<=i;r++){const h=this.getPoint(r/i),a=n.distanceToSquared(h);a<s&&(s=a,e=h)}return e}tangentPoints(t){const n=this._projectPointToLocal(t);return this._findSnapAngles(n,(s,i,r,h)=>{const a=-this.majorAxisRadius*h,c=this.minorAxisRadius*r;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}perpendicularPoints(t){const n=this._projectPointToLocal(t);return this._findSnapAngles(n,(s,i,r,h)=>{const a=this.minorAxisRadius*r,c=this.majorAxisRadius*h;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}_projectPointToLocal(t){const n=t.x-this.center.x,e=t.y-this.center.y,s=Math.cos(-this.rotation),i=Math.sin(-this.rotation);return{x:n*s-e*i,y:n*i+e*s}}_findSnapAngles(t,n,e=144){const s=this.majorAxisRadius,i=this.minorAxisRadius,r=this.startAngle,h=this.deltaAngle,a=[],c=d=>{const m=Math.cos(d),g=Math.sin(d);return n(s*m,i*g,m,g)};let l=r,u=c(l);for(let d=1;d<=e;d++){const m=r+h*d/e,g=c(m);if(Math.abs(u)<1e-10&&a.push(l),u*g<0){let y=l,x=m;for(let _=0;_<32;_++){const b=(y+x)/2;c(y)*c(b)<=0?x=b:y=b}a.push((y+x)/2)}l=m,u=g}return a}}class lt extends yt{constructor(t,n,e,s,i,r=0,h=I){super(),this.center=t,this.normal=n,this.majorAxis=e,this.majorAxisRadius=s,this.minorAxisRadius=i;const a=Math.abs(h-r);Math.abs(a-I)<1e-10||Math.abs(a-2*I)<1e-10?(this.startAngle=0,this.endAngle=I):(this.startAngle=r,this.endAngle=h)}get center(){return this._center}set center(t){this._center=new M(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==I?t:w.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-I)<1e-10?I:w.normalizeAngle(t)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new A(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new A(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new A().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,n=this.deltaAngle;(this.closed||Math.abs(n-I)<1e-10)&&(t=0,n=I);const e=t+n/2;return this.getPointAtAngle(e)}get isCircular(){return B.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const t=1e3,n=this.deltaAngle/t;let e=0,s=this.getPointAtAngle(this.startAngle);for(let i=1;i<=t;i++){const r=this.startAngle+i*n,h=this.getPointAtAngle(r),a=h.x-s.x,c=h.y-s.y,l=h.z-s.z;e+=Math.sqrt(a*a+c*c+l*l),s=h}return e}get area(){return Math.abs(this.deltaAngle-I)>=1e-10?0:Math.PI*this.majorAxisRadius*this.minorAxisRadius}calculateBoundingBox(){if(this.majorAxis.equals(A.X_AXIS)||this.majorAxis.equals(A.Y_AXIS)||this.majorAxis.isParallelTo(A.X_AXIS)||this.majorAxis.isParallelTo(A.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let a=0;a<2*Math.PI;a+=Math.PI/2)w.isBetweenAngle(a,this.startAngle,this.endAngle)&&t.push(a);let n=1/0,e=1/0,s=1/0,i=-1/0,r=-1/0,h=-1/0;for(const a of t){const c=this.getPointAtAngle(a);c.x<n&&(n=c.x),c.y<e&&(e=c.y),c.z<s&&(s=c.z),c.x>i&&(i=c.x),c.y>r&&(r=c.y),c.z>h&&(h=c.z)}return new Z({x:n,y:e,z:s},{x:i,y:r,z:h})}else{let n=1/0,e=1/0,s=1/0,i=-1/0,r=-1/0,h=-1/0;for(let a=0;a<=100;a++){const c=this.startAngle+this.deltaAngle*(a/100),l=this.getPointAtAngle(c);n=Math.min(n,l.x),e=Math.min(e,l.y),s=Math.min(s,l.z),i=Math.max(i,l.x),r=Math.max(r,l.y),h=Math.max(h,l.z)}return new Z({x:n,y:e,z:s},{x:i,y:r,z:h})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const n=[];let e=this.deltaAngle,s=this.startAngle;this.closed&&(e=I,s=0);for(let i=0;i<=t;i++){const r=s+e*(i/t),h=this.getPointAtAngle(r);n.push(h)}return n}getPointAtAngle(t){const n=Math.cos(t),e=Math.sin(t),s=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(e),i=this.majorAxis.clone().multiplyScalar(n*this.majorAxisRadius).add(s);return new M(this.center.x+i.x,this.center.y+i.y,this.center.z+i.z)}nearestPoint(t,n=72){const e=new M(t.x,t.y,t.z||0);let s=this.getPointAtAngle(this.startAngle),i=e.distanceToSquared(s);for(let a=1;a<=n;a++){const c=this.startAngle+this.deltaAngle*a/n,l=this.getPointAtAngle(c),u=e.distanceToSquared(l);u<i&&(i=u,s=l)}const r=e.distanceToSquared(this.startPoint),h=e.distanceToSquared(this.endPoint);return r<i&&r<=h?this.startPoint.clone():h<i&&h<r?this.endPoint.clone():s.clone()}tangentPoints(t){const n=this._projectPointToLocalPlane(t);return this._findSnapParameterAngles((s,i,r,h)=>{const a=-this.majorAxisRadius*h,c=this.minorAxisRadius*r;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}perpendicularPoints(t){const n=this._projectPointToLocalPlane(t);return this._findSnapParameterAngles((s,i,r,h)=>{const a=this.minorAxisRadius*r,c=this.majorAxisRadius*h;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}_projectPointToLocalPlane(t){const n=new M(t.x,t.y,t.z||0),e=new A(n).sub(this.center),s=e.dot(this.normal);return e.sub(this.normal.clone().multiplyScalar(s)),{x:e.dot(this.majorAxis),y:e.dot(this.minorAxis)}}_findSnapParameterAngles(t,n=144){const e=this.majorAxisRadius,s=this.minorAxisRadius,i=this.startAngle,r=this.deltaAngle,h=[],a=u=>{const d=Math.cos(u),m=Math.sin(u);return t(e*d,s*m,d,m)};let c=i,l=a(c);for(let u=1;u<=n;u++){const d=i+r*u/n,m=a(d);if(Math.abs(l)<1e-10&&h.push(c),l*m<0){let g=c,y=d;for(let x=0;x<32;x++){const _=(g+y)/2;a(g)*a(_)<=0?y=_:g=_}h.push((g+y)/2)}c=d,l=m}return h}contains(t){const n=new A(t).sub(this.center),e=n.dot(this.majorAxis),s=n.dot(this.minorAxis),i=e/this.majorAxisRadius,r=s/this.minorAxisRadius;return i*i+r*r<=1}transform(t){const n=t,e=this.center.clone().applyMatrix4(n),s=this.getPointAtAngle(0).clone().applyMatrix4(n),i=this.getPointAtAngle(Math.PI/2).clone().applyMatrix4(n),r=new A(s).sub(e),h=new A(i).sub(e),a=r.length(),c=h.length(),l=r.clone().normalize(),u=new A().crossVectors(r,h).normalize();let d=new A().crossVectors(u,l).normalize();d.dot(h)<0&&(u.negate(),d=new A().crossVectors(u,l).normalize());const m=y=>{const x=new A(y).sub(e),_=x.dot(l),b=x.dot(d);return w.normalizeAngle(Math.atan2(b/c,_/a))},g=this.closed?new lt(e,u,l,a,c,0,I):new lt(e,u,l,a,c,m(this.startPoint.clone().applyMatrix4(n)),m(this.endPoint.clone().applyMatrix4(n)));return this.center=g.center,this.normal=g.normal,this.majorAxis=g.majorAxis,this.majorAxisRadius=g.majorAxisRadius,this.minorAxisRadius=g.minorAxisRadius,this._startAngle=g._startAngle,this._endAngle=g._endAngle,this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.normal=t.normal,this.majorAxis=t.majorAxis,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new lt(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new A(this.center).distanceTo(Ft);return new mt(this.normal,t)}offset(t){const n=this.majorAxisRadius+t,e=this.minorAxisRadius+t;return n<=0||e<=0?null:new lt(this.center,this.normal,this.majorAxis,n,e,this.startAngle,this.endAngle)}}class xt extends ht{constructor(t,n){super(),this._start=new P(t),this._end=new P(n)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const t=new P(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),n=new P(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new O(t,n)}transform(t){return this._start.applyMatrix2d(t),this._end.applyMatrix2d(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new xt(this._start.clone(),this._end.clone())}project(t){const n=this._end.x-this._start.x,e=this._end.y-this._start.y,s=n*n+e*e;if(s<1e-18)return this._start.clone();let i=((t.x-this._start.x)*n+(t.y-this._start.y)*e)/s;return i=Math.max(0,Math.min(1,i)),new P(this._start.x+i*n,this._start.y+i*e)}nearestPoint(t){return this.project(t)}}class X extends ht{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}static buildFromEdges(t,n=.001){if(t.length===0)return[];const e=[...t],s=[],i=n*n,r=(h,a)=>{const c=h.x-a.x,l=h.y-a.y;return c*c+l*l<=i};for(;e.length>0;){const h=[],a=e.shift();h.push(a);const c=X.getEdgeStartPoint(a);let l=X.getEdgeEndPoint(a);if(!r(c,l))for(;e.length>0;){const u=X.findConnectingEdge(e,l,i);if(u.index<0)break;let d=e.splice(u.index,1)[0];if(u.reverse&&(d=X.reverseEdge(d)),h.push(d),l=X.getEdgeEndPoint(d),r(l,c))break}s.push(new X(h))}return s}add(t){this._curves.push(t),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const t=this._curves[0].startPoint;return new P(t.x,t.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let t=0;return this._curves.forEach(n=>{t+=n.length}),t}calculateBoundingBox(){const t=this.getPoints(100),n=new O;return n.setFromPoints(t),n}transform(t){const n=new W().set(t.elements[0],t.elements[3],0,t.elements[6],t.elements[1],t.elements[4],0,t.elements[7],0,0,1,0,0,0,0,1);return this._curves.forEach(e=>{e instanceof et?e.transform(n):e.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}clone(){return new X(this._curves.map(t=>t.clone()))}get closed(){return!0}getPoints(t){const n=[];return this.curves.forEach(e=>{e.getPoints(t).forEach(s=>{n.push(new P(s.x,s.y))})}),n}static findConnectingEdge(t,n,e){let s=-1,i=!1,r=Number.POSITIVE_INFINITY;for(let h=0;h<t.length;h++){const a=t[h],c=X.getEdgeStartPoint(a),l=X.getEdgeEndPoint(a),u=n.x-c.x,d=n.y-c.y,m=u*u+d*d;m<r&&(r=m,s=h,i=!1);const g=n.x-l.x,y=n.y-l.y,x=g*g+y*y;x<r&&(r=x,s=h,i=!0)}return r>e?{index:-1,reverse:!1}:{index:s,reverse:i}}static getEdgeStartPoint(t){const n=t.startPoint;return new P(n.x,n.y)}static getEdgeEndPoint(t){const n=t.endPoint;return new P(n.x,n.y)}static reverseEdge(t){return t instanceof xt?new xt(t.endPoint,t.startPoint):t instanceof G?new G(t.center,t.radius,t.endAngle,t.startAngle,!t.clockwise):t instanceof it?new it(t.center,t.majorAxisRadius,t.minorAxisRadius,t.endAngle,t.startAngle,!t.clockwise,t.rotation):t instanceof et?X.reverseSplineEdge(t):t}static reverseSplineEdge(t){const n=[...t.controlPoints].reverse(),e=t.knots,s=e[0],i=e[e.length-1],r=e.map(c=>s+i-c).reverse(),h=t.weights,a=h.length>0?[...h].reverse():void 0;return new et(n,r,a,t.degree,t.closed)}}class sn{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,n,e,s){this.c0=t,this.c1=e,this.c2=-3*t+3*n-2*e-s,this.c3=2*t-2*n+e+s}initCatmullRom(t,n,e,s,i){this.init(n,e,i*(e-t),i*(s-n))}initNonuniformCatmullRom(t,n,e,s,i,r,h){let a=(n-t)/i-(e-t)/(i+r)+(e-n)/r,c=(e-n)/r-(s-n)/(r+h)+(s-e)/h;a*=r,c*=r,this.init(n,e,a,c)}calc(t){const n=t*t,e=n*t;return this.c0+this.c1*t+this.c2*n+this.c3*e}}class Ct extends yt{constructor(t=[],n=!1,e="centripetal",s=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new A,this._px=new sn,this._py=new sn,this._pz=new sn,this._points=t.map(i=>new M(i)),this._closed=n,this._curveType=e,this._tension=s}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new M}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new M}get length(){if(this._points.length<2)return 0;let t=0;for(let n=1;n<this._points.length;n++)t+=this._points[n-1].distanceTo(this._points[n]);return this._closed&&this._points.length>2&&(t+=this._points[this._points.length-1].distanceTo(this._points[0])),t}getPoint(t,n=new M){const e=n,s=this._points,i=s.length;if(i===0)return e.set(0,0,0);if(i===1)return e.copy(s[0]);const r=(i-(this._closed?0:1))*t;let h=Math.floor(r),a=r-h;this._closed?h+=h>0?0:(Math.floor(Math.abs(h)/i)+1)*i:a===0&&h===i-1&&(h=i-2,a=1);let c,l;this._closed||h>0?c=s[(h-1)%i]:(this._tmp.subVectors(s[0],s[1]).add(s[0]),c=new M(this._tmp.x,this._tmp.y,this._tmp.z));const u=s[h%i],d=s[(h+1)%i];if(this._closed||h+2<i?l=s[(h+2)%i]:(this._tmp.subVectors(s[i-1],s[i-2]).add(s[i-1]),l=new M(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const m=this._curveType==="chordal"?.5:.25;let g=Math.pow(c.distanceToSquared(u),m),y=Math.pow(u.distanceToSquared(d),m),x=Math.pow(d.distanceToSquared(l),m);y<1e-4&&(y=1),g<1e-4&&(g=y),x<1e-4&&(x=y),this._px.initNonuniformCatmullRom(c.x,u.x,d.x,l.x,g,y,x),this._py.initNonuniformCatmullRom(c.y,u.y,d.y,l.y,g,y,x),this._pz.initNonuniformCatmullRom(c.z,u.z,d.z,l.z,g,y,x)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(c.x,u.x,d.x,l.x,this._tension),this._py.initCatmullRom(c.y,u.y,d.y,l.y,this._tension),this._pz.initCatmullRom(c.z,u.z,d.z,l.z,this._tension));return e.set(this._px.calc(a),this._py.calc(a),this._pz.calc(a)),e}getPoints(t){const n=[];for(let e=0;e<=t;e++)n.push(this.getPoint(e/t));return n}setPoints(t){this._points=t.map(n=>new M(n)),this._boundingBoxNeedsUpdate=!0}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0)}setCurveType(t){this._curveType=t}setTension(t){this._tension=t}clone(){return new Ct(this._points.map(t=>t.clone()),this._closed,this._curveType,this._tension)}transform(t){return this._points=this._points.map(n=>{const e=new M;return e.copy(n),e.applyMatrix4(t),e}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new Z;const t=new Z;return this._points.forEach(n=>{t.expandByPoint(n)}),t}}function se(o,t){const n=o.x-t[0],e=o.y-t[1],s=(o.z??0)-(t[2]??0);return n*n+e*e+s*s}class v{constructor(t,n,e,s){this._degree=t,this._knots=[...n],this._controlPoints=e.map(i=>({x:i.x,y:i.y,z:i.z})),this._weights=s?[...s]:new Array(e.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z}))}weights(){return[...this._weights]}clone(){return new v(this._degree,this._knots,this._controlPoints,this._weights)}point(t){return this.evaluate(t).point}evaluate(t){const n=this._controlPoints.map(e=>[e.x,e.y,e.z]);return Nn(t,this._degree,this._knots,n,this._weights)}signedPlanarCurvatureAt(t){const n=this.evaluate(t);return jn(n.deriv1,n.deriv2)}getOffsetSamplePath2d(t,n=512){const e=Math.abs(t),{start:s,end:i}=this.getParameterRange(),r=this.length(),h=Math.max(64,Math.ceil(r/Math.max(e*.2,1e-6)));let a=ts(s,i,Math.min(h,n));for(let u=0;u<8&&a.length<n;u++){const d=[];for(let m=0;m<a.length-1;m++){const g=a[m],y=a[m+1],x=(g+y)/2,_=Math.max(Math.abs(this.signedPlanarCurvatureAt(g)),Math.abs(this.signedPlanarCurvatureAt(y)),Math.abs(this.signedPlanarCurvatureAt(x)));e*_>.85&&d.push(x)}if(d.length===0)break;if(a=ns(a,d),a.length>n){a=a.slice(0,n);break}}const c=[],l=[];return a.forEach(u=>{const d=this.evaluate(u);c.push(new P(d.point[0],d.point[1]));const m=d.deriv1[0],g=d.deriv1[1],y=Math.hypot(m,g);l.push(y>1e-10?new P(m/y,g/y):new P(1,0))}),{points:c,tangents:l}}length(){const t=this._controlPoints.map(n=>[n.x,n.y,n.z]);return qn(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,n,e,s){return new v(t,n,e,s)}static byPoints(t,n,e="Uniform",s,i){const r=Gt(t,n,e,s,i),h=r.controlPoints.map(a=>({x:a[0],y:a[1],z:a[2]}));return new v(n,r.knots,h,r.weights)}getParameterRange(){const t=this._knots[this._degree],n=this._knots[this._knots.length-this._degree-1];return{start:t,end:n}}getPoints(t){const n=[],{start:e,end:s}=this.getParameterRange();for(let i=0;i<=t;i++){const r=e+(s-e)*(i/t);n.push(this.point(r))}return n}isClosed(t=1e-6){const{start:n,end:e}=this.getParameterRange(),s=this.point(n),i=this.point(e),r=s[0]-i[0],h=s[1]-i[1],a=s[2]-i[2];return Math.sqrt(r*r+h*h+a*a)<t}static createFitPointsForClosedCurve(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const n=new Ct(t,!0,"centripetal"),e=Math.max(50,t.length*2);return n.getPoints(e)}nearestPoint(t,n=64){const{start:e,end:s}=this.getParameterRange();let i=this.point(e),r=se(t,i);for(let h=0;h<=n;h++){const a=e+(s-e)*h/n,c=this.point(a),l=se(t,c);l<r&&(r=l,i=c)}return{x:i[0],y:i[1],z:i[2]??0}}static createClosedCurve(t,n,e="Chord"){const i=this.createFitPointsForClosedCurve(t).map(r=>[r.x,r.y,r.z]);return v.byPoints(i,n,e)}}function ts(o,t,n){if(n<2)return[o,t];const e=[];for(let s=0;s<n;s++)e.push(s===n-1?t:o+(t-o)*s/(n-1));return e}function ns(o,t){const n=[...o,...t].sort((s,i)=>s-i),e=[];return n.forEach(s=>{const i=e[e.length-1];(i===void 0||Math.abs(i-s)>1e-10)&&e.push(s)}),e}class et extends yt{constructor(t,n,e,s,i,r){super();const h=arguments.length;if(this._degree=3,this._closed=!1,Array.isArray(n)){if(h<2||h>5)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._controlPoints=t;let a,c=3,l=!1;if(h>=3&&(Array.isArray(e)?(a=e,h>=4&&(c=s||3),h>=5&&(l=i)):e!==void 0&&(c=e||3,h>=4&&(l=s))),e===void 0&&h>=4&&(c=s||3,h>=5&&(l=i)),this._degree=c,this._closed=l,this._controlPoints.length<this._degree+1)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._nurbsCurve=v.byKnotsControlPointsWeights(this._degree,n,this._controlPoints,a)}else{if(h<2||h>6)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._fitPoints=t,this._knotParameterization=n,h>=3&&(this._degree=e||3);const a=typeof s=="boolean";h>=4&&a&&(this._closed=s),a?(h>=5&&(this._startTangent=i),h>=6&&(this._endTangent=r)):(h>=4&&(this._startTangent=s),h>=5&&(this._endTangent=i)),this._closed&&(this._startTangent=void 0,this._endTangent=void 0);const c=(this._startTangent?1:0)+(this._endTangent?1:0);if(this._fitPoints.length+c<this._degree+1)throw V.AcCmErrors.ILLEGAL_PARAMETERS;if(this._closed)this._nurbsCurve=v.createClosedCurve(this._fitPoints,this._degree,this._knotParameterization);else{const l=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=v.byPoints(l,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(l=>[l.x,l.y,l.z||0]))}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=v.createFitPointsForClosedCurve(this._fitPoints),n=this.toNurbsPoints(t);this._nurbsCurve=v.byPoints(n,this._degree,this._knotParameterization)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=v.byPoints(t,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(t=>[t.x,t.y,t.z||0]))}else if(this._controlPoints)if(this._closed){const t=v.createFitPointsForClosedCurve(this._controlPoints),n=this.toNurbsPoints(t);this._nurbsCurve=v.byPoints(n,this._degree,this._knotParameterization),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(e=>[e.x,e.y,e.z||0]))}else{const t=this._nurbsCurve.knots(),n=this._nurbsCurve.weights();this._nurbsCurve=v.byKnotsControlPointsWeights(this._degree,t,this._controlPoints,n)}}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0}))}get fitPoints(){var t;return(t=this._fitPoints)==null?void 0:t.map(n=>({x:n.x,y:n.y,z:n.z||0}))}get knots(){return[...this._nurbsCurve.knots()]}get weights(){return[...this._nurbsCurve.weights()]}get startPoint(){const t=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),e=t[n],s=this._nurbsCurve.point(e);return new M(s[0],s[1],s[2])}get endPoint(){const t=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),e=t[t.length-n-1],s=this._nurbsCurve.point(e);return new M(s[0],s[1],s[2])}get length(){return this._nurbsCurve.length()}nearestPoint(t,n=64){const e=this._nurbsCurve.nearestPoint(t,n);return new M(e.x,e.y,e.z||0)}evaluateAt(t){const n=this._nurbsCurve.point(t);return new M(n[0],n[1],n[2])}getFitPointAt(t){if(!this._fitPoints)throw new Error("No fit points in this spline");const n=this._fitPoints.length,e=t<0||t>=n?n-1:t,s=this._fitPoints[e];return{x:s.x,y:s.y,z:s.z||0}}getControlPointAt(t){const n=this._controlPoints.length,e=t<0||t>=n?n-1:t;return this._controlPoints[e]}getOffsetSamplePath2d(t){return this._nurbsCurve.getOffsetSamplePath2d(t)}getPoints(t=100){const n=this._nurbsCurve,e=[],s=n.knots(),i=this._nurbsCurve.degree(),r=s[i],h=s[s.length-i-1],a=(h-r)/(t-1);for(let c=0;c<t;c++){const l=c===t-1?h:r+c*a,u=n.point(l);e.push(new M(u[0],u[1],u[2]))}return e}getCurvePoints(t,n){const e=[],s=t.knots(),i=t.degree(),r=s[i],a=(s[s.length-i-1]-r)/(n-1);for(let c=0;c<n;c++){const l=r+c*a;e.push(t.point(l))}return e}calculateBoundingBox(){const t=this.getPoints(100);return new Z().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}get area(){if(!this._closed)return 0;const t=this.getPoints(128);return Xn(t)}transform(t){if(this._fitPoints&&this._knotParameterization)this._fitPoints=this._fitPoints.map(n=>new M(n).applyMatrix4(t)),this._startTangent&&(this._startTangent=new M(this._startTangent).transformDirection(t)),this._endTangent&&(this._endTangent=new M(this._endTangent).transformDirection(t)),this.buildCurve();else{const n=this._nurbsCurve.knots(),e=this._nurbsCurve.weights();this._controlPoints=this._controlPoints.map(s=>new M(s).applyMatrix4(t)),this._nurbsCurve=v.byKnotsControlPointsWeights(this._degree,n,this._controlPoints,e.length>0?e:void 0)}return this._boundingBoxNeedsUpdate=!0,this}clone(){return this._fitPoints&&this._knotParameterization?new et(this._fitPoints.map(t=>({x:t.x,y:t.y,z:t.z||0})),this._knotParameterization,this._degree,this._closed,this._startTangent?{x:this._startTangent.x,y:this._startTangent.y,z:this._startTangent.z||0}:void 0,this._endTangent?{x:this._endTangent.x,y:this._endTangent.y,z:this._endTangent.z||0}:void 0):new et(this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0})),this._nurbsCurve.knots(),this._nurbsCurve.weights(),this._degree,this._closed)}toNurbsPoints(t){const n=new Array(t.length);return t.forEach((e,s)=>{n[s]=[e.x,e.y,e.z||0]}),n}toGePoints(t){const n=new Array(t.length);return t.forEach((e,s)=>{n[s]={x:e[0],y:e[1],z:e[2]}}),n}toNurbsPoint(t){return[t.x,t.y,t.z||0]}static createClosedSpline(t,n="Uniform",e=3){if(t.length<e+1)throw new Error(`At least ${e+1} points are required for a degree ${e} closed spline`);return new et(t,n,e,!0)}}f.AcGeArea2d=en,f.AcGeBox2d=O,f.AcGeBox3d=Z,f.AcGeCatmullRomCurve3d=Ct,f.AcGeCircArc2d=G,f.AcGeCircArc3d=ct,f.AcGeCurve2d=ht,f.AcGeEllipseArc2d=it,f.AcGeEllipseArc3d=lt,f.AcGeEuler=Dt,f.AcGeGeometryUtil=Bn,f.AcGeLine2d=xt,f.AcGeLine3d=at,f.AcGeLoop2d=X,f.AcGeMathUtil=w,f.AcGeMatrix2d=rt,f.AcGeMatrix3d=W,f.AcGeNurbsCurve=v,f.AcGePlane=mt,f.AcGePoint2d=P,f.AcGePoint3d=M,f.AcGePolyline2d=nt,f.AcGeQuaternion=dt,f.AcGeShape2d=Jt,f.AcGeSpline3d=et,f.AcGeTol=B,f.AcGeVector2d=R,f.AcGeVector3d=A,f.DEFAULT_TOL=pt,f.DEG2RAD=jt,f.FLOAT_TOL=K,f.ORIGIN_POINT_2D=ie,f.ORIGIN_POINT_3D=Ft,f.RAD2DEG=qt,f.TAU=I,f.acGeClosedPolygonArea2d=On,f.acGeClosedPolygonArea3d=Xn,f.acGePolygonArea2d=Un,f.acGePolygonArea3d=Fn,f.acGeSignedPolygonArea2d=$t,f.basisFunction=tt,f.calculateCurveLength=qn,f.ceilPowerOfTwo=Pn,f.clamp=Q,f.computeParameterValues=Rn,f.damp=cn,f.degToRad=_n,f.euclideanModulo=Vt,f.evaluateNurbsDerivatives=Nn,f.evaluateNurbsPoint=gt,f.floorPowerOfTwo=pn,f.generateAveragedKnots=kn,f.generateChordKnots=le,f.generateSqrtChordKnots=ue,f.generateUUID=on,f.generateUniformKnots=ce,f.getOcsAngle=fe,f.getOcsReferenceVector=xe,f.intPartLength=vt,f.interpolateControlPoints=me,f.interpolateNurbsCurve=Gt,f.inverseLerp=an,f.isBetween=wn,f.isBetweenAngle=Mn,f.isPointInPolygon=Yt,f.isPolygonIntersect=Tn,f.isPowerOfTwo=An,f.lerp=Lt,f.mapLinear=hn,f.normalizeAngle=ut,f.offsetPointByDirectionInXY=De,f.offsetSmoothedSampledPath=Ze,f.offsetVertexPath=Ye,f.pingpong=ln,f.radToDeg=fn,f.randFloat=gn,f.randFloatSpread=yn,f.randInt=mn,f.relativeEps=zn,f.seededRandom=xn,f.signedPlanarCurvature=jn,f.smootherstep=dn,f.smoothstep=un,f.transformOcsPointToWcs=_e,f.transformWcsPointToOcs=Wt,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
1
+ (function(_,V){typeof exports=="object"&&typeof module<"u"?V(exports,require("@mlightcad/common")):typeof define=="function"&&define.amd?define(["exports","@mlightcad/common"],V):(_=typeof globalThis<"u"?globalThis:_||self,V(_["geometry-engine"]={},_.common))})(this,function(_,V){"use strict";const L=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let rn=1234567;const jt=Math.PI/180,qt=180/Math.PI;function on(){const o=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0,e=Math.random()*4294967295|0;return(L[o&255]+L[o>>8&255]+L[o>>16&255]+L[o>>24&255]+"-"+L[t&255]+L[t>>8&255]+"-"+L[t>>16&15|64]+L[t>>24&255]+"-"+L[n&63|128]+L[n>>8&255]+"-"+L[n>>16&255]+L[n>>24&255]+L[e&255]+L[e>>8&255]+L[e>>16&255]+L[e>>24&255]).toLowerCase()}function W(o,t,n){return Math.max(t,Math.min(n,o))}function Vt(o,t){return(o%t+t)%t}function hn(o,t,n,e,s){return e+(o-t)*(s-e)/(n-t)}function an(o,t,n){return o!==t?(n-o)/(t-o):0}function Lt(o,t,n){return(1-n)*o+n*t}function cn(o,t,n,e){return Lt(o,t,1-Math.exp(-n*e))}function ln(o,t=1){return t-Math.abs(Vt(o,t*2)-t)}function un(o,t,n){return o<=t?0:o>=n?1:(o=(o-t)/(n-t),o*o*(3-2*o))}function dn(o,t,n){return o<=t?0:o>=n?1:(o=(o-t)/(n-t),o*o*o*(o*(o*6-15)+10))}function mn(o,t){return o+Math.floor(Math.random()*(t-o+1))}function gn(o,t){return o+Math.random()*(t-o)}function yn(o){return o*(.5-Math.random())}function xn(o){o!==void 0&&(rn=o);let t=rn+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function fn(o){return o*jt}function _n(o){return o*qt}function An(o){return(o&o-1)===0&&o!==0}function Pn(o){return Math.pow(2,Math.ceil(Math.log(o)/Math.LN2))}function wn(o){return Math.pow(2,Math.floor(Math.log(o)/Math.LN2))}function ut(o){const t=Math.PI*2;return(o%t+t)%t}function pn(o,t,n){return o>t&&o<n||o>n&&o<t}function Mn(o,t,n,e=!1){return o=ut(o),t=ut(t),n=ut(n),e?t>n?o<=t&&o>=n:o<=t||o>=n:t<n?o>=t&&o<=n:o>=t||o<=n}function vt(o){return o=Math.abs(o),o<1?0:Math.ceil(Math.log10(Math.abs(o)+1))}function zn(o,t=1e-7){const n=vt(o);return Math.max(Math.pow(10,n)*t,t)}const p={DEG2RAD:jt,RAD2DEG:qt,generateUUID:on,clamp:W,euclideanModulo:Vt,mapLinear:hn,inverseLerp:an,lerp:Lt,damp:cn,pingpong:ln,smoothstep:un,smootherstep:dn,randInt:mn,randFloat:gn,randFloatSpread:yn,seededRandom:xn,degToRad:fn,radToDeg:_n,isPowerOfTwo:An,ceilPowerOfTwo:Pn,floorPowerOfTwo:wn,normalizeAngle:ut,isBetween:pn,isBetweenAngle:Mn,intPartLength:vt,relativeEps:zn},ft=class ft{constructor(t,n){this.x=0,this.y=0;const e=+(t!==void 0)+ +(n!==void 0);if(e!==0){if(e===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(e===1){const{x:s,y:i}=t;this.x=s,this.y=i;return}if(e===2){this.x=t,this.y=n;return}throw V.AcCmErrors.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,n){return this.x=t,this.y=n,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,n){switch(t){case 0:this.x=n;break;case 1:this.y=n;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new ft(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,n){return this.x=t.x+n.x,this.y=t.y+n.y,this}addScaledVector(t,n){return this.x+=t.x*n,this.y+=t.y*n,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,n){return this.x=t.x-n.x,this.y=t.y-n.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix2d(t){const n=this.x,e=this.y,s=t.elements;return this.x=s[0]*n+s[3]*e+s[6],this.y=s[1]*n+s[4]*e+s[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,n){return this.x=Math.max(t.x,Math.min(n.x,this.x)),this.y=Math.max(t.y,Math.min(n.y,this.y)),this}clampScalar(t,n){return this.x=Math.max(t,Math.min(n,this.x)),this.y=Math.max(t,Math.min(n,this.y)),this}clampLength(t,n){const e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(n,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const n=Math.sqrt(this.lengthSq()*t.lengthSq());if(n===0)return Math.PI/2;const e=this.dot(t)/n;return Math.acos(Math.max(-1,Math.min(1,e)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const n=this.x-t.x,e=this.y-t.y;return n*n+e*e}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,n){return this.x+=(t.x-this.x)*n,this.y+=(t.y-this.y)*n,this}lerpVectors(t,n,e){return this.x=t.x+(n.x-t.x)*e,this.y=t.y+(n.y-t.y)*e,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,n=0){return this.x=t[n],this.y=t[n+1],this}toArray(t=[],n=0){return t[n]=this.x,t[n+1]=this.y,t}rotateAround(t,n){const e=Math.cos(n),s=Math.sin(n),i=this.x-t.x,r=this.y-t.y;return this.x=i*e-r*s+t.x,this.y=i*s+r*e+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(p.relativeEps(this.x,t),p.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};ft.EMPTY=Object.freeze(new ft(0,0));let R=ft;const _t=class _t{constructor(t,n,e,s,i,r,h,a,c){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&n!=null&&e!=null&&s!=null&&i!=null&&r!=null&&h!=null&&a!=null&&c!=null&&this.set(t,n,e,s,i,r,h,a,c)}set(t,n,e,s,i,r,h,a,c){const l=this.elements;return l[0]=t,l[1]=s,l[2]=h,l[3]=n,l[4]=i,l[5]=a,l[6]=e,l[7]=r,l[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const n=this.elements,e=t.elements;return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],this}extractBasis(t,n,e){return t.setFromMatrix3Column(this,0),n.setFromMatrix3Column(this,1),e.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const n=t.elements;return this.set(n[0],n[4],n[8],n[1],n[5],n[9],n[2],n[6],n[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,n){const e=t.elements,s=n.elements,i=this.elements,r=e[0],h=e[3],a=e[6],c=e[1],l=e[4],u=e[7],d=e[2],m=e[5],g=e[8],y=s[0],x=s[3],f=s[6],b=s[1],w=s[4],C=s[7],S=s[2],T=s[5],z=s[8];return i[0]=r*y+h*b+a*S,i[3]=r*x+h*w+a*T,i[6]=r*f+h*C+a*z,i[1]=c*y+l*b+u*S,i[4]=c*x+l*w+u*T,i[7]=c*f+l*C+u*z,i[2]=d*y+m*b+g*S,i[5]=d*x+m*w+g*T,i[8]=d*f+m*C+g*z,this}multiplyScalar(t){const n=this.elements;return n[0]*=t,n[3]*=t,n[6]*=t,n[1]*=t,n[4]*=t,n[7]*=t,n[2]*=t,n[5]*=t,n[8]*=t,this}determinant(){const t=this.elements,n=t[0],e=t[1],s=t[2],i=t[3],r=t[4],h=t[5],a=t[6],c=t[7],l=t[8];return n*r*l-n*h*c-e*i*l+e*h*a+s*i*c-s*r*a}invert(){const t=this.elements,n=t[0],e=t[1],s=t[2],i=t[3],r=t[4],h=t[5],a=t[6],c=t[7],l=t[8],u=l*r-h*c,d=h*a-l*i,m=c*i-r*a,g=n*u+e*d+s*m;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const y=1/g;return t[0]=u*y,t[1]=(s*c-l*e)*y,t[2]=(h*e-s*r)*y,t[3]=d*y,t[4]=(l*n-s*a)*y,t[5]=(s*i-h*n)*y,t[6]=m*y,t[7]=(e*a-c*n)*y,t[8]=(r*n-e*i)*y,this}transpose(){let t;const n=this.elements;return t=n[1],n[1]=n[3],n[3]=t,t=n[2],n[2]=n[6],n[6]=t,t=n[5],n[5]=n[7],n[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const n=this.elements;return t.elements[0]=n[0],t.elements[1]=n[3],t.elements[2]=n[6],t.elements[3]=n[1],t.elements[4]=n[4],t.elements[5]=n[7],t.elements[6]=n[2],t.elements[7]=n[5],t.elements[8]=n[8],this}setUvTransform(t,n,e,s,i,r,h){const a=Math.cos(i),c=Math.sin(i);return this.set(e*a,e*c,-e*(a*r+c*h)+r+t,-s*c,s*a,-s*(-c*r+a*h)+h+n,0,0,1),this}scale(t,n){return this.premultiply(Ut.makeScale(t,n)),this}rotate(t){return this.premultiply(Ut.makeRotation(-t)),this}translate(t,n){return this.premultiply(Ut.makeTranslation(t,n)),this}makeTranslation(t,n){return t instanceof R?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,n,0,0,1),this}makeRotation(t){const n=Math.cos(t),e=Math.sin(t);return this.set(n,-e,0,e,n,0,0,0,1),this}makeScale(t,n){return this.set(t,0,0,0,n,0,0,0,1),this}equals(t){const n=this.elements,e=t.elements;for(let s=0;s<9;s++)if(n[s]!==e[s])return!1;return!0}fromArray(t,n=0){for(let e=0;e<9;e++)this.elements[e]=t[e+n];return this}toArray(t=[],n=0){const e=this.elements;return t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3],t[n+4]=e[4],t[n+5]=e[5],t[n+6]=e[6],t[n+7]=e[7],t[n+8]=e[8],t}clone(){return new _t().fromArray(this.elements)}};_t.IDENTITY=Object.freeze(new _t);let rt=_t;const Ut=new rt,K=1e-6,I=2*Math.PI,re={x:0,y:0},Ft={x:0,y:0,z:0};class B{constructor(){this.equalPointTol=K,this.equalVectorTol=K}clone(){const t=new B;return t.equalPointTol=this.equalPointTol,t.equalVectorTol=this.equalVectorTol,t}equalPoint2d(t,n){return new R(t).sub(n).length()<this.equalPointTol}equalPoint3d(t,n){return new A(t).sub(n).length()<this.equalPointTol}static equalToZero(t,n=K){return t<n&&t>-n}static equal(t,n,e=K){return Math.abs(t-n)<e}static great(t,n,e=K){return t-n>e}static less(t,n,e=K){return t-n<e}static isPositive(t,n=K){return t>n}static isNonPositive(t,n=K){return t<=n}}const wt=new B;class dt{constructor(t=0,n=0,e=0,s=1){this._x=t,this._y=n,this._z=e,this._w=s}static slerpFlat(t,n,e,s,i,r,h){let a=e[s+0],c=e[s+1],l=e[s+2],u=e[s+3];const d=i[r+0],m=i[r+1],g=i[r+2],y=i[r+3];if(h===0){t[n+0]=a,t[n+1]=c,t[n+2]=l,t[n+3]=u;return}if(h===1){t[n+0]=d,t[n+1]=m,t[n+2]=g,t[n+3]=y;return}if(u!==y||a!==d||c!==m||l!==g){let x=1-h;const f=a*d+c*m+l*g+u*y,b=f>=0?1:-1,w=1-f*f;if(w>Number.EPSILON){const S=Math.sqrt(w),T=Math.atan2(S,f*b);x=Math.sin(x*T)/S,h=Math.sin(h*T)/S}const C=h*b;if(a=a*x+d*C,c=c*x+m*C,l=l*x+g*C,u=u*x+y*C,x===1-h){const S=1/Math.sqrt(a*a+c*c+l*l+u*u);a*=S,c*=S,l*=S,u*=S}}t[n]=a,t[n+1]=c,t[n+2]=l,t[n+3]=u}static multiplyQuaternionsFlat(t,n,e,s,i,r){const h=e[s],a=e[s+1],c=e[s+2],l=e[s+3],u=i[r],d=i[r+1],m=i[r+2],g=i[r+3];return t[n]=h*g+l*u+a*m-c*d,t[n+1]=a*g+l*d+c*u-h*m,t[n+2]=c*g+l*m+h*d-a*u,t[n+3]=l*g-h*u-a*d-c*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,n,e,s){return this._x=t,this._y=n,this._z=e,this._w=s,this._onChangeCallback(),this}clone(){return new dt(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,n=!0){const e=t.x,s=t.y,i=t.z,r=t.order,h=Math.cos,a=Math.sin,c=h(e/2),l=h(s/2),u=h(i/2),d=a(e/2),m=a(s/2),g=a(i/2);switch(r){case"XYZ":this._x=d*l*u+c*m*g,this._y=c*m*u-d*l*g,this._z=c*l*g+d*m*u,this._w=c*l*u-d*m*g;break;case"YXZ":this._x=d*l*u+c*m*g,this._y=c*m*u-d*l*g,this._z=c*l*g-d*m*u,this._w=c*l*u+d*m*g;break;case"ZXY":this._x=d*l*u-c*m*g,this._y=c*m*u+d*l*g,this._z=c*l*g+d*m*u,this._w=c*l*u-d*m*g;break;case"ZYX":this._x=d*l*u-c*m*g,this._y=c*m*u+d*l*g,this._z=c*l*g-d*m*u,this._w=c*l*u+d*m*g;break;case"YZX":this._x=d*l*u+c*m*g,this._y=c*m*u+d*l*g,this._z=c*l*g-d*m*u,this._w=c*l*u-d*m*g;break;case"XZY":this._x=d*l*u-c*m*g,this._y=c*m*u-d*l*g,this._z=c*l*g+d*m*u,this._w=c*l*u+d*m*g;break}return n===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,n){const e=n/2,s=Math.sin(e);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(e),this._onChangeCallback(),this}setFromRotationMatrix(t){const n=t.elements,e=n[0],s=n[4],i=n[8],r=n[1],h=n[5],a=n[9],c=n[2],l=n[6],u=n[10],d=e+h+u;if(d>0){const m=.5/Math.sqrt(d+1);this._w=.25/m,this._x=(l-a)*m,this._y=(i-c)*m,this._z=(r-s)*m}else if(e>h&&e>u){const m=2*Math.sqrt(1+e-h-u);this._w=(l-a)/m,this._x=.25*m,this._y=(s+r)/m,this._z=(i+c)/m}else if(h>u){const m=2*Math.sqrt(1+h-e-u);this._w=(i-c)/m,this._x=(s+r)/m,this._y=.25*m,this._z=(a+l)/m}else{const m=2*Math.sqrt(1+u-e-h);this._w=(r-s)/m,this._x=(i+c)/m,this._y=(a+l)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,n){let e=t.dot(n)+1;return e<Number.EPSILON?(e=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=e):(this._x=0,this._y=-t.z,this._z=t.y,this._w=e)):(this._x=t.y*n.z-t.z*n.y,this._y=t.z*n.x-t.x*n.z,this._z=t.x*n.y-t.y*n.x,this._w=e),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(W(this.dot(t),-1,1)))}rotateTowards(t,n){const e=this.angleTo(t);if(e===0)return this;const s=Math.min(1,n/e);return this.slerp(t,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,n){const e=t._x,s=t._y,i=t._z,r=t._w,h=n._x,a=n._y,c=n._z,l=n._w;return this._x=e*l+r*h+s*c-i*a,this._y=s*l+r*a+i*h-e*c,this._z=i*l+r*c+e*a-s*h,this._w=r*l-e*h-s*a-i*c,this._onChangeCallback(),this}slerp(t,n){if(n===0)return this;if(n===1)return this.copy(t);const e=this._x,s=this._y,i=this._z,r=this._w;let h=r*t._w+e*t._x+s*t._y+i*t._z;if(h<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,h=-h):this.copy(t),h>=1)return this._w=r,this._x=e,this._y=s,this._z=i,this;const a=1-h*h;if(a<=Number.EPSILON){const m=1-n;return this._w=m*r+n*this._w,this._x=m*e+n*this._x,this._y=m*s+n*this._y,this._z=m*i+n*this._z,this.normalize(),this}const c=Math.sqrt(a),l=Math.atan2(c,h),u=Math.sin((1-n)*l)/c,d=Math.sin(n*l)/c;return this._w=r*u+this._w*d,this._x=e*u+this._x*d,this._y=s*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(t,n,e){return this.copy(t).slerp(n,e)}random(){const t=2*Math.PI*Math.random(),n=2*Math.PI*Math.random(),e=Math.random(),s=Math.sqrt(1-e),i=Math.sqrt(e);return this.set(s*Math.sin(t),s*Math.cos(t),i*Math.sin(n),i*Math.cos(n))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,n=0){return this._x=t[n],this._y=t[n+1],this._z=t[n+2],this._w=t[n+3],this._onChangeCallback(),this}toArray(t=[],n=0){return t[n]=this._x,t[n+1]=this._y,t[n+2]=this._z,t[n+3]=this._w,t}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}const j=class j{constructor(t,n,e){this.x=0,this.y=0,this.z=0;const s=+(t!==void 0)+ +(n!==void 0)+ +(e!==void 0);if(s!==0){if(s===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(s===1){const{x:i,y:r,z:h}=t;this.x=i,this.y=r,this.z=h||0;return}if(s===3){this.x=t,this.y=n,this.z=e;return}throw V.AcCmErrors.ILLEGAL_PARAMETERS}}set(t,n,e){return e===void 0&&(e=this.z),this.x=t,this.y=n,this.z=e,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,n){switch(t){case 0:this.x=n;break;case 1:this.y=n;break;case 2:this.z=n;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new j(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,n){return this.x=t.x+n.x,this.y=t.y+n.y,this.z=t.z+n.z,this}addScaledVector(t,n){return this.x+=t.x*n,this.y+=t.y*n,this.z+=t.z*n,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,n){return this.x=t.x-n.x,this.y=t.y-n.y,this.z=t.z-n.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,n){return this.x=t.x*n.x,this.y=t.y*n.y,this.z=t.z*n.z,this}applyEuler(t){return this.applyQuaternion(bn.setFromEuler(t))}applyAxisAngle(t,n){return this.applyQuaternion(bn.setFromAxisAngle(t,n))}applyMatrix3(t){const n=this.x,e=this.y,s=this.z,i=t.elements;return this.x=i[0]*n+i[3]*e+i[6]*s,this.y=i[1]*n+i[4]*e+i[7]*s,this.z=i[2]*n+i[5]*e+i[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const n=this.x,e=this.y,s=this.z,i=t.elements,r=1/(i[3]*n+i[7]*e+i[11]*s+i[15]);return this.x=(i[0]*n+i[4]*e+i[8]*s+i[12])*r,this.y=(i[1]*n+i[5]*e+i[9]*s+i[13])*r,this.z=(i[2]*n+i[6]*e+i[10]*s+i[14])*r,this}applyQuaternion(t){const n=this.x,e=this.y,s=this.z,i=t.x,r=t.y,h=t.z,a=t.w,c=2*(r*s-h*e),l=2*(h*n-i*s),u=2*(i*e-r*n);return this.x=n+a*c+r*u-h*l,this.y=e+a*l+h*c-i*u,this.z=s+a*u+i*l-r*c,this}transformDirection(t){const n=this.x,e=this.y,s=this.z,i=t.elements;return this.x=i[0]*n+i[4]*e+i[8]*s,this.y=i[1]*n+i[5]*e+i[9]*s,this.z=i[2]*n+i[6]*e+i[10]*s,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,n){return this.x=Math.max(t.x,Math.min(n.x,this.x)),this.y=Math.max(t.y,Math.min(n.y,this.y)),this.z=Math.max(t.z,Math.min(n.z,this.z)),this}clampScalar(t,n){return this.x=Math.max(t,Math.min(n,this.x)),this.y=Math.max(t,Math.min(n,this.y)),this.z=Math.max(t,Math.min(n,this.z)),this}clampLength(t,n){const e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(n,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isParallelTo(t){const n=this.dot(t),e=this.length(),s=t.length();return Math.abs(n)===e*s}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,n){return this.x+=(t.x-this.x)*n,this.y+=(t.y-this.y)*n,this.z+=(t.z-this.z)*n,this}lerpVectors(t,n,e){return this.x=t.x+(n.x-t.x)*e,this.y=t.y+(n.y-t.y)*e,this.z=t.z+(n.z-t.z)*e,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,n){const e=t.x,s=t.y,i=t.z,r=n.x,h=n.y,a=n.z;return this.x=s*a-i*h,this.y=i*r-e*a,this.z=e*h-s*r,this}projectOnVector(t){const n=t.lengthSq();if(n===0)return this.set(0,0,0);const e=t.dot(this)/n;return this.copy(t).multiplyScalar(e)}projectOnPlane(t){return Ot.copy(this).projectOnVector(t),this.sub(Ot)}reflect(t){return this.sub(Ot.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const n=Math.sqrt(this.lengthSq()*t.lengthSq());if(n===0)return Math.PI/2;const e=this.dot(t)/n;return Math.acos(Math.max(-1,Math.min(1,e)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const n=this.x-t.x,e=this.y-t.y,s=this.z-t.z;return n*n+e*e+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromMatrixPosition(t){const n=t.elements;return this.x=n[12],this.y=n[13],this.z=n[14],this}setFromMatrixScale(t){const n=this.setFromMatrixColumn(t,0).length(),e=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=n,this.y=e,this.z=s,this}setFromMatrixColumn(t,n){return this.fromArray(t.elements,n*4)}setFromMatrix3Column(t,n){return this.fromArray(t.elements,n*3)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,n=0){return this.x=t[n],this.y=t[n+1],this.z=t[n+2],this}toArray(t=[],n=0){return t[n]=this.x,t[n+1]=this.y,t[n+2]=this.z,t}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,n=Math.random()*2-1,e=Math.sqrt(1-n*n);return this.x=e*Math.cos(t),this.y=n,this.z=e*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};j.ORIGIN=Object.freeze(new j(0,0,0)),j.X_AXIS=Object.freeze(new j(1,0,0)),j.NEGATIVE_X_AXIS=Object.freeze(new j(-1,0,0)),j.Y_AXIS=Object.freeze(new j(0,1,0)),j.NEGATIVE_Y_AXIS=Object.freeze(new j(0,-1,0)),j.Z_AXIS=Object.freeze(new j(0,0,1)),j.NEGATIVE_Z_AXIS=Object.freeze(new j(0,0,-1));let A=j;const Ot=new A,bn=new dt,At=class At{constructor(t,n,e,s,i,r,h,a,c,l,u,d,m,g,y,x){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&n!=null&&e!=null&&s!=null&&i!=null&&r!=null&&h!=null&&a!=null&&c!=null&&l!=null&&u!=null&&d!=null&&m!=null&&g!=null&&y!=null&&x!=null&&this.set(t,n,e,s,i,r,h,a,c,l,u,d,m,g,y,x)}set(t,n,e,s,i,r,h,a,c,l,u,d,m,g,y,x){const f=this.elements;return f[0]=t,f[4]=n,f[8]=e,f[12]=s,f[1]=i,f[5]=r,f[9]=h,f[13]=a,f[2]=c,f[6]=l,f[10]=u,f[14]=d,f[3]=m,f[7]=g,f[11]=y,f[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new At().fromArray(this.elements)}copy(t){const n=this.elements,e=t.elements;return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],this}copyPosition(t){const n=this.elements,e=t.elements;return n[12]=e[12],n[13]=e[13],n[14]=e[14],this}setFromMatrix3(t){const n=t.elements;return this.set(n[0],n[3],n[6],0,n[1],n[4],n[7],0,n[2],n[5],n[8],0,0,0,0,1),this}setFromExtrusionDirection(t){const n=Math.hypot(t.x,t.y,t.z);if(!Number.isFinite(n)||n<1e-12)return this.identity(),this;const e=Math.abs(n-1)>1e-6?t.clone().multiplyScalar(1/n):t;if(wt.equalPoint3d(e,A.Z_AXIS))this.identity();else{const s=new A(1,0,0);Math.abs(e.x)<1/64&&Math.abs(e.y)<1/64?s.crossVectors(A.Y_AXIS,e).normalize():s.crossVectors(A.Z_AXIS,e).normalize();const i=e.clone().cross(s).normalize();this.set(s.x,s.y,s.z,0,i.x,i.y,i.z,0,e.x,e.y,e.z,0,0,0,0,1)}return this}extractBasis(t,n,e){return t.setFromMatrixColumn(this,0),n.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this}makeBasis(t,n,e){return this.set(t.x,n.x,e.x,0,t.y,n.y,e.y,0,t.z,n.z,e.z,0,0,0,0,1),this}extractRotation(t){const n=this.elements,e=t.elements,s=1/ot.setFromMatrixColumn(t,0).length(),i=1/ot.setFromMatrixColumn(t,1).length(),r=1/ot.setFromMatrixColumn(t,2).length();return n[0]=e[0]*s,n[1]=e[1]*s,n[2]=e[2]*s,n[3]=0,n[4]=e[4]*i,n[5]=e[5]*i,n[6]=e[6]*i,n[7]=0,n[8]=e[8]*r,n[9]=e[9]*r,n[10]=e[10]*r,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,this}makeRotationFromQuaternion(t){return this.compose(oe,t,he)}lookAt(t,n,e){const s=this.elements;return O.subVectors(t,n),O.lengthSq()===0&&(O.z=1),O.normalize(),tt.crossVectors(e,O),tt.lengthSq()===0&&(Math.abs(e.z)===1?O.x+=1e-4:O.z+=1e-4,O.normalize(),tt.crossVectors(e,O)),tt.normalize(),pt.crossVectors(O,tt),s[0]=tt.x,s[4]=pt.x,s[8]=O.x,s[1]=tt.y,s[5]=pt.y,s[9]=O.y,s[2]=tt.z,s[6]=pt.z,s[10]=O.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,n){const e=t.elements,s=n.elements,i=this.elements,r=e[0],h=e[4],a=e[8],c=e[12],l=e[1],u=e[5],d=e[9],m=e[13],g=e[2],y=e[6],x=e[10],f=e[14],b=e[3],w=e[7],C=e[11],S=e[15],T=s[0],z=s[4],k=s[8],E=s[12],N=s[1],q=s[5],Z=s[9],H=s[13],F=s[2],Et=s[6],It=s[10],Tt=s[14],Bt=s[3],Rt=s[7],kt=s[11],Nt=s[15];return i[0]=r*T+h*N+a*F+c*Bt,i[4]=r*z+h*q+a*Et+c*Rt,i[8]=r*k+h*Z+a*It+c*kt,i[12]=r*E+h*H+a*Tt+c*Nt,i[1]=l*T+u*N+d*F+m*Bt,i[5]=l*z+u*q+d*Et+m*Rt,i[9]=l*k+u*Z+d*It+m*kt,i[13]=l*E+u*H+d*Tt+m*Nt,i[2]=g*T+y*N+x*F+f*Bt,i[6]=g*z+y*q+x*Et+f*Rt,i[10]=g*k+y*Z+x*It+f*kt,i[14]=g*E+y*H+x*Tt+f*Nt,i[3]=b*T+w*N+C*F+S*Bt,i[7]=b*z+w*q+C*Et+S*Rt,i[11]=b*k+w*Z+C*It+S*kt,i[15]=b*E+w*H+C*Tt+S*Nt,this}multiplyScalar(t){const n=this.elements;return n[0]*=t,n[4]*=t,n[8]*=t,n[12]*=t,n[1]*=t,n[5]*=t,n[9]*=t,n[13]*=t,n[2]*=t,n[6]*=t,n[10]*=t,n[14]*=t,n[3]*=t,n[7]*=t,n[11]*=t,n[15]*=t,this}determinant(){const t=this.elements,n=t[0],e=t[4],s=t[8],i=t[12],r=t[1],h=t[5],a=t[9],c=t[13],l=t[2],u=t[6],d=t[10],m=t[14],g=t[3],y=t[7],x=t[11],f=t[15];return g*(+i*a*u-s*c*u-i*h*d+e*c*d+s*h*m-e*a*m)+y*(+n*a*m-n*c*d+i*r*d-s*r*m+s*c*l-i*a*l)+x*(+n*c*u-n*h*m-i*r*u+e*r*m+i*h*l-e*c*l)+f*(-s*h*l-n*a*u+n*h*d+s*r*u-e*r*d+e*a*l)}transpose(){const t=this.elements;let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,this}setPosition(t,n,e){const s=this.elements;return t instanceof A?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=n,s[14]=e),this}invert(){const t=this.elements,n=t[0],e=t[1],s=t[2],i=t[3],r=t[4],h=t[5],a=t[6],c=t[7],l=t[8],u=t[9],d=t[10],m=t[11],g=t[12],y=t[13],x=t[14],f=t[15],b=u*x*c-y*d*c+y*a*m-h*x*m-u*a*f+h*d*f,w=g*d*c-l*x*c-g*a*m+r*x*m+l*a*f-r*d*f,C=l*y*c-g*u*c+g*h*m-r*y*m-l*h*f+r*u*f,S=g*u*a-l*y*a-g*h*d+r*y*d+l*h*x-r*u*x,T=n*b+e*w+s*C+i*S;if(T===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const z=1/T;return t[0]=b*z,t[1]=(y*d*i-u*x*i-y*s*m+e*x*m+u*s*f-e*d*f)*z,t[2]=(h*x*i-y*a*i+y*s*c-e*x*c-h*s*f+e*a*f)*z,t[3]=(u*a*i-h*d*i-u*s*c+e*d*c+h*s*m-e*a*m)*z,t[4]=w*z,t[5]=(l*x*i-g*d*i+g*s*m-n*x*m-l*s*f+n*d*f)*z,t[6]=(g*a*i-r*x*i-g*s*c+n*x*c+r*s*f-n*a*f)*z,t[7]=(r*d*i-l*a*i+l*s*c-n*d*c-r*s*m+n*a*m)*z,t[8]=C*z,t[9]=(g*u*i-l*y*i-g*e*m+n*y*m+l*e*f-n*u*f)*z,t[10]=(r*y*i-g*h*i+g*e*c-n*y*c-r*e*f+n*h*f)*z,t[11]=(l*h*i-r*u*i-l*e*c+n*u*c+r*e*m-n*h*m)*z,t[12]=S*z,t[13]=(l*y*s-g*u*s+g*e*d-n*y*d-l*e*x+n*u*x)*z,t[14]=(g*h*s-r*y*s-g*e*a+n*y*a+r*e*x-n*h*x)*z,t[15]=(r*u*s-l*h*s+l*e*a-n*u*a-r*e*d+n*h*d)*z,this}scale(t){const n=this.elements,e=t.x,s=t.y,i=t.z;return n[0]*=e,n[4]*=s,n[8]*=i,n[1]*=e,n[5]*=s,n[9]*=i,n[2]*=e,n[6]*=s,n[10]*=i,n[3]*=e,n[7]*=s,n[11]*=i,this}getMaxScaleOnAxis(){const t=this.elements,n=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],e=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],s=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(n,e,s))}makeTranslation(t,n,e){return t instanceof A?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,n,0,0,1,e,0,0,0,1),this}makeRotationX(t){const n=Math.cos(t),e=Math.sin(t);return this.set(1,0,0,0,0,n,-e,0,0,e,n,0,0,0,0,1),this}makeRotationY(t){const n=Math.cos(t),e=Math.sin(t);return this.set(n,0,e,0,0,1,0,0,-e,0,n,0,0,0,0,1),this}makeRotationZ(t){const n=Math.cos(t),e=Math.sin(t);return this.set(n,-e,0,0,e,n,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,n){const e=Math.cos(n),s=Math.sin(n),i=1-e,r=t.x,h=t.y,a=t.z,c=i*r,l=i*h;return this.set(c*r+e,c*h-s*a,c*a+s*h,0,c*h+s*a,l*h+e,l*a-s*r,0,c*a-s*h,l*a+s*r,i*a*a+e,0,0,0,0,1),this}makeScale(t,n,e){return this.set(t,0,0,0,0,n,0,0,0,0,e,0,0,0,0,1),this}makeShear(t,n,e,s,i,r){return this.set(1,e,i,0,t,1,r,0,n,s,1,0,0,0,0,1),this}compose(t,n,e){const s=this.elements,i=n.x,r=n.y,h=n.z,a=n.w,c=i+i,l=r+r,u=h+h,d=i*c,m=i*l,g=i*u,y=r*l,x=r*u,f=h*u,b=a*c,w=a*l,C=a*u,S=e.x,T=e.y,z=e.z;return s[0]=(1-(y+f))*S,s[1]=(m+C)*S,s[2]=(g-w)*S,s[3]=0,s[4]=(m-C)*T,s[5]=(1-(d+f))*T,s[6]=(x+b)*T,s[7]=0,s[8]=(g+w)*z,s[9]=(x-b)*z,s[10]=(1-(d+y))*z,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,n,e){const s=this.elements;let i=ot.set(s[0],s[1],s[2]).length();const r=ot.set(s[4],s[5],s[6]).length(),h=ot.set(s[8],s[9],s[10]).length();this.determinant()<0&&(i=-i),t.x=s[12],t.y=s[13],t.z=s[14],Y.copy(this);const c=1/i,l=1/r,u=1/h;return Y.elements[0]*=c,Y.elements[1]*=c,Y.elements[2]*=c,Y.elements[4]*=l,Y.elements[5]*=l,Y.elements[6]*=l,Y.elements[8]*=u,Y.elements[9]*=u,Y.elements[10]*=u,n.setFromRotationMatrix(Y),e.x=i,e.y=r,e.z=h,this}equals(t){const n=this.elements,e=t.elements;for(let s=0;s<16;s++)if(n[s]!==e[s])return!1;return!0}fromArray(t,n=0){for(let e=0;e<16;e++)this.elements[e]=t[e+n];return this}toArray(t=[],n=0){const e=this.elements;return t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3],t[n+4]=e[4],t[n+5]=e[5],t[n+6]=e[6],t[n+7]=e[7],t[n+8]=e[8],t[n+9]=e[9],t[n+10]=e[10],t[n+11]=e[11],t[n+12]=e[12],t[n+13]=e[13],t[n+14]=e[14],t[n+15]=e[15],t}};At.IDENTITY=Object.freeze(new At);let $=At;const ot=new A,Y=new $,oe=new A(0,0,0),he=new A(1,1,1),tt=new A,pt=new A,O=new A;class G{constructor(t=void 0,n=void 0){this.min=t==null?new A(1/0,1/0,1/0):new A(t.x,t.y,t.z),this.max=n==null?new A(-1/0,-1/0,-1/0):new A(n.x,n.y,n.z)}set(t,n){return this.min.copy(t),this.max.copy(n),this}setFromArray(t){this.makeEmpty();for(let n=0,e=t.length;n<e;n+=3)this.expandByPoint(Dt.fromArray(t,n));return this}setFromPoints(t){this.makeEmpty();for(let n=0,e=t.length;n<e;n++)this.expandByPoint(t[n]);return this}setFromCenterAndSize(t,n){const e=Dt.copy(n).multiplyScalar(.5);return this.min.copy(t).sub(e),this.max.copy(t).add(e),this}clone(){return new G().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new A(0,0,0):new A(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new A(0,0,0):new A(0,0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,n){return n.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsPlane(t){let n,e;return t.normal.x>0?(n=t.normal.x*this.min.x,e=t.normal.x*this.max.x):(n=t.normal.x*this.max.x,e=t.normal.x*this.min.x),t.normal.y>0?(n+=t.normal.y*this.min.y,e+=t.normal.y*this.max.y):(n+=t.normal.y*this.max.y,e+=t.normal.y*this.min.y),t.normal.z>0?(n+=t.normal.z*this.min.z,e+=t.normal.z*this.max.z):(n+=t.normal.z*this.max.z,e+=t.normal.z*this.min.z),n<=-t.constant&&e>=-t.constant}clampPoint(t,n){return n.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Dt).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(J[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),J[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),J[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),J[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),J[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),J[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),J[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),J[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(J),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)}}const J=[new A,new A,new A,new A,new A,new A,new A,new A],Dt=new A,Sn=new R;class D{constructor(t=void 0,n=void 0){this.min=t==null?new R(1/0,1/0):new R(t.x,t.y),this.max=n==null?new R(-1/0,-1/0):new R(n.x,n.y)}set(t,n){return this.min.copy(t),this.max.copy(n),this}setFromPoints(t){this.makeEmpty();for(let n=0,e=t.length;n<e;n++)this.expandByPoint(t[n]);return this}setFromCenterAndSize(t,n){const e=Sn.copy(n).multiplyScalar(.5);return this.min.copy(t).sub(e),this.max.copy(t).add(e),this}clone(){return new D().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new R(0,0):new R(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new R(0,0):new R(0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,n){return n.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y)}clampPoint(t,n){return n.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Sn).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),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)}}const Cn=new A,ae=new A,ce=new rt;class mt{constructor(t=new A(1,0,0),n=0){this.normal=t,this.constant=n}set(t,n){return this.normal.copy(t),this.constant=n,this}setComponents(t,n,e,s){return this.normal.set(t,n,e),this.constant=s,this}setFromNormalAndCoplanarPoint(t,n){return this.normal.copy(t),this.constant=-n.dot(this.normal),this}setFromCoplanarPoints(t,n,e){const s=Cn.subVectors(e,n).cross(ae.subVectors(t,n)).normalize();return this.setFromNormalAndCoplanarPoint(s,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}projectPoint(t,n){return n.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectsBox(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,n){const e=n||ce.getNormalMatrix(t),s=this.coplanarPoint(Cn).applyMatrix4(t),i=this.normal.applyMatrix3(e).normalize();return this.constant=-s.dot(i),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new mt().copy(this)}}class P extends R{clone(){return new P(this.x,this.y)}static pointArrayToNumberArray(t){const n=new Array(t.length*2);return t.forEach((e,s)=>{e.toArray(n,s*2)}),n}}class M extends A{clone(){return new M(this.x,this.y,this.z)}static pointArrayToNumberArray(t,n=!0){const e=n?3:2,s=new Array(t.length*e);return t.forEach((i,r)=>{i.toArray(s,r*e)}),s}}const En=new $,In=new dt,Pt=class Pt{constructor(t=0,n=0,e=0,s=Pt.DEFAULT_ORDER){this._x=t,this._y=n,this._z=e,this._order=s}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,n,e,s=this._order){return this._x=t,this._y=n,this._z=e,this._order=s,this._onChangeCallback(),this}clone(){return new Pt(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,n=this._order,e=!0){const s=t.elements,i=s[0],r=s[4],h=s[8],a=s[1],c=s[5],l=s[9],u=s[2],d=s[6],m=s[10];switch(n){case"XYZ":this._y=Math.asin(W(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-l,m),this._z=Math.atan2(-r,i)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-W(l,-1,1)),Math.abs(l)<.9999999?(this._y=Math.atan2(h,m),this._z=Math.atan2(a,c)):(this._y=Math.atan2(-u,i),this._z=0);break;case"ZXY":this._x=Math.asin(W(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,m),this._z=Math.atan2(-r,c)):(this._y=0,this._z=Math.atan2(a,i));break;case"ZYX":this._y=Math.asin(-W(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,m),this._z=Math.atan2(a,i)):(this._x=0,this._z=Math.atan2(-r,c));break;case"YZX":this._z=Math.asin(W(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-l,c),this._y=Math.atan2(-u,i)):(this._x=0,this._y=Math.atan2(h,m));break;case"XZY":this._z=Math.asin(-W(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(h,i)):(this._x=Math.atan2(-l,m),this._y=0);break}return this._order=n,e===!0&&this._onChangeCallback(),this}setFromQuaternion(t,n,e=!0){return En.makeRotationFromQuaternion(t),this.setFromRotationMatrix(En,n,e)}setFromVector3(t,n=this._order){return this.set(t.x,t.y,t.z,n)}reorder(t){return In.setFromEuler(this),this.setFromQuaternion(In,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],n=0){return t[n]=this._x,t[n+1]=this._y,t[n+2]=this._z,t[n+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Pt.DEFAULT_ORDER="XYZ";let Xt=Pt;function Yt(o,t,n=!1){const e=o.x,s=o.y;let i=!1;const r=t.length;for(let h=0,a=r-1;h<r;a=h++){const c=t[h].x,l=t[h].y,u=t[a].x,d=t[a].y;let m=l>s!=d>s;n&&(m=l>=s!=d>=s),m&&e<(u-c)*(s-l)/(d-l)+c&&(i=!i)}return i}function Tn(o,t){if(o.length===0||t.length===0)return!1;const n=new D().setFromPoints(o),e=new D().setFromPoints(t);if(!n.intersectsBox(e))return!1;for(let s=0;s<o.length;){if(Yt(o[s],t,!0))return!0;s<o.length-1&&wt.equalPoint2d(o[s+1],o[s])&&++s,++s}return!1}const Bn={isPointInPolygon:Yt,isPolygonIntersect:Tn};function le(o,t){const n=[],e=t-1,s=o;for(let i=0;i<=s;i++)n.push(0);for(let i=1;i<=e-s;i++)n.push(i);for(let i=0;i<=s;i++)n.push(e-s+1);return n}function ue(o,t){const n=t.length-1,e=o,s=[0];let i=0;for(let h=1;h<=n;h++){const a=t[h][0]-t[h-1][0],c=t[h][1]-t[h-1][1],l=t[h][2]-t[h-1][2],u=Math.sqrt(a*a+c*c+l*l);i+=u,s.push(i)}const r=[];for(let h=0;h<=e;h++)r.push(0);for(let h=1;h<=n-e;h++){const a=s[h]/i;r.push(a*(n-e+1))}for(let h=0;h<=e;h++)r.push(n-e+1);return r}function Rn(o,t="Uniform"){const n=o.length;if(n===0)return[];if(n===1)return[0];const e=n-1;if(t==="Uniform")return new Array(n).fill(0).map((r,h)=>h/e);const s=[0];let i=0;for(let r=1;r<=e;r++){const h=o[r][0]-o[r-1][0],a=o[r][1]-o[r-1][1],c=o[r][2]-o[r-1][2],l=Math.sqrt(h*h+a*a+c*c),u=t==="SqrtChord"?Math.sqrt(l):l;i+=u,s.push(i)}return i<1e-12?new Array(n).fill(0).map((r,h)=>h/e):s.map(r=>r/i)}function kn(o,t){const n=t.length-1,e=o,s=n+e+1,i=new Array(s+1).fill(0),r=t[t.length-1];for(let h=s-e;h<=s;h++)i[h]=r;for(let h=1;h<=n-e;h++){let a=0;for(let c=h;c<h+e;c++)a+=t[c];i[h+e]=a/e}return i}function de(o,t){const n=t.length-1,e=o,s=[0];let i=0;for(let h=1;h<=n;h++){const a=t[h][0]-t[h-1][0],c=t[h][1]-t[h-1][1],l=t[h][2]-t[h-1][2],u=Math.sqrt(a*a+c*c+l*l),d=Math.sqrt(u);i+=d,s.push(i)}const r=[];for(let h=0;h<=e;h++)r.push(0);for(let h=1;h<=n-e;h++){const a=s[h]/i;r.push(a*(n-e+1))}for(let h=0;h<=e;h++)r.push(n-e+1);return r}function Zt(o,t){const n=o.length,e=o.map(r=>r.slice()),s=t.slice();for(let r=0;r<n;r++){let h=r,a=Math.abs(e[r][r]);for(let c=r+1;c<n;c++){const l=Math.abs(e[c][r]);l>a&&(a=l,h=c)}if(a<1e-12)throw new Error("Interpolation matrix is singular.");if(h!==r){const c=e[r];e[r]=e[h],e[h]=c;const l=s[r];s[r]=s[h],s[h]=l}for(let c=r+1;c<n;c++){const l=e[c][r]/e[r][r];if(!(Math.abs(l)<1e-14)){for(let u=r;u<n;u++)e[c][u]-=l*e[r][u];s[c]-=l*s[r]}}}const i=new Array(n).fill(0);for(let r=n-1;r>=0;r--){let h=s[r];for(let a=r+1;a<n;a++)h-=e[r][a]*i[a];i[r]=h/e[r][r]}return i}function Gt(o,t,n="Uniform",e,s){if(o.length===0)return{controlPoints:[],knots:[],weights:[]};const i=o.map(E=>[E[0],E[1],E[2]??0]),r=!!e,h=!!s,a=(r?1:0)+(h?1:0),c=i.length-1,l=c+a;if(l<t)throw new Error("Not enough points to interpolate a curve of this degree.");const u=Rn(i,n),d=u.slice();r&&d.unshift(u[0]),h&&d.push(u[u.length-1]);const m=kn(t,d),g=l+1,y=new Array(g),x=new Array(g),f=new Array(g),b=new Array(g);let w=0;y[w]=new Array(g).fill(0),y[w][0]=1,x[w]=i[0][0],f[w]=i[0][1],b[w]=i[0][2],w++;for(let E=1;E<=c-1;E++){const N=u[E];y[w]=new Array(g).fill(0);for(let q=0;q<=l;q++)y[w][q]=nt(q,t,N,m);x[w]=i[E][0],f[w]=i[E][1],b[w]=i[E][2],w++}if(y[w]=new Array(g).fill(0),y[w][l]=1,x[w]=i[c][0],f[w]=i[c][1],b[w]=i[c][2],w++,r){const E=m[t+1]-m[0],N=E!==0?t/E:0;y[w]=new Array(g).fill(0),y[w][0]=-N,y[w][1]=N,x[w]=(e==null?void 0:e[0])??0,f[w]=(e==null?void 0:e[1])??0,b[w]=(e==null?void 0:e[2])??0,w++}if(h){const E=m[l+t+1]-m[l],N=E!==0?t/E:0;y[w]=new Array(g).fill(0),y[w][l-1]=-N,y[w][l]=N,x[w]=(s==null?void 0:s[0])??0,f[w]=(s==null?void 0:s[1])??0,b[w]=(s==null?void 0:s[2])??0,w++}const C=Zt(y,x),S=Zt(y,f),T=Zt(y,b),z=new Array(g);for(let E=0;E<g;E++)z[E]=[C[E],S[E],T[E]];const k=new Array(g).fill(1);return{controlPoints:z,knots:m,weights:k}}function nt(o,t,n,e){if(t===0)return n>=e[o]&&n<e[o+1]?1:0;const s=e[o+t]-e[o],i=e[o+t+1]-e[o+1],r=s>1e-10?(n-e[o])/s:0,h=i>1e-10?(e[o+t+1]-n)/i:0;return r*nt(o,t-1,n,e)+h*nt(o+1,t-1,n,e)}function gt(o,t,n,e,s){const i=e.length-1,r=t;if(o=Math.max(n[r],Math.min(n[i+1],o)),Math.abs(o-n[i+1])<1e-8)return[...e[i]];if(Math.abs(o-n[r])<1e-8)return[...e[0]];const h=[0,0,0];let a=0;for(let c=0;c<=i;c++){const l=nt(c,r,o,n),u=s[c]*l;h[0]+=e[c][0]*u,h[1]+=e[c][1]*u,h[2]+=e[c][2]*u,a+=u}if(Math.abs(a)<1e-10){const c=n[n.length-r-1];if(Math.abs(o-c)<1e-8)return[...e[i]];if(Math.abs(o-n[r])<1e-8)return[...e[0]]}return Math.abs(a)>=1e-10&&(h[0]/=a,h[1]/=a,h[2]/=a),h}function Qt(o,t,n,e){if(t===0)return 0;const s=e[o+t]-e[o],i=e[o+t+1]-e[o+1];let r=0;return s>1e-10&&(r+=t/s*nt(o,t-1,n,e)),i>1e-10&&(r-=t/i*nt(o+1,t-1,n,e)),r}function me(o,t,n,e){if(t<=1)return 0;const s=e[o+t]-e[o],i=e[o+t+1]-e[o+1];let r=0;return s>1e-10&&(r+=t/s*Qt(o,t-1,n,e)),i>1e-10&&(r-=t/i*Qt(o+1,t-1,n,e)),r}function Nn(o,t,n,e,s){const i=e.length-1,r=t,h=n[r],a=n[i+1];o=Math.max(h,Math.min(a,o));const c=[0,0,0],l=[0,0,0],u=[0,0,0];let d=0,m=0,g=0;for(let T=0;T<=i;T++){const z=nt(T,r,o,n),k=Qt(T,r,o,n),E=me(T,r,o,n),N=s[T],q=N*z,Z=N*k,H=N*E,F=e[T];c[0]+=q*F[0],c[1]+=q*F[1],c[2]+=q*F[2],l[0]+=Z*F[0],l[1]+=Z*F[1],l[2]+=Z*F[2],u[0]+=H*F[0],u[1]+=H*F[1],u[2]+=H*F[2],d+=q,m+=Z,g+=H}if(Math.abs(d)<1e-10)return{point:gt(o,t,n,e,s),deriv1:[0,0,0],deriv2:[0,0,0]};const y=d*d,x=[c[0]/d,c[1]/d,c[2]/d],f=[(l[0]*d-c[0]*m)/y,(l[1]*d-c[1]*m)/y,(l[2]*d-c[2]*m)/y],b=u[0]*d-c[0]*g,w=u[1]*d-c[1]*g,C=u[2]*d-c[2]*g,S=[b/y-2*m*f[0]/d,w/y-2*m*f[1]/d,C/y-2*m*f[2]/d];return{point:x,deriv1:f,deriv2:S}}function jn(o,t){const n=o[0],e=o[1],s=t[0],i=t[1],r=n*n+e*e;return r<1e-20?0:(n*i-e*s)/Math.pow(r,1.5)}function qn(o,t,n,e){const s=o,i=t[s],r=t[t.length-s-1];let h=0;const a=1e3,c=(r-i)/a;let l=gt(i,o,t,n,e);for(let y=1;y<=a;y++){const x=i+y*c,f=gt(x,o,t,n,e),b=f[0]-l[0],w=f[1]-l[1],C=f[2]-l[2];h+=Math.sqrt(b*b+w*w+C*C),l=f}const u=gt(r,o,t,n,e),d=u[0]-l[0],m=u[1]-l[1],g=u[2]-l[2];return h+=Math.sqrt(d*d+m*m+g*g),h}function ge(o,t=3,n="Uniform",e,s){return o.length===0?[]:Gt(o,t,n,e,s).controlPoints}const Vn=new $,Ln=new A,ye=new A,xe=new A,Wt=new M;function vn(o){return new $().setFromExtrusionDirection(new A(o.x,o.y,o.z))}function fe(o){return Vn.setFromExtrusionDirection(new A(o.x,o.y,o.z)),Vn.extractBasis(Ln,ye,xe),Ln.clone()}function _e(o,t){return new M(o.x,o.y,o.z??0).applyMatrix4(vn(t))}function Kt(o,t){return new M(o.x,o.y,o.z??0).applyMatrix4(vn(t).invert())}function Ae(o,t,n){const e=Kt(o,n),s=Kt(t,n);return Wt.set(s.x-e.x,s.y-e.y,(s.z??0)-(e.z??0)),p.normalizeAngle(Math.atan2(Wt.y,Wt.x))}function $t(o){const t=o.length;if(t<3)return 0;let n=0;for(let e=0,s=t-1;e<t;s=e++){const i=o[s],r=o[e];n+=i.x*r.y-r.x*i.y}return n*.5}function Un(o){return Math.abs($t(o))}function Fn(o){const t=o.length;if(t<3)return 0;let n=0,e=0,s=0;for(let i=0,r=t-1;i<t;r=i++){const h=o[r],a=o[i],c=h.x,l=h.y,u=h.z??0,d=a.x,m=a.y,g=a.z??0;n+=(u+g)*(l-m),e+=(c+d)*(u-g),s+=(l+m)*(c-d)}return .5*Math.hypot(n,e,s)}function On(o){return o.length<3?0:Un(o)}function Dn(o){return o.length<3?0:Fn(o)}class Xn{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class Jt extends Xn{translate(t){return this.transform(new rt().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class ht extends Jt{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(t){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(t){const n=this.getUtoTmapping(t);return this.getPoint(n)}getPoints(t=5){const n=[];for(let e=0;e<=t;e++)n.push(this.getPoint(e/t));return n}getSpacedPoints(t=5){const n=[];for(let e=0;e<=t;e++)n.push(this.getPointAt(e/t));return n}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){const n=[];let e,s=this.getPoint(0),i=0;n.push(0);for(let r=1;r<=t;r++)e=this.getPoint(r/t),i+=e.distanceTo(s),n.push(i),s=e;return n}getUtoTmapping(t,n){const e=this.getLengths();let s=0;const i=e.length;let r;n?r=n:r=t*e[i-1];let h=0,a=i-1,c;for(;h<=a;)if(s=Math.floor(h+(a-h)/2),c=e[s]-r,c<0)h=s+1;else if(c>0)a=s-1;else{a=s;break}if(s=a,e[s]===r)return s/(i-1);const l=e[s],d=e[s+1]-l,m=(r-l)/d;return(s+m)/(i-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const i=this.getPoint(e),r=this.getPoint(s),h=new P;return h.copy(r).sub(i).normalize(),h}getTangentAt(t){const n=this.getUtoTmapping(t);return this.getTangent(n)}}class Q extends ht{constructor(t,n,e,s,i){super();const r=+(t!==void 0)+ +(n!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(i!==void 0);if(r==3)typeof t=="object"&&typeof n=="object"&&typeof e=="object"?this.createByThreePoints(t,n,e):this.createByStartEndPointsAndBulge(t,n,e);else if(r==5){const h=t;this.center=new P(h.x,h.y),this.radius=n,this._clockwise=i,this._startAngle=this._clockwise?this._mirrorAngle(p.normalizeAngle(e)):p.normalizeAngle(e),this._endAngle=this._clockwise?this._mirrorAngle(p.normalizeAngle(s)):p.normalizeAngle(s)}else throw V.AcCmErrors.ILLEGAL_PARAMETERS}createByThreePoints(t,n,e){const s=(z,k)=>({x:(z.x+k.x)/2,y:(z.y+k.y)/2}),i=(z,k)=>(k.y-z.y)/(k.x-z.x),r=z=>-1/z,h=s(t,n),a=s(n,e),c=i(t,n),l=i(n,e),u=r(c),d=r(l),m=(z,k,E,N)=>{const q=(N-k)/(z-E),Z=z*q+k;return{x:q,y:Z}},g=h.y-u*h.x,y=a.y-d*a.x,x=m(u,g,d,y),f=Math.sqrt(Math.pow(t.x-x.x,2)+Math.pow(t.y-x.y,2)),b=(z,k)=>Math.atan2(z.y-k.y,z.x-k.x),w=b(t,x),C=b(n,x),S=b(e,x),T=S>w&&S<C||w>S&&w<C||C>S&&C<w;this.center=x,this.radius=f,this._clockwise=!T,this._startAngle=w,this._endAngle=S}createByStartEndPointsAndBulge(t,n,e){let s,i,r;e<0?(s=Math.atan(-e)*4,i=new R(t),r=new R(n)):(s=Math.atan(e)*4,i=new R(n),r=new R(t));const h=new R().subVectors(r,i),a=h.length(),c=new R().addVectors(i,h.multiplyScalar(.5)),l=Math.abs(a/2/Math.tan(s/2)),u=h.normalize(),d=e<0?-Math.PI/2:Math.PI/2,m=new R(u.x*Math.cos(d)-u.y*Math.sin(d),u.y*Math.cos(d)+u.x*Math.sin(d));let g;s<Math.PI?e<0?g=c.add(m.multiplyScalar(l)):g=c.add(m.multiplyScalar(-l)):e<0?g=c.add(m.multiplyScalar(-l)):g=c.add(m.multiplyScalar(l)),e<0?(this._startAngle=Math.atan2(i.y-g.y,i.x-g.x),this._endAngle=Math.atan2(r.y-g.y,r.x-g.x)):(this._startAngle=Math.atan2(r.y-g.y,r.x-g.x),this._endAngle=Math.atan2(i.y-g.y,i.x-g.x)),this._clockwise=e<0,this.center=g,this.radius=r.sub(g).length()}get center(){return this._center}set center(t){this._center=new P(t.x,t.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(t){this._startAngle=this._clockwise?this._mirrorAngle(p.normalizeAngle(t)):p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(t){const n=this.startAngle==0&&t==I?t:p.normalizeAngle(t);this._endAngle=this._clockwise?this._mirrorAngle(n):n,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(t){return(360-t*180/Math.PI)%360*Math.PI/180}_getInternalAngle(t){return this._clockwise?this._mirrorAngle(t):t}get deltaAngle(){const t=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return this.clockwise?p.normalizeAngle(t-n):p.normalizeAngle(n-t)}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const t=this._getInternalAngle(this.startAngle),n=this._clockwise?p.normalizeAngle(t-this.deltaAngle/2):p.normalizeAngle(t+this.deltaAngle/2),e=this._clockwise?this._mirrorAngle(n):n;return this.getPointAtAngle(e)}get closed(){const t=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return Math.abs(n-t)/Math.PI%2==0}calculateBoundingBox(){const t=[this.startPoint,this.endPoint],n=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const i of n){const r=this._getInternalAngle(i);p.isBetweenAngle(r,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(i))}const e=t.map(i=>i.x),s=t.map(i=>i.y);return new D(new P(Math.min(...e),Math.min(...s)),new P(Math.max(...e),Math.max(...s)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){const n=t,e=this.center.clone().applyMatrix2d(n),s=this.startPoint.clone().applyMatrix2d(n);if(this.closed)return this.center=e,this.radius=e.distanceTo(s),this._startAngle=Math.atan2(s.y-e.y,s.x-e.x),this._endAngle=this._startAngle,this._clockwise=n.determinant()<0?!this._clockwise:this._clockwise,this._boundingBoxNeedsUpdate=!0,this;const i=this.midPoint.clone().applyMatrix2d(n),r=this.endPoint.clone().applyMatrix2d(n),h=new Q(s,i,r),a=n.determinant()<0?!this.clockwise:this.clockwise,c=l=>{const u=p.normalizeAngle(l);return a?this._mirrorAngle(u):u};return this.center=h.center,this.radius=h.radius,this.clockwise=a,this.startAngle=c(Math.atan2(s.y-h.center.y,s.x-h.center.x)),this.endAngle=c(Math.atan2(r.y-h.center.y,r.x-h.center.x)),this._boundingBoxNeedsUpdate=!0,this}clone(){return new Q(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(t){const n=this._getInternalAngle(t),e=this.center.x+this.radius*Math.cos(n),s=this.center.y+this.radius*Math.sin(n);return new P(e,s)}getQuadrantPoints(){const t=[],n=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle),s=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const i of s){const r=this._getInternalAngle(i);p.isBetweenAngle(r,n,e,this.clockwise)&&t.push(this.getPointAtAngle(i))}return t}nearestPoint(t){const n=new P(t.x,t.y),e=n.x-this.center.x,s=n.y-this.center.y;if(Math.hypot(e,s)<1e-12)return this.startPoint.clone();const r=Math.atan2(s,e),h=this.clockwise?this._mirrorAngle(p.normalizeAngle(r)):p.normalizeAngle(r),a=this._getInternalAngle(h),c=this._getInternalAngle(this.startAngle),l=this._getInternalAngle(this.endAngle);if(p.isBetweenAngle(a,c,l,this.clockwise))return this.getPointAtAngle(h);const u=n.distanceToSquared(this.startPoint),d=n.distanceToSquared(this.endPoint);return u<=d?this.startPoint.clone():this.endPoint.clone()}perpendicularPoints(t){const n=new P(t.x,t.y),e=n.x-this.center.x,s=n.y-this.center.y,i=Math.hypot(e,s);if(i<1e-12)return[];const r=e/i,h=s/i,a=[new P(this.center.x+r*this.radius,this.center.y+h*this.radius),new P(this.center.x-r*this.radius,this.center.y-h*this.radius)],c=[],l=this._getInternalAngle(this.startAngle),u=this._getInternalAngle(this.endAngle);for(const d of a){const m=Math.atan2(d.y-this.center.y,d.x-this.center.x),g=this.clockwise?this._mirrorAngle(p.normalizeAngle(m)):p.normalizeAngle(m),y=this._getInternalAngle(g);(this.closed||p.isBetweenAngle(y,l,u,this.clockwise))&&c.push(d)}return c}tangentPoints(t){const n=[],e=t.x-this.center.x,s=t.y-this.center.y,i=Math.hypot(e,s),r=this.radius;if(i<r)return n;const h=Math.acos(r/i),a=Math.atan2(s,e),c=[a+h,a-h],l=this._getInternalAngle(this.startAngle),u=this._getInternalAngle(this.endAngle);for(const d of c){const m=this.clockwise?this._mirrorAngle(p.normalizeAngle(d)):p.normalizeAngle(d),g=this._getInternalAngle(m);(this.closed||p.isBetweenAngle(g,l,u,this.clockwise))&&n.push(this.getPointAtAngle(m))}return n}getPoints(t=100){const n=[];let e=this.deltaAngle,s=this._getInternalAngle(this.startAngle);if(this.closed&&(e=I,s=0),this.clockwise)for(let i=0;i<=t;i++){const r=s-e*(i/t),h=this._clockwise?this._mirrorAngle(r):r,a=this.getPointAtAngle(h);n.push(new P(a.x,a.y))}else for(let i=0;i<=t;i++){const r=s+e*(i/t),h=this._clockwise?this._mirrorAngle(r):r,a=this.getPointAtAngle(h);n.push(new P(a.x,a.y))}return n}}const Mt=1e-6;function Yn(o,t){if(Fe(o)){const i=we(o,t);return i?[i]:[]}const n=$n(o);if(n.numberOfVertices<2)return[];const s=De(n,t);return s?[s]:[]}function Pe(o){return $n(o)}function we(o,t){const n=pe(o);if(n.length===0)return null;const e=[];for(const h of n){const a=ze(h,t);if(!a)return null;e.push(a)}const s=Me(o),i=Ee(e,s,o.closed,t);if(i.length<2)return null;const r=new et;return i.forEach((h,a)=>{r.addVertexAt(a,{x:h.x,y:h.y})}),r.closed=o.closed,r}function pe(o){const t=[],n=o.numberOfVertices,e=o.closed?n:n-1;for(let s=0;s<e;s++){const i=o.vertices[s],r=o.vertices[(s+1)%n];B.isPositive(Math.abs(i.bulge??0))?t.push({kind:"arc",arc:new Q(i,r,i.bulge)}):t.push({kind:"line",start:new P(i.x,i.y),end:new P(r.x,r.y)})}return t}function Me(o){const t=[];for(let n=0;n<o.numberOfVertices;n++)t.push(o.getPointAt(n));return t}function ze(o,t){if(o.kind==="line"){const e=Ce(o.start,o.end,t);return e?{kind:"line",...e}:null}const n=be(o.arc,o.arc.startPoint,o.arc.endPoint,t);return n?{kind:"arc",arc:n}:null}function be(o,t,n,e){const s=Se(o,t,n,e),i=o.radius+s;return B.isNonPositive(i)?null:new Q(o.center,i,o.startAngle,o.endAngle,o.clockwise)}function Se(o,t,n,e){const s=n.x-t.x,i=n.y-t.y,r=Math.hypot(s,i);if(B.isNonPositive(r))return o.clockwise?-e:e;const h=-i/r,a=s/r,c=o.center.x-(t.x+n.x)/2,l=o.center.y-(t.y+n.y)/2;return c*h+l*a>0?-e:e}function Ce(o,t,n){const e=t.x-o.x,s=t.y-o.y,i=Math.hypot(e,s);if(B.isNonPositive(i))return null;const r=-s/i*n,h=e/i*n;return{start:new P(o.x+r,o.y+h),end:new P(t.x+r,t.y+h),dx:e,dy:s}}function Ee(o,t,n,e){var h;const s=o.length;if(s===0)return[];const i=Ie(o,t,n,e),r=[((h=i[0].nextSegmentStart)==null?void 0:h.clone())??i[0].point.clone()];for(let a=0;a<s;a++){const c=o[a],l=a===s-1&&!n?{point:Ne(c)}:i[(a+1)%s];if(a>0&&i[a].filletPoints&&i[a].filletPoints.forEach(u=>r.push(u.clone())),c.kind==="arc"){const u=i[a].nextSegmentStart??i[a].point,d=l.point,m=Te(c.arc,u,d,Math.max(16,32));for(let g=1;g<m.length;g++)r.push(m[g])}else r.push(l.point.clone())}return Jn(r)}function Ie(o,t,n,e){const s=o.length,i=[];for(let r=0;r<s;r++)r===0?i.push(n?Zn(o[s-1],o[0],t[0],e):{point:ke(o[0])}):i.push(Zn(o[r-1],o[r],t[r],e));return i}function Te(o,t,n,e){const s=o.nearestPoint(t),i=o.nearestPoint(n),r=Ht(o,s),h=Ht(o,i),a=Re(o,r,h),c=[];for(let l=0;l<=e;l++){const u=l/e,d=o.clockwise?r-a*u:r+a*u;c.push(o.getPointAtAngle(Be(o,d)))}return c}function Ht(o,t){return Math.atan2(t.y-o.center.y,t.x-o.center.x)}function Be(o,t){const n=p.normalizeAngle(t);return o.clockwise?tn(n):n}function tn(o){return(360-o*180/Math.PI)%360*(Math.PI/180)}function Re(o,t,n){if(o.clockwise){let s=t-n;return B.isNonPositive(s)&&(s+=I),s}let e=n-t;return B.isNonPositive(e)&&(e+=I),e}function ke(o){return o.kind==="line"?o.start.clone():o.arc.startPoint.clone()}function Ne(o){return o.kind==="line"?o.end.clone():o.arc.endPoint.clone()}function Zn(o,t,n,e){return o.kind==="line"&&t.kind==="line"?{point:nn({start:o.start,end:o.end,dx:o.dx,dy:o.dy},{start:t.start,end:t.end,dx:t.dx,dy:t.dy})}:o.kind==="line"&&t.kind==="arc"?Gn(o,t.arc,n,e,!0):o.kind==="arc"&&t.kind==="line"?Gn(t,o.arc,n,e,!1):o.kind==="arc"&&t.kind==="arc"?je(o.arc,t.arc,n,e):{point:n.clone()}}function je(o,t,n,e){const s=Kn(o.endPoint,t.startPoint),r=Ue(o,t).filter(l=>zt(o,l)&&zt(t,l));if(r.length>0)return{point:Wn(r,s)};const h=o.endPoint.clone(),a=t.startPoint.clone(),c=Qn(n,Math.abs(e),h,a);return{point:h,filletPoints:c,nextSegmentStart:a}}function Gn(o,t,n,e,s){const i=Kn(s?o.end:o.start,s?t.startPoint:t.endPoint),r=ve(o,t,i);if(Ve(o,r)&&zt(t,r))return{point:r};const h=qe(o,n,e),a=s?t.startPoint.clone():t.endPoint.clone(),c=Qn(n,Math.abs(e),s?h:a,s?a:h);return s?{point:h,filletPoints:c,nextSegmentStart:a}:{point:a,filletPoints:c,nextSegmentStart:h}}function qe(o,t,n){const e=Math.hypot(o.dx,o.dy),s=-o.dy/e*n,i=o.dx/e*n;return new P(t.x+s,t.y+i)}function Ve(o,t){const n=Math.hypot(o.dx,o.dy);if(B.isNonPositive(n))return!1;const e=o.dx/n,s=o.dy/n,i=t.x-o.start.x,r=t.y-o.start.y,h=Math.abs(i*s-r*e);return B.equalToZero(h)}function Qn(o,t,n,e){const s=Math.atan2(n.y-o.y,n.x-o.x),i=Math.atan2(e.y-o.y,e.x-o.x),r=Le(s,i);if(B.equalToZero(Math.abs(r)))return[];const h=[],a=Math.max(2,Math.ceil(Math.abs(r)/Math.PI*16));for(let c=1;c<a;c++){const l=c/a,u=s+r*l;h.push(new P(o.x+t*Math.cos(u),o.y+t*Math.sin(u)))}return h}function Le(o,t){let n=t-o;for(;n>Math.PI;)n-=I;for(;n<=-Math.PI;)n+=I;return n}function ve(o,t,n){const e=Math.hypot(o.dx,o.dy);if(B.isNonPositive(e))return n.clone();const s=o.dx/e,i=o.dy/e,r=o.start.x-t.center.x,h=o.start.y-t.center.y,a=2*(r*s+h*i),c=r*r+h*h-t.radius*t.radius,l=a*a-4*c;if(l<0)return n.clone();const u=Math.sqrt(l),d=[(-a-u)/2,(-a+u)/2].map(g=>new P(o.start.x+s*g,o.start.y+i*g)),m=d.filter(g=>zt(t,g));return Wn(m.length>0?m:d,n)}function zt(o,t){const n=Math.abs(Math.hypot(t.x-o.center.x,t.y-o.center.y)-o.radius);if(B.isPositive(n))return!1;const e=Ht(o,t),s=o.clockwise?tn(p.normalizeAngle(o.startAngle)):p.normalizeAngle(o.startAngle),i=o.clockwise?tn(p.normalizeAngle(o.endAngle)):p.normalizeAngle(o.endAngle);return p.isBetweenAngle(e,s,i,o.clockwise)}function Ue(o,t){const n=t.center.x-o.center.x,e=t.center.y-o.center.y,s=Math.hypot(n,e);if(B.isNonPositive(s))return[];const i=o.radius+t.radius,r=Math.abs(o.radius-t.radius);if(s>i+Mt)return[];if(s<r-Mt)return[];const h=(o.radius*o.radius-t.radius*t.radius+s*s)/(2*s),a=o.radius*o.radius-h*h;if(a<-Mt)return[];const c=o.center.x+h*n/s,l=o.center.y+h*e/s;if(a<=Mt)return[new P(c,l)];const u=Math.sqrt(a),d=-e*u/s,m=n*u/s;return[new P(c+d,l+m),new P(c-d,l-m)]}function Wn(o,t){let n=o[0],e=n.distanceToSquared(t);for(let s=1;s<o.length;s++){const i=o[s].distanceToSquared(t);i<e&&(n=o[s],e=i)}return n.clone()}function Kn(o,t){return new P((o.x+t.x)/2,(o.y+t.y)/2)}function Fe(o){const t=o.numberOfVertices,n=o.closed?t:t-1;for(let e=0;e<n;e++){const s=o.vertices[e];if(B.isPositive(Math.abs(s.bulge??0)))return!0}return!1}function $n(o){const t=Oe(o.vertices.map(n=>new P(n.x,n.y)),o.closed);return t.length===o.numberOfVertices?o:new et(t.map(n=>({x:n.x,y:n.y})),o.closed)}function Oe(o,t){const n=Jn(o);if(!t||n.length<2)return n;const e=n[0],s=n[n.length-1];return B.isNonPositive(Math.hypot(e.x-s.x,e.y-s.y))&&n.pop(),n}function Jn(o){const t=[];return o.forEach(n=>{const e=t[t.length-1];(!e||B.isPositive(Math.hypot(e.x-n.x,e.y-n.y)))&&t.push(new P(n.x,n.y))}),t}function De(o,t){const n=[];for(let r=0;r<o.numberOfVertices;r++)n.push(o.getPointAt(r));const e=Xe(n,o.closed,t);if(e.length===0)return null;const s=[];if(o.closed){if(e.length<2)return null;const r=e.length;for(let h=0;h<r;h++){const a=e[(h-1+r)%r],c=e[h];s.push(nn(a,c))}}else{s.push(e[0].start);for(let r=1;r<e.length;r++)s.push(nn(e[r-1],e[r]));s.push(e[e.length-1].end)}const i=new et;return s.forEach((r,h)=>{i.addVertexAt(h,{x:r.x,y:r.y})}),i.closed=o.closed,i}function Xe(o,t,n){const e=[],s=t?o.length:o.length-1;for(let i=0;i<s;i++){const r=o[i],h=o[t?(i+1)%o.length:i+1],a=h.x-r.x,c=h.y-r.y,l=Math.hypot(a,c);if(B.isNonPositive(l))continue;const u=-c/l*n,d=a/l*n;e.push({start:new P(r.x+u,r.y+d),end:new P(h.x+u,h.y+d),dx:a,dy:c})}return e}function nn(o,t){const n=o.dx*t.dy-o.dy*t.dx;if(B.equalToZero(n))return new P((o.end.x+t.start.x)/2,(o.end.y+t.start.y)/2);const e=t.start.x-o.start.x,s=t.start.y-o.start.y,i=(e*t.dy-s*t.dx)/n;return new P(o.start.x+i*o.dx,o.start.y+i*o.dy)}class et extends ht{constructor(t=null,n=!1){super(),this._vertices=t||new Array,this._closed=n}get vertices(){return this._vertices}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const t=this._vertices[0];return new P(t.x,t.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const t=this.numberOfVertices;if(t>0)if(this.closed){const n=this._vertices[0];return new P(n.x,n.y)}else{const n=this._vertices[t-1];return new P(n.x,n.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let t=0;const n=this._vertices.length;for(let e=0;e<n;++e){const s=this._vertices[e];let i=null;if(e<n-1?i=this._vertices[e+1]:e==n-1&&this.closed&&(i=this._vertices[0]),i)if(s.bulge){const r=new Q(s,i,s.bulge);t+=r.length}else t+=new P(s.x,s.y).distanceTo(i)}return t}get area(){if(!this._closed||this._vertices.length<3)return 0;const t=this.getPoints(128);return On(t)}set closed(t){this._closed=t,this._boundingBoxNeedsUpdate=!0}addVertexAt(t,n){t<=0?this._vertices.unshift(n):this._vertices.splice(t,0,n),this._boundingBoxNeedsUpdate=!0}removeVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error(`Index ${t} is out of bounds. Valid range is 0 to ${this._vertices.length-1}.`);this._vertices.splice(t,1),this._boundingBoxNeedsUpdate=!0}reset(t,n){t?n!==void 0&&n>=0&&n<this._vertices.length&&(this._vertices=this._vertices.slice(0,n),this._boundingBoxNeedsUpdate=!0):(this._vertices=new Array,this._boundingBoxNeedsUpdate=!0)}getPointAt(t){const n=this._vertices[t];return new P(n.x,n.y)}calculateBoundingBox(){const t=this.getPoints(100);return new D().setFromPoints(t)}transform(t){const n=t.determinant()<0;return this._vertices.forEach(e=>{const s=new P(e).applyMatrix2d(t);e.x=s.x,e.y=s.y,n&&e.bulge!=null&&(e.bulge=-e.bulge)}),this._boundingBoxNeedsUpdate=!0,this}clone(){return new et(this._vertices.map(t=>({...t})),this._closed)}getPoints3d(t,n){const e=[];return this.getPoints(t).forEach(i=>e.push(new M().set(i.x,i.y,n))),e}getPoints(t){const n=[],e=this._vertices.length;for(let s=0;s<e;++s){const i=this._vertices[s];if(i.bulge){let r=null;if(s<e-1?r=this._vertices[s+1]:s==e-1&&this.closed&&(r=this._vertices[0]),r){const a=new Q(i,r,i.bulge).getPoints(t),c=a.length;for(let l=0;l<c;++l){const u=a[l];n.push(new P(u.x,u.y))}}}else n.push(new P(i.x,i.y)),s==e-1&&this.closed&&n.push(n[0])}return n}offset(t){return Yn(this,t)}}function Ye(o,t,n){const e=Math.hypot(t.x,t.y);if(B.isNonPositive(e))return null;const s=-t.y/e*n,i=t.x/e*n;return new M(o.x+s,o.y+i,o.z)}function Ze(o,t,n){if(o.length<2)return null;const e=Pe(new et(o.map(i=>({x:i.x,y:i.y})),t));return Yn(e,n)[0]??null}function Ge(o,t,n,e){if(o.length<2||B.equalToZero(n))return null;const{points:s,tangents:i}=te(o,e);if(s.length<2)return null;const r=i??Qe(s,t),h=We(s,r,n),a=t?$e(h):Ke(h);if(a.length<2)return null;const c=new et;return a.forEach((l,u)=>{c.addVertexAt(u,{x:l.x,y:l.y})}),c.closed=t,c}function Qe(o,t){const n=o.length,e=new Array(n);for(let s=0;s<n;s++){let i=0,r=0;if(t){const a=o[(s-1+n)%n],c=o[(s+1)%n];i=c.x-a.x,r=c.y-a.y}else s===0?(i=o[1].x-o[0].x,r=o[1].y-o[0].y):s===n-1?(i=o[n-1].x-o[n-2].x,r=o[n-1].y-o[n-2].y):(i=o[s+1].x-o[s-1].x,r=o[s+1].y-o[s-1].y);const h=Math.hypot(i,r);B.isNonPositive(h)?e[s]=new P(1,0):e[s]=new P(i/h,r/h)}return e}function We(o,t,n){return o.map((e,s)=>{const i=t[s],r=-i.y*n,h=i.x*n;return new P(e.x+r,e.y+h)})}function Ke(o){let t=bt(o);if(t.length<3)return t;for(;;){const n=Hn(t,!1);if(!n||(t=bt([...t.slice(0,n.segmentA+1),n.point,...t.slice(n.segmentB+1)]),t.length<2))break}return t}function $e(o){let t=bt(o);if(t.length<4)return t;for(;;){const n=Hn(t,!0);if(!n||(t=bt([...t.slice(0,n.segmentA+1),n.point,...t.slice(n.segmentB+1)]),t.length<3))break}return t}function Hn(o,t){const n=t?o.length:o.length-1;if(n<2)return null;for(let e=0;e<n;e++){const s=o[e],i=o[(e+1)%o.length];for(let r=e+1;r<n;r++){if(Je(e,r,n,t))continue;const h=o[r],a=o[(r+1)%o.length],c=He(s,i,h,a);if(c)return{point:c,segmentA:e,segmentB:r}}}return null}function Je(o,t,n,e){return!!(t===o||t===o+1||e&&o===0&&t===n-1)}function He(o,t,n,e){const s=t.x-o.x,i=t.y-o.y,r=e.x-n.x,h=e.y-n.y,a=s*h-i*r;if(B.equalToZero(a))return null;const c=n.x-o.x,l=n.y-o.y,u=(c*h-l*r)/a,d=(c*i-l*s)/a,m=wt.equalPointTol;return u<-m||u>1+m||d<-m||d>1+m?null:new P(o.x+u*s,o.y+u*i)}function te(o,t){const n=[],e=[],s=t!=null&&t.length===o.length;return o.forEach((i,r)=>{const h=n[n.length-1];if((!h||B.isPositive(Math.hypot(h.x-i.x,h.y-i.y)))&&(n.push(new P(i.x,i.y)),s)){const a=t[r];e.push(new P(a.x,a.y))}}),{points:n,tangents:s?e:void 0}}function bt(o){return te(o).points}class en extends Jt{constructor(){super(),this._loops=[]}add(t){this._loops.push(t),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const t=this.outter;return t?t.box:new D}transform(t){return this._loops.forEach(n=>{n.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}clone(){const t=new en;return this._loops.forEach(n=>{t.add(n.clone())}),t}getPoints(t){const n=[];for(let e=0;e<this.loops.length;++e){const i=this.loops[e].getPoints(t);n.push(i)}return n}buildHierarchy(){var h;const t=this.getPoints(100),n=this.calculateBoundaryBoxes(t),e=this.sortBoundaryBoxesByAreas(n),s=new Map,i=e.length;for(let a=0;a<i;a++)s.set(e[a],{index:e[a],children:[]});const r={index:-1,children:[]};for(let a=0;a<i;a++){const c=e[a],l=t[c],u=n[c];let d=a+1;for(;d<i;d++){const m=e[d],g=t[m];if(n[m].containsBox(u)&&Bn.isPointInPolygon(l[p.randInt(0,l.length-1)],g)){(h=s.get(m))==null||h.children.push(s.get(c));break}}d===i&&r.children.push(s.get(c))}return r}get area(){if(this._loops.length===0)return 0;let t=0;for(let n=0;n<this._loops.length;n++){const s=this._loops[n].getPoints(128),i=$t(s);n===0?t+=Math.abs(i):t-=Math.abs(i)}return t}calculateBoundaryBoxes(t){const n=[];return t.forEach(e=>{n.push(new D().setFromPoints(e))}),n}sortBoundaryBoxesByAreas(t){const n=[];t.forEach((s,i)=>{const r=s.size,h=r.width*r.height;n.push({area:h,index:i})}),n.sort((s,i)=>s.area-i.area);const e=[];return n.forEach(s=>{e.push(s.index)}),e}}class ts extends Xn{translate(t){return this.transform(new $().makeTranslation(t.x,t.y,t.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class yt extends ts{}class at extends yt{constructor(t,n){super(),this._start=new M(t),this._end=new M(n)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}get direction(){return new A().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new M((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}nearestPoint(t){return this.project(t)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(t){return this.project(t).distanceTo(t)<1e-6}at(t,n){return this.delta(n).multiplyScalar(t).add(this._start)}atLength(t,n=!1){if(n){const e=this.delta(st).normalize();return new M(this._start).addScaledVector(e,t)}else{const e=this.delta(st).normalize();return new M(this._end).addScaledVector(e,t)}}extend(t,n=!1){if(n){const e=st.subVectors(this._start,this._end).normalize();this._start=new M(this._start).addScaledVector(e,t)}else{const e=this.delta(st).normalize();this._end=new M(this._end).addScaledVector(e,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,n){ne.subVectors(t,this._start),St.subVectors(this.endPoint,this.startPoint);const e=St.dot(St);let i=St.dot(ne)/e;return n&&(i=p.clamp(i,0,1)),i}closestPointToPoint(t,n,e){const s=this.closestPointToPointParameter(t,n);return this.delta(e).multiplyScalar(s).add(this._start)}delta(t){return t.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(t){const n=this.direction,s=st.subVectors(t,this.startPoint).dot(n);return new M().copy(n).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const n=this.direction,e=this.startPoint,i=st.subVectors(t,e).dot(n),r=st.copy(n).multiplyScalar(i);return new M().addVectors(e,r)}calculateBoundingBox(){const t=new M(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),n=new M(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new G(t,n)}transform(t){return this._start.applyMatrix4(t),this._end.applyMatrix4(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new at(this._start.clone(),this._end.clone())}offset(t){const n=this.startPoint,e=this.endPoint;if(Math.hypot(e.x-n.x,e.y-n.y)===0)return this.clone();const i=new A(e.x-n.x,e.y-n.y,0).normalize(),r=new A(-i.y,i.x,0);return new at(new M(n.x+r.x*t,n.y+r.y*t,n.z),new M(e.x+r.x*t,e.y+r.y*t,e.z))}}const st=new A,ne=new A,St=new A;class ct extends yt{static computeCenterPoint(t,n,e){const s=new A().addVectors(t,n).multiplyScalar(.5),i=new A().addVectors(t,e).multiplyScalar(.5),r=new A().subVectors(n,t),h=new A().subVectors(e,t),a=new A().crossVectors(r,h).normalize();if(a.lengthSq()===0)return null;const c=new A().crossVectors(r,a).normalize(),l=new A().crossVectors(h,a).normalize(),u=c.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),d=l.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),m=new at(s,s.clone().add(u)),g=new at(i,i.clone().add(d)),y=new A;return m.closestPointToPoint(g.startPoint,!0,y)?y:null}static createByThreePoints(t,n,e){const s=ct.computeCenterPoint(t,n,e);if(s){const i=s.distanceTo(t),r=new A().subVectors(t,s),h=new A().subVectors(n,s),a=Math.atan2(r.y,r.x),c=Math.atan2(h.y,h.x);return new ct(s,i,a,c,A.Z_AXIS)}}constructor(t,n,e,s,i,r=A.X_AXIS){super(),this.center=t,this.radius=n,this.startAngle=e,this.endAngle=s,this.normal=i,this.refVec=r,(s-e)%I==0?(this.startAngle=0,this.endAngle=I):(this.startAngle=e,this.endAngle=s)}get center(){return this._center}set center(t){this._center=new M(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==I?t:p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return p.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new A(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new A(t.x,t.y,t.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,n=this.deltaAngle;this.closed&&(t=0,n=I);const e=t+n*.5;return this.getPointAtAngle(e)}get length(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)}get area(){return this.closed?Math.PI*this.radius*this.radius:0}nearestPoint(t){const n=new A(t.x,t.y,t.z||0),e=this.center,s=this.normal,r=n.clone().sub(e).dot(s),a=n.clone().sub(s.clone().multiplyScalar(r)).clone().sub(e);if(a.lengthSq()===0)return this.startPoint.clone();a.normalize().multiplyScalar(this.radius);const c=e.clone().add(a),l=this.getAngle(c.clone()),u=this.startAngle,d=this.deltaAngle;let m=p.normalizeAngle(l-u);m<0&&(m=0),m>d&&(m=d);const g=this.getPointAtAngle(u+m),y=g.distanceTo(n),x=this.startPoint.distanceTo(n),f=this.endPoint.distanceTo(n);return x<y&&x<=f?this.startPoint.clone():f<y&&f<x?this.endPoint.clone():g}tangentPoints(t){const n=[],e=new A(t.x,t.y,t.z||0),s=this.center,i=this.normal,r=this.radius,a=e.clone().sub(s).dot(i),c=e.clone().sub(i.clone().multiplyScalar(a)),l=s.clone(),d=c.clone().sub(l).length();if(d<r)return n;const m=Math.acos(r/d),g=this.getAngle(c.clone()),y=[g+m,g-m];for(const x of y){const f=p.normalizeAngle(x-this.startAngle);f>=0&&f<=this.deltaAngle&&n.push(this.getPointAtAngle(this.startAngle+f))}return n}perpendicularPoints(t){const n=[],e=new A(t.x,t.y,t.z||0),s=this.center,i=this.normal,r=this.radius,a=e.clone().sub(s).dot(i),l=e.clone().sub(i.clone().multiplyScalar(a)).clone().sub(s);if(l.lengthSq()<1e-24)return n;l.normalize();const u=[s.clone().add(l.clone().multiplyScalar(r)),s.clone().sub(l.clone().multiplyScalar(r))];for(const d of u){const m=this.getAngle(d.clone()),g=p.normalizeAngle(m-this.startAngle);g>=0&&g<=this.deltaAngle&&n.push(new M(d.x,d.y,d.z||0))}return n}nearestTangentPoint(t){const n=this.tangentPoints(t);if(n.length===0)return null;const e=new M(t.x,t.y,t.z||0);return n.length===1||n[0].distanceTo(e)<n[1].distanceTo(e)?n[0]:n[1]}calculateBoundingBox(){const t=[this.startAngle,this.endAngle];for(let a=0;a<2*Math.PI;a+=Math.PI/2)p.isBetweenAngle(a,this.startAngle,this.endAngle)&&t.push(a);let n=1/0,e=1/0,s=1/0,i=-1/0,r=-1/0,h=-1/0;for(const a of t){const c=this.getPointAtAngle(a);c.x<n&&(n=c.x),c.y<e&&(e=c.y),c.z<s&&(s=c.z),c.x>i&&(i=c.x),c.y>r&&(r=c.y),c.z>h&&(h=c.z)}return new G({x:n,y:e,z:s},{x:i,y:r,z:h})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const n=[];let e=this.deltaAngle,s=this.startAngle;this.closed&&(e=I,s=0);for(let i=0;i<=t;i++){const r=s+e*(i/t),h=this.getPointAtAngle(r);n.push(h)}return n}transform(t){const n=this.center.clone().applyMatrix4(t),e=this.startPoint.clone().applyMatrix4(t),s=this.endPoint.clone().applyMatrix4(t),i=this.getPointAtAngle(this.closed?Math.PI/2:this.startAngle+this.deltaAngle/2).clone().applyMatrix4(t),r=new A(e).sub(n).normalize(),h=n.distanceTo(e);let a=new A().crossVectors(new A(e).sub(n),new A(i).sub(n)).normalize();a.lengthSq()===0&&(a=this.normal.clone().transformDirection(t));const c=l=>{const u=new A(l).sub(n);return Math.atan2(u.dot(ee.crossVectors(a,r)),u.dot(r))};return this.center=n,this.radius=h,this.normal=a,this.refVec=r,this.startAngle=0,this.endAngle=this.closed?I:c(s),this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.radius=t.radius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.normal=t.normal,this.refVec=t.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new ct(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(ee.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const n=this.normal,e=this.refVec,s={x:n.y*e.z-n.z*e.y,y:n.z*e.x-n.x*e.z,z:n.x*e.y-n.y*e.x},i=this.center,r=this.radius;return new M(i.x+r*(e.x*Math.cos(t)+s.x*Math.sin(t)),i.y+r*(e.y*Math.cos(t)+s.y*Math.sin(t)),i.z+r*(e.z*Math.cos(t)+s.z*Math.sin(t)))}get plane(){const t=new A(this.center).distanceTo(Ft);return new mt(this.normal,t)}offset(t){const n=this.radius+t;return n<=0?null:new ct(this.center,n,this.startAngle,this.endAngle,this.normal,this.refVec)}}const ee=new A;class it extends ht{constructor(t,n,e,s=0,i=I,r=!1,h=0){super(),this.center=t,this.majorAxisRadius=n,this.minorAxisRadius=e,(i-s)%I==0?(this.startAngle=0,this.endAngle=I):(this.startAngle=s,this.endAngle=i),this.clockwise=r,this.rotation=h}get center(){return this._center}set center(t){this._center=new M(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==I?t:p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(t){this._rotation=t,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return p.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let n=1/0,e=1/0,s=-1/0,i=-1/0;for(let r=0;r<=100;r++){const h=this.getPoint(r/100);n=Math.min(n,h.x),e=Math.min(e,h.y),s=Math.max(s,h.x),i=Math.max(i,h.y)}return new D({x:n,y:e},{x:s,y:i})}get closed(){return this.deltaAngle==0}getPoint(t){const n=Math.PI*2;let e=this.endAngle-this.startAngle;const s=Math.abs(e)<Number.EPSILON;for(;e<0;)e+=n;for(;e>n;)e-=n;e<Number.EPSILON&&(s?e=0:e=n),this.clockwise===!0&&!s&&(e===n?e=-n:e=e-n);const i=this.startAngle+t*e;let r=this.center.x+this.majorAxisRadius*Math.cos(i),h=this.center.y+this.minorAxisRadius*Math.sin(i);if(this.rotation!==0){const a=Math.cos(this.rotation),c=Math.sin(this.rotation),l=r-this.center.x,u=h-this.center.y;r=l*a-u*c+this.center.x,h=l*c+u*a+this.center.y}return new P(r,h)}transform(t){const n=t,e=new P(this.center).applyMatrix2d(n),s=new M(e.x,e.y,this.center.z),i=this.getPointAtAngle(0).clone().applyMatrix2d(n),r=this.getPointAtAngle(Math.PI/2).clone().applyMatrix2d(n),h=new P(i).sub(e),a=new P(r).sub(e),c=h.length(),l=a.length(),u=Math.atan2(h.y,h.x),d=h.clone().normalize(),m=a.clone().normalize(),g=f=>{const b=new P(f).sub(e),w=b.dot(d),C=b.dot(m);return p.normalizeAngle(Math.atan2(C/l,w/c))},y=n.determinant()<0?!this.clockwise:this.clockwise,x=this.closed?new it(s,c,l,0,I,y,u):new it(s,c,l,g(this.startPoint.clone().applyMatrix2d(n)),g(this.endPoint.clone().applyMatrix2d(n)),y,u);return this.center=x.center,this.majorAxisRadius=x.majorAxisRadius,this.minorAxisRadius=x.minorAxisRadius,this._startAngle=x._startAngle,this._endAngle=x._endAngle,this._clockwise=x._clockwise,this.rotation=x.rotation,this._boundingBoxNeedsUpdate=!0,this}getPointAtAngle(t){return this.getPoint(this.closed?t/I:p.normalizeAngle(t-this.startAngle)/this.deltaAngle)}copy(t){return this.center=t.center,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.clockwise=t.clockwise,this.rotation=t.rotation,this}clone(){return new it(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}getFocusPoints(){const t=Math.max(this.majorAxisRadius,this.minorAxisRadius),n=Math.min(this.majorAxisRadius,this.minorAxisRadius);if(t-n<1e-9)return[];const e=Math.sqrt(t*t-n*n),s=Math.cos(this.rotation),i=Math.sin(this.rotation),r=this.majorAxisRadius>=this.minorAxisRadius,h=r?s:-i,a=r?i:s;return[new P(this.center.x-e*h,this.center.y-e*a),new P(this.center.x+e*h,this.center.y+e*a)]}getQuadrantPoints(){return this.closed?[this.getPoint(0),this.getPoint(.25),this.getPoint(.5),this.getPoint(.75)]:[]}nearestPoint(t){const n=new P(t.x,t.y);let e=this.getPoint(0),s=n.distanceToSquared(e);const i=72;for(let r=1;r<=i;r++){const h=this.getPoint(r/i),a=n.distanceToSquared(h);a<s&&(s=a,e=h)}return e}tangentPoints(t){const n=this._projectPointToLocal(t);return this._findSnapAngles(n,(s,i,r,h)=>{const a=-this.majorAxisRadius*h,c=this.minorAxisRadius*r;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}perpendicularPoints(t){const n=this._projectPointToLocal(t);return this._findSnapAngles(n,(s,i,r,h)=>{const a=this.minorAxisRadius*r,c=this.majorAxisRadius*h;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}_projectPointToLocal(t){const n=t.x-this.center.x,e=t.y-this.center.y,s=Math.cos(-this.rotation),i=Math.sin(-this.rotation);return{x:n*s-e*i,y:n*i+e*s}}_findSnapAngles(t,n,e=144){const s=this.majorAxisRadius,i=this.minorAxisRadius,r=this.startAngle,h=this.deltaAngle,a=[],c=d=>{const m=Math.cos(d),g=Math.sin(d);return n(s*m,i*g,m,g)};let l=r,u=c(l);for(let d=1;d<=e;d++){const m=r+h*d/e,g=c(m);if(Math.abs(u)<1e-10&&a.push(l),u*g<0){let y=l,x=m;for(let f=0;f<32;f++){const b=(y+x)/2;c(y)*c(b)<=0?x=b:y=b}a.push((y+x)/2)}l=m,u=g}return a}}class lt extends yt{constructor(t,n,e,s,i,r=0,h=I){super(),this.center=t,this.normal=n,this.majorAxis=e,this.majorAxisRadius=s,this.minorAxisRadius=i;const a=Math.abs(h-r);Math.abs(a-I)<1e-10||Math.abs(a-2*I)<1e-10?(this.startAngle=0,this.endAngle=I):(this.startAngle=r,this.endAngle=h)}get center(){return this._center}set center(t){this._center=new M(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==I?t:p.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-I)<1e-10?I:p.normalizeAngle(t)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new A(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new A(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new A().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,n=this.deltaAngle;(this.closed||Math.abs(n-I)<1e-10)&&(t=0,n=I);const e=t+n/2;return this.getPointAtAngle(e)}get isCircular(){return B.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const t=1e3,n=this.deltaAngle/t;let e=0,s=this.getPointAtAngle(this.startAngle);for(let i=1;i<=t;i++){const r=this.startAngle+i*n,h=this.getPointAtAngle(r),a=h.x-s.x,c=h.y-s.y,l=h.z-s.z;e+=Math.sqrt(a*a+c*c+l*l),s=h}return e}get area(){return Math.abs(this.deltaAngle-I)>=1e-10?0:Math.PI*this.majorAxisRadius*this.minorAxisRadius}calculateBoundingBox(){if(this.majorAxis.equals(A.X_AXIS)||this.majorAxis.equals(A.Y_AXIS)||this.majorAxis.isParallelTo(A.X_AXIS)||this.majorAxis.isParallelTo(A.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let a=0;a<2*Math.PI;a+=Math.PI/2)p.isBetweenAngle(a,this.startAngle,this.endAngle)&&t.push(a);let n=1/0,e=1/0,s=1/0,i=-1/0,r=-1/0,h=-1/0;for(const a of t){const c=this.getPointAtAngle(a);c.x<n&&(n=c.x),c.y<e&&(e=c.y),c.z<s&&(s=c.z),c.x>i&&(i=c.x),c.y>r&&(r=c.y),c.z>h&&(h=c.z)}return new G({x:n,y:e,z:s},{x:i,y:r,z:h})}else{let n=1/0,e=1/0,s=1/0,i=-1/0,r=-1/0,h=-1/0;for(let a=0;a<=100;a++){const c=this.startAngle+this.deltaAngle*(a/100),l=this.getPointAtAngle(c);n=Math.min(n,l.x),e=Math.min(e,l.y),s=Math.min(s,l.z),i=Math.max(i,l.x),r=Math.max(r,l.y),h=Math.max(h,l.z)}return new G({x:n,y:e,z:s},{x:i,y:r,z:h})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const n=[];let e=this.deltaAngle,s=this.startAngle;this.closed&&(e=I,s=0);for(let i=0;i<=t;i++){const r=s+e*(i/t),h=this.getPointAtAngle(r);n.push(h)}return n}getPointAtAngle(t){const n=Math.cos(t),e=Math.sin(t),s=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(e),i=this.majorAxis.clone().multiplyScalar(n*this.majorAxisRadius).add(s);return new M(this.center.x+i.x,this.center.y+i.y,this.center.z+i.z)}nearestPoint(t,n=72){const e=new M(t.x,t.y,t.z||0);let s=this.getPointAtAngle(this.startAngle),i=e.distanceToSquared(s);for(let a=1;a<=n;a++){const c=this.startAngle+this.deltaAngle*a/n,l=this.getPointAtAngle(c),u=e.distanceToSquared(l);u<i&&(i=u,s=l)}const r=e.distanceToSquared(this.startPoint),h=e.distanceToSquared(this.endPoint);return r<i&&r<=h?this.startPoint.clone():h<i&&h<r?this.endPoint.clone():s.clone()}tangentPoints(t){const n=this._projectPointToLocalPlane(t);return this._findSnapParameterAngles((s,i,r,h)=>{const a=-this.majorAxisRadius*h,c=this.minorAxisRadius*r;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}perpendicularPoints(t){const n=this._projectPointToLocalPlane(t);return this._findSnapParameterAngles((s,i,r,h)=>{const a=this.minorAxisRadius*r,c=this.majorAxisRadius*h;return(s-n.x)*c-(i-n.y)*a}).map(s=>this.getPointAtAngle(s))}_projectPointToLocalPlane(t){const n=new M(t.x,t.y,t.z||0),e=new A(n).sub(this.center),s=e.dot(this.normal);return e.sub(this.normal.clone().multiplyScalar(s)),{x:e.dot(this.majorAxis),y:e.dot(this.minorAxis)}}_findSnapParameterAngles(t,n=144){const e=this.majorAxisRadius,s=this.minorAxisRadius,i=this.startAngle,r=this.deltaAngle,h=[],a=u=>{const d=Math.cos(u),m=Math.sin(u);return t(e*d,s*m,d,m)};let c=i,l=a(c);for(let u=1;u<=n;u++){const d=i+r*u/n,m=a(d);if(Math.abs(l)<1e-10&&h.push(c),l*m<0){let g=c,y=d;for(let x=0;x<32;x++){const f=(g+y)/2;a(g)*a(f)<=0?y=f:g=f}h.push((g+y)/2)}c=d,l=m}return h}contains(t){const n=new A(t).sub(this.center),e=n.dot(this.majorAxis),s=n.dot(this.minorAxis),i=e/this.majorAxisRadius,r=s/this.minorAxisRadius;return i*i+r*r<=1}transform(t){const n=t,e=this.center.clone().applyMatrix4(n),s=this.getPointAtAngle(0).clone().applyMatrix4(n),i=this.getPointAtAngle(Math.PI/2).clone().applyMatrix4(n),r=new A(s).sub(e),h=new A(i).sub(e),a=r.length(),c=h.length(),l=r.clone().normalize(),u=new A().crossVectors(r,h).normalize();let d=new A().crossVectors(u,l).normalize();d.dot(h)<0&&(u.negate(),d=new A().crossVectors(u,l).normalize());const m=y=>{const x=new A(y).sub(e),f=x.dot(l),b=x.dot(d);return p.normalizeAngle(Math.atan2(b/c,f/a))},g=this.closed?new lt(e,u,l,a,c,0,I):new lt(e,u,l,a,c,m(this.startPoint.clone().applyMatrix4(n)),m(this.endPoint.clone().applyMatrix4(n)));return this.center=g.center,this.normal=g.normal,this.majorAxis=g.majorAxis,this.majorAxisRadius=g.majorAxisRadius,this.minorAxisRadius=g.minorAxisRadius,this._startAngle=g._startAngle,this._endAngle=g._endAngle,this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.normal=t.normal,this.majorAxis=t.majorAxis,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new lt(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new A(this.center).distanceTo(Ft);return new mt(this.normal,t)}offset(t){const n=this.majorAxisRadius+t,e=this.minorAxisRadius+t;return n<=0||e<=0?null:new lt(this.center,this.normal,this.majorAxis,n,e,this.startAngle,this.endAngle)}}class xt extends ht{constructor(t,n){super(),this._start=new P(t),this._end=new P(n)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const t=new P(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),n=new P(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new D(t,n)}transform(t){return this._start.applyMatrix2d(t),this._end.applyMatrix2d(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new xt(this._start.clone(),this._end.clone())}project(t){const n=this._end.x-this._start.x,e=this._end.y-this._start.y,s=n*n+e*e;if(s<1e-18)return this._start.clone();let i=((t.x-this._start.x)*n+(t.y-this._start.y)*e)/s;return i=Math.max(0,Math.min(1,i)),new P(this._start.x+i*n,this._start.y+i*e)}nearestPoint(t){return this.project(t)}}class X extends ht{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}static buildFromEdges(t,n=.001){if(t.length===0)return[];const e=[...t],s=[],i=n*n,r=(h,a)=>{const c=h.x-a.x,l=h.y-a.y;return c*c+l*l<=i};for(;e.length>0;){const h=[],a=e.shift();h.push(a);const c=X.getEdgeStartPoint(a);let l=X.getEdgeEndPoint(a);if(!r(c,l))for(;e.length>0;){const u=X.findConnectingEdge(e,l,i);if(u.index<0)break;let d=e.splice(u.index,1)[0];if(u.reverse&&(d=X.reverseEdge(d)),h.push(d),l=X.getEdgeEndPoint(d),r(l,c))break}s.push(new X(h))}return s}add(t){this._curves.push(t),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const t=this._curves[0].startPoint;return new P(t.x,t.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let t=0;return this._curves.forEach(n=>{t+=n.length}),t}calculateBoundingBox(){const t=this.getPoints(100),n=new D;return n.setFromPoints(t),n}transform(t){const n=new $().set(t.elements[0],t.elements[3],0,t.elements[6],t.elements[1],t.elements[4],0,t.elements[7],0,0,1,0,0,0,0,1);return this._curves.forEach(e=>{e instanceof U?e.transform(n):e.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}clone(){return new X(this._curves.map(t=>t.clone()))}get closed(){return!0}getPoints(t){const n=[];return this.curves.forEach(e=>{e.getPoints(t).forEach(s=>{n.push(new P(s.x,s.y))})}),n}static findConnectingEdge(t,n,e){let s=-1,i=!1,r=Number.POSITIVE_INFINITY;for(let h=0;h<t.length;h++){const a=t[h],c=X.getEdgeStartPoint(a),l=X.getEdgeEndPoint(a),u=n.x-c.x,d=n.y-c.y,m=u*u+d*d;m<r&&(r=m,s=h,i=!1);const g=n.x-l.x,y=n.y-l.y,x=g*g+y*y;x<r&&(r=x,s=h,i=!0)}return r>e?{index:-1,reverse:!1}:{index:s,reverse:i}}static getEdgeStartPoint(t){const n=t.startPoint;return new P(n.x,n.y)}static getEdgeEndPoint(t){const n=t.endPoint;return new P(n.x,n.y)}static reverseEdge(t){return t instanceof xt?new xt(t.endPoint,t.startPoint):t instanceof Q?new Q(t.center,t.radius,t.endAngle,t.startAngle,!t.clockwise):t instanceof it?new it(t.center,t.majorAxisRadius,t.minorAxisRadius,t.endAngle,t.startAngle,!t.clockwise,t.rotation):t instanceof U?X.reverseSplineEdge(t):t}static reverseSplineEdge(t){const n=[...t.controlPoints].reverse(),e=t.knots,s=e[0],i=e[e.length-1],r=e.map(c=>s+i-c).reverse(),h=t.weights,a=h.length>0?[...h].reverse():void 0;return new U(n,r,a,t.degree,t.closed)}}class sn{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,n,e,s){this.c0=t,this.c1=e,this.c2=-3*t+3*n-2*e-s,this.c3=2*t-2*n+e+s}initCatmullRom(t,n,e,s,i){this.init(n,e,i*(e-t),i*(s-n))}initNonuniformCatmullRom(t,n,e,s,i,r,h){let a=(n-t)/i-(e-t)/(i+r)+(e-n)/r,c=(e-n)/r-(s-n)/(r+h)+(s-e)/h;a*=r,c*=r,this.init(n,e,a,c)}calc(t){const n=t*t,e=n*t;return this.c0+this.c1*t+this.c2*n+this.c3*e}}class Ct extends yt{constructor(t=[],n=!1,e="centripetal",s=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new A,this._px=new sn,this._py=new sn,this._pz=new sn,this._points=t.map(i=>new M(i)),this._closed=n,this._curveType=e,this._tension=s}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new M}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new M}get length(){if(this._points.length<2)return 0;let t=0;for(let n=1;n<this._points.length;n++)t+=this._points[n-1].distanceTo(this._points[n]);return this._closed&&this._points.length>2&&(t+=this._points[this._points.length-1].distanceTo(this._points[0])),t}getPoint(t,n=new M){const e=n,s=this._points,i=s.length;if(i===0)return e.set(0,0,0);if(i===1)return e.copy(s[0]);const r=(i-(this._closed?0:1))*t;let h=Math.floor(r),a=r-h;this._closed?h+=h>0?0:(Math.floor(Math.abs(h)/i)+1)*i:a===0&&h===i-1&&(h=i-2,a=1);let c,l;this._closed||h>0?c=s[(h-1)%i]:(this._tmp.subVectors(s[0],s[1]).add(s[0]),c=new M(this._tmp.x,this._tmp.y,this._tmp.z));const u=s[h%i],d=s[(h+1)%i];if(this._closed||h+2<i?l=s[(h+2)%i]:(this._tmp.subVectors(s[i-1],s[i-2]).add(s[i-1]),l=new M(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const m=this._curveType==="chordal"?.5:.25;let g=Math.pow(c.distanceToSquared(u),m),y=Math.pow(u.distanceToSquared(d),m),x=Math.pow(d.distanceToSquared(l),m);y<1e-4&&(y=1),g<1e-4&&(g=y),x<1e-4&&(x=y),this._px.initNonuniformCatmullRom(c.x,u.x,d.x,l.x,g,y,x),this._py.initNonuniformCatmullRom(c.y,u.y,d.y,l.y,g,y,x),this._pz.initNonuniformCatmullRom(c.z,u.z,d.z,l.z,g,y,x)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(c.x,u.x,d.x,l.x,this._tension),this._py.initCatmullRom(c.y,u.y,d.y,l.y,this._tension),this._pz.initCatmullRom(c.z,u.z,d.z,l.z,this._tension));return e.set(this._px.calc(a),this._py.calc(a),this._pz.calc(a)),e}getPoints(t){const n=[];for(let e=0;e<=t;e++)n.push(this.getPoint(e/t));return n}setPoints(t){this._points=t.map(n=>new M(n)),this._boundingBoxNeedsUpdate=!0}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0)}setCurveType(t){this._curveType=t}setTension(t){this._tension=t}clone(){return new Ct(this._points.map(t=>t.clone()),this._closed,this._curveType,this._tension)}transform(t){return this._points=this._points.map(n=>{const e=new M;return e.copy(n),e.applyMatrix4(t),e}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new G;const t=new G;return this._points.forEach(n=>{t.expandByPoint(n)}),t}}function se(o,t){const n=o.x-t[0],e=o.y-t[1],s=(o.z??0)-(t[2]??0);return n*n+e*e+s*s}class v{constructor(t,n,e,s){this._degree=t,this._knots=[...n],this._controlPoints=e.map(i=>({x:i.x,y:i.y,z:i.z})),this._weights=s?[...s]:new Array(e.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z}))}weights(){return[...this._weights]}clone(){return new v(this._degree,this._knots,this._controlPoints,this._weights)}point(t){return this.evaluate(t).point}evaluate(t){const n=this._controlPoints.map(e=>[e.x,e.y,e.z]);return Nn(t,this._degree,this._knots,n,this._weights)}signedPlanarCurvatureAt(t){const n=this.evaluate(t);return jn(n.deriv1,n.deriv2)}getOffsetSamplePath2d(t,n=512){const e=Math.abs(t),{start:s,end:i}=this.getParameterRange(),r=this.length(),h=Math.max(64,Math.ceil(r/Math.max(e*.2,1e-6)));let a=ns(s,i,Math.min(h,n));for(let u=0;u<8&&a.length<n;u++){const d=[];for(let m=0;m<a.length-1;m++){const g=a[m],y=a[m+1],x=(g+y)/2,f=Math.max(Math.abs(this.signedPlanarCurvatureAt(g)),Math.abs(this.signedPlanarCurvatureAt(y)),Math.abs(this.signedPlanarCurvatureAt(x)));e*f>.85&&d.push(x)}if(d.length===0)break;if(a=es(a,d),a.length>n){a=a.slice(0,n);break}}const c=[],l=[];return a.forEach(u=>{const d=this.evaluate(u);c.push(new P(d.point[0],d.point[1]));const m=d.deriv1[0],g=d.deriv1[1],y=Math.hypot(m,g);l.push(y>1e-10?new P(m/y,g/y):new P(1,0))}),{points:c,tangents:l}}length(){const t=this._controlPoints.map(n=>[n.x,n.y,n.z]);return qn(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,n,e,s){return new v(t,n,e,s)}static byPoints(t,n,e="Uniform",s,i){const r=Gt(t,n,e,s,i),h=r.controlPoints.map(a=>({x:a[0],y:a[1],z:a[2]}));return new v(n,r.knots,h,r.weights)}getParameterRange(){const t=this._knots[this._degree],n=this._knots[this._knots.length-this._degree-1];return{start:t,end:n}}getPoints(t){const n=[],{start:e,end:s}=this.getParameterRange();for(let i=0;i<=t;i++){const r=e+(s-e)*(i/t);n.push(this.point(r))}return n}isClosed(t=1e-6){const{start:n,end:e}=this.getParameterRange(),s=this.point(n),i=this.point(e),r=s[0]-i[0],h=s[1]-i[1],a=s[2]-i[2];return Math.sqrt(r*r+h*h+a*a)<t}static createFitPointsForClosedCurve(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const n=new Ct(t,!0,"centripetal"),e=Math.max(50,t.length*2);return n.getPoints(e)}nearestPoint(t,n=64){const{start:e,end:s}=this.getParameterRange();let i=this.point(e),r=se(t,i);for(let h=0;h<=n;h++){const a=e+(s-e)*h/n,c=this.point(a),l=se(t,c);l<r&&(r=l,i=c)}return{x:i[0],y:i[1],z:i[2]??0}}static createClosedCurve(t,n,e="Chord"){const i=this.createFitPointsForClosedCurve(t).map(r=>[r.x,r.y,r.z]);return v.byPoints(i,n,e)}}function ns(o,t,n){if(n<2)return[o,t];const e=[];for(let s=0;s<n;s++)e.push(s===n-1?t:o+(t-o)*s/(n-1));return e}function es(o,t){const n=[...o,...t].sort((s,i)=>s-i),e=[];return n.forEach(s=>{const i=e[e.length-1];(i===void 0||Math.abs(i-s)>1e-10)&&e.push(s)}),e}function ie(o){if(!o)return!1;const t=o.x??0,n=o.y??0,e=o.z??0;return t*t+n*n+e*e>1e-20}function ss(o,t,n){let e=o??0;return e<1&&n>0&&t>0&&(e=n-t-1),e<1&&(e=3),e=Math.min(e,t-1),Math.max(1,e)}function is(o,t,n){let e=o??0;e<1&&(e=3);const s=t+n-1;return e=Math.min(e,s),Math.max(1,e)}function rs(o,t){if(!(!o||o.length!==t))return o}class U extends yt{constructor(t,n,e,s,i,r){super();const h=arguments.length;if(this._degree=3,this._closed=!1,Array.isArray(n)){if(h<2||h>5)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._controlPoints=t;let a,c=3,l=!1;if(h>=3&&(Array.isArray(e)?(a=e,h>=4&&(c=s||3),h>=5&&(l=i)):e!==void 0&&(c=e||3,h>=4&&(l=s))),e===void 0&&h>=4&&(c=s||3,h>=5&&(l=i)),this._degree=c,this._closed=l,this._controlPoints.length<this._degree+1)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._nurbsCurve=v.byKnotsControlPointsWeights(this._degree,n,this._controlPoints,a)}else{if(h<2||h>6)throw V.AcCmErrors.ILLEGAL_PARAMETERS;this._fitPoints=t,this._knotParameterization=n,h>=3&&(this._degree=e||3);const a=typeof s=="boolean";h>=4&&a&&(this._closed=s),a?(h>=5&&(this._startTangent=i),h>=6&&(this._endTangent=r)):(h>=4&&(this._startTangent=s),h>=5&&(this._endTangent=i)),this._closed&&(this._startTangent=void 0,this._endTangent=void 0);const c=(this._startTangent?1:0)+(this._endTangent?1:0);if(this._fitPoints.length+c<this._degree+1)throw V.AcCmErrors.ILLEGAL_PARAMETERS;if(this._closed)this._nurbsCurve=v.createClosedCurve(this._fitPoints,this._degree,this._knotParameterization);else{const l=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=v.byPoints(l,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(l=>[l.x,l.y,l.z||0]))}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=v.createFitPointsForClosedCurve(this._fitPoints),n=this.toNurbsPoints(t);this._nurbsCurve=v.byPoints(n,this._degree,this._knotParameterization)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=v.byPoints(t,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(t=>[t.x,t.y,t.z||0]))}else if(this._controlPoints)if(this._closed){const t=v.createFitPointsForClosedCurve(this._controlPoints),n=this.toNurbsPoints(t);this._nurbsCurve=v.byPoints(n,this._degree,this._knotParameterization),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(e=>[e.x,e.y,e.z||0]))}else{const t=this._nurbsCurve.knots(),n=this._nurbsCurve.weights();this._nurbsCurve=v.byKnotsControlPointsWeights(this._degree,t,this._controlPoints,n)}}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0}))}get fitPoints(){var t;return(t=this._fitPoints)==null?void 0:t.map(n=>({x:n.x,y:n.y,z:n.z||0}))}get knots(){return[...this._nurbsCurve.knots()]}get weights(){return[...this._nurbsCurve.weights()]}get startPoint(){const t=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),e=t[n],s=this._nurbsCurve.point(e);return new M(s[0],s[1],s[2])}get endPoint(){const t=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),e=t[t.length-n-1],s=this._nurbsCurve.point(e);return new M(s[0],s[1],s[2])}get length(){return this._nurbsCurve.length()}nearestPoint(t,n=64){const e=this._nurbsCurve.nearestPoint(t,n);return new M(e.x,e.y,e.z||0)}evaluateAt(t){const n=this._nurbsCurve.point(t);return new M(n[0],n[1],n[2])}getFitPointAt(t){if(!this._fitPoints)throw new Error("No fit points in this spline");const n=this._fitPoints.length,e=t<0||t>=n?n-1:t,s=this._fitPoints[e];return{x:s.x,y:s.y,z:s.z||0}}getControlPointAt(t){const n=this._controlPoints.length,e=t<0||t>=n?n-1:t;return this._controlPoints[e]}getOffsetSamplePath2d(t){return this._nurbsCurve.getOffsetSamplePath2d(t)}getPoints(t=100){const n=this._nurbsCurve,e=[],s=n.knots(),i=this._nurbsCurve.degree(),r=s[i],h=s[s.length-i-1],a=(h-r)/(t-1);for(let c=0;c<t;c++){const l=c===t-1?h:r+c*a,u=n.point(l);e.push(new M(u[0],u[1],u[2]))}return e}getCurvePoints(t,n){const e=[],s=t.knots(),i=t.degree(),r=s[i],a=(s[s.length-i-1]-r)/(n-1);for(let c=0;c<n;c++){const l=r+c*a;e.push(t.point(l))}return e}calculateBoundingBox(){const t=this.getPoints(100);return new G().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}get area(){if(!this._closed)return 0;const t=this.getPoints(128);return Dn(t)}transform(t){if(this._fitPoints&&this._knotParameterization)this._fitPoints=this._fitPoints.map(n=>new M(n).applyMatrix4(t)),this._startTangent&&(this._startTangent=new M(this._startTangent).transformDirection(t)),this._endTangent&&(this._endTangent=new M(this._endTangent).transformDirection(t)),this.buildCurve();else{const n=this._nurbsCurve.knots(),e=this._nurbsCurve.weights();this._controlPoints=this._controlPoints.map(s=>new M(s).applyMatrix4(t)),this._nurbsCurve=v.byKnotsControlPointsWeights(this._degree,n,this._controlPoints,e.length>0?e:void 0)}return this._boundingBoxNeedsUpdate=!0,this}clone(){return this._fitPoints&&this._knotParameterization?new U(this._fitPoints.map(t=>({x:t.x,y:t.y,z:t.z||0})),this._knotParameterization,this._degree,this._closed,this._startTangent?{x:this._startTangent.x,y:this._startTangent.y,z:this._startTangent.z||0}:void 0,this._endTangent?{x:this._endTangent.x,y:this._endTangent.y,z:this._endTangent.z||0}:void 0):new U(this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0})),this._nurbsCurve.knots(),this._nurbsCurve.weights(),this._degree,this._closed)}toNurbsPoints(t){const n=new Array(t.length);return t.forEach((e,s)=>{n[s]=[e.x,e.y,e.z||0]}),n}toGePoints(t){const n=new Array(t.length);return t.forEach((e,s)=>{n[s]={x:e[0],y:e[1],z:e[2]}}),n}toNurbsPoint(t){return[t.x,t.y,t.z||0]}static createClosedSpline(t,n="Uniform",e=3){if(t.length<e+1)throw new Error(`At least ${e+1} points are required for a degree ${e} closed spline`);return new U(t,n,e,!0)}static fromControlPoints(t,n,e,s,i){if(t.length<2||n.length<2)return null;const r=ss(s,t.length,n.length);if(t.length<r+1)return null;try{return new U(t,n,rs(e,t.length),r,i)}catch{return null}}static fromFitPoints(t,n,e,s,i,r){if(t.length<2)return null;const h=ie(i),a=ie(r),c=(h?1:0)+(a?1:0),l=is(e,t.length,c);if(t.length+c<l+1)return null;try{return h||a?new U(t,n,l,s,h?i:void 0,a?r:void 0):new U(t,n,l,s)}catch{return null}}static fromDwgSplineEdge(t){if(t.numberOfControlPoints>0&&t.numberOfKnots>0){const n=t.controlPoints.map(i=>({x:i.x,y:i.y,z:i.z??0}));let e=!0;const s=t.controlPoints.map(i=>(i.weight==null&&(e=!1),i.weight||1));return U.fromControlPoints(n,t.knots,e?s:void 0,t.degree,!1)}if(t.numberOfFitData>0){const n=t.fitDatum.map(e=>({x:e.x,y:e.y,z:e.z??0}));return U.fromFitPoints(n,"Uniform",t.degree,!1,U.toPoint3dLike(t.startTangent),U.toPoint3dLike(t.endTangent))}return null}static toPoint3dLike(t){if(t)return{x:t.x,y:t.y,z:t.z??0}}}_.AcGeArea2d=en,_.AcGeBox2d=D,_.AcGeBox3d=G,_.AcGeCatmullRomCurve3d=Ct,_.AcGeCircArc2d=Q,_.AcGeCircArc3d=ct,_.AcGeCurve2d=ht,_.AcGeEllipseArc2d=it,_.AcGeEllipseArc3d=lt,_.AcGeEuler=Xt,_.AcGeGeometryUtil=Bn,_.AcGeLine2d=xt,_.AcGeLine3d=at,_.AcGeLoop2d=X,_.AcGeMathUtil=p,_.AcGeMatrix2d=rt,_.AcGeMatrix3d=$,_.AcGeNurbsCurve=v,_.AcGePlane=mt,_.AcGePoint2d=P,_.AcGePoint3d=M,_.AcGePolyline2d=et,_.AcGeQuaternion=dt,_.AcGeShape2d=Jt,_.AcGeSpline3d=U,_.AcGeTol=B,_.AcGeVector2d=R,_.AcGeVector3d=A,_.DEFAULT_TOL=wt,_.DEG2RAD=jt,_.FLOAT_TOL=K,_.ORIGIN_POINT_2D=re,_.ORIGIN_POINT_3D=Ft,_.RAD2DEG=qt,_.TAU=I,_.acGeClosedPolygonArea2d=On,_.acGeClosedPolygonArea3d=Dn,_.acGePolygonArea2d=Un,_.acGePolygonArea3d=Fn,_.acGeSignedPolygonArea2d=$t,_.basisFunction=nt,_.calculateCurveLength=qn,_.ceilPowerOfTwo=Pn,_.clamp=W,_.computeParameterValues=Rn,_.damp=cn,_.degToRad=fn,_.euclideanModulo=Vt,_.evaluateNurbsDerivatives=Nn,_.evaluateNurbsPoint=gt,_.floorPowerOfTwo=wn,_.generateAveragedKnots=kn,_.generateChordKnots=ue,_.generateSqrtChordKnots=de,_.generateUUID=on,_.generateUniformKnots=le,_.getOcsAngle=Ae,_.getOcsReferenceVector=fe,_.intPartLength=vt,_.interpolateControlPoints=ge,_.interpolateNurbsCurve=Gt,_.inverseLerp=an,_.isBetween=pn,_.isBetweenAngle=Mn,_.isPointInPolygon=Yt,_.isPolygonIntersect=Tn,_.isPowerOfTwo=An,_.lerp=Lt,_.mapLinear=hn,_.normalizeAngle=ut,_.offsetPointByDirectionInXY=Ye,_.offsetSmoothedSampledPath=Ge,_.offsetVertexPath=Ze,_.pingpong=ln,_.radToDeg=_n,_.randFloat=gn,_.randFloatSpread=yn,_.randInt=mn,_.relativeEps=zn,_.seededRandom=xn,_.signedPlanarCurvature=jn,_.smootherstep=dn,_.smoothstep=un,_.transformOcsPointToWcs=_e,_.transformWcsPointToOcs=Kt,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})});
@@ -133,5 +133,89 @@ export declare class AcGeSpline3d extends AcGeCurve3d {
133
133
  * @returns A closed spline
134
134
  */
135
135
  static createClosedSpline(fitPoints: AcGePoint3dLike[], parameterization?: AcGeKnotParameterizationType, degree?: number): AcGeSpline3d;
136
+ /**
137
+ * Creates a 3D spline geometry from control points, knots, and optional weights.
138
+ *
139
+ * This factory is intended for robust deserialization: it normalizes degree and
140
+ * weights from imperfect source data and returns `null` instead of throwing when
141
+ * the NURBS definition is invalid.
142
+ *
143
+ * @param controlPoints - Control vertices defining the curve shape
144
+ * @param knots - Full knot vector for the spline
145
+ * @param weights - Optional per-control-point weights; ignored when the array length
146
+ * does not match `controlPoints.length`
147
+ * @param declaredDegree - Degree from the source file; when less than 1, derived from
148
+ * `knots.length - controlPoints.length - 1`, then clamped to `[1, controlPoints.length - 1]`
149
+ * @param closed - Whether the spline forms a closed loop
150
+ * @returns A spline geometry, or `null` if construction fails
151
+ */
152
+ static fromControlPoints(controlPoints: AcGePoint3dLike[], knots: number[], weights: number[] | undefined, declaredDegree: number | undefined, closed: boolean): AcGeSpline3d | null;
153
+ /**
154
+ * Creates a 3D spline geometry that interpolates fit points.
155
+ *
156
+ * Knots and control points are generated from the fit data. Non-zero start/end
157
+ * tangents constrain the curve ends; zero-length tangents are ignored. Degree is
158
+ * clamped so that `fitPoints.length + tangentCount >= degree + 1`.
159
+ *
160
+ * @param fitPoints - Points the spline should pass through
161
+ * @param knotParam - Knot parameterization (`'Uniform'`, `'Chord'`, or `'SqrtChord'`)
162
+ * @param declaredDegree - Requested degree from the source file; defaults to 3 when
163
+ * missing or less than 1, then clamped to fit the available fit/tangent data
164
+ * @param closed - Whether the spline forms a closed loop
165
+ * @param startTangent - Optional start tangent direction; ignored when zero-length
166
+ * @param endTangent - Optional end tangent direction; ignored when zero-length
167
+ * @returns A spline geometry, or `null` if construction fails
168
+ */
169
+ static fromFitPoints(fitPoints: AcGePoint3dLike[], knotParam: AcGeKnotParameterizationType, declaredDegree: number | undefined, closed: boolean, startTangent?: AcGePoint3dLike | null, endTangent?: AcGePoint3dLike | null): AcGeSpline3d | null;
170
+ /**
171
+ * Creates a 3D spline geometry from parsed DWG/DXF spline-edge data.
172
+ *
173
+ * Used for hatch boundary paths, proxy-graphics edges, and similar structures where
174
+ * spline data is embedded as a lightweight edge record rather than a full SPLINE
175
+ * entity. Control-point data is preferred; fit data is used when control points are
176
+ * absent. Fit-point edges always use `'Uniform'` knot parameterization and are
177
+ * treated as open curves.
178
+ *
179
+ * @param spline - Parsed spline-edge payload from a DWG/DXF reader
180
+ * @param spline.numberOfControlPoints - Count of control points in the edge record
181
+ * @param spline.numberOfKnots - Count of knots in the edge record
182
+ * @param spline.numberOfFitData - Count of fit points in the edge record
183
+ * @param spline.degree - Optional declared degree
184
+ * @param spline.controlPoints - Control vertices, optionally with per-point `weight`
185
+ * @param spline.knots - Knot values for the control-point representation
186
+ * @param spline.fitDatum - Fit points when the edge is defined by fit data
187
+ * @param spline.startTangent - Optional start tangent for fit-data edges
188
+ * @param spline.endTangent - Optional end tangent for fit-data edges
189
+ * @returns A spline geometry, or `null` when neither representation can be built
190
+ */
191
+ static fromDwgSplineEdge(spline: {
192
+ numberOfControlPoints: number;
193
+ numberOfKnots: number;
194
+ numberOfFitData: number;
195
+ degree?: number;
196
+ controlPoints: Array<{
197
+ x: number;
198
+ y: number;
199
+ z?: number;
200
+ weight?: number | null;
201
+ }>;
202
+ knots: number[];
203
+ fitDatum: Array<{
204
+ x: number;
205
+ y: number;
206
+ z?: number;
207
+ }>;
208
+ startTangent?: {
209
+ x: number;
210
+ y: number;
211
+ z?: number;
212
+ } | null;
213
+ endTangent?: {
214
+ x: number;
215
+ y: number;
216
+ z?: number;
217
+ } | null;
218
+ }): AcGeSpline3d | null;
219
+ private static toPoint3dLike;
136
220
  }
137
221
  //# sourceMappingURL=AcGeSpline3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeSpline3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE/E,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAA8B;IAC5D,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,WAAW,CAAC,CAAe;gBAGjC,aAAa,EAAE,eAAe,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO;gBAGhB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,4BAA4B,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,aAAa,EAC5B,UAAU,CAAC,EAAE,aAAa;IAmJ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IA4DlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,IAAI,MAAM,WAET;IAED,IAAI,oBAAoB,6CAEvB;IAED,IAAI,aAAa;;;;QAMhB;IAED,IAAI,SAAS;;;;oBAMZ;IAED,IAAI,KAAK,aAER;IAED,IAAI,OAAO,aAEV;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,CAM5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAM1B;IAED;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,SAAK,GAAG,WAAW;IAK/D;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW;IAKlC;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAU7C;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAM/B;;;OAGG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG;QACzC,MAAM,EAAE,WAAW,EAAE,CAAA;QACrB,QAAQ,EAAE,WAAW,EAAE,CAAA;KACxB;IAID;;;;;OAKG;IACH,SAAS,CAAC,SAAS,GAAE,MAAY,GAAG,WAAW,EAAE;IAsBjD,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAmBnD;;OAEG;IACH,oBAAoB;IAKpB,IAAI,MAAM,IAGQ,OAAO,CADxB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY;IAqC9B;;OAEG;IACH,KAAK;IAyCL;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAIpB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,SAAS,EAAE,eAAe,EAAE,EAC5B,gBAAgB,GAAE,4BAAwC,EAC1D,MAAM,GAAE,MAAU,GACjB,YAAY;CAUhB"}
1
+ {"version":3,"file":"AcGeSpline3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ import { AcGeBox3d, AcGePoint3d } from '../math';
43
43
  import { acGeClosedPolygonArea3d } from '../util/AcGePolygonAreaUtil';
44
44
  import { AcGeCurve3d } from './AcGeCurve3d';
45
45
  import { AcGeNurbsCurve } from './AcGeNurbsCurve';
46
+ import { isNonZeroDirection, normalizeSplineWeights, resolveControlPointSplineDegree, resolveFitPointSplineDegree } from './AcGeSplineUtil';
46
47
  var AcGeSpline3d = /** @class */ (function (_super) {
47
48
  __extends(AcGeSpline3d, _super);
48
49
  function AcGeSpline3d(a, b, c, d, e, f) {
@@ -518,6 +519,132 @@ var AcGeSpline3d = /** @class */ (function (_super) {
518
519
  // Create spline using the constructor with fit points, degree, and closed=true
519
520
  return new AcGeSpline3d(fitPoints, parameterization, degree, true);
520
521
  };
522
+ /**
523
+ * Creates a 3D spline geometry from control points, knots, and optional weights.
524
+ *
525
+ * This factory is intended for robust deserialization: it normalizes degree and
526
+ * weights from imperfect source data and returns `null` instead of throwing when
527
+ * the NURBS definition is invalid.
528
+ *
529
+ * @param controlPoints - Control vertices defining the curve shape
530
+ * @param knots - Full knot vector for the spline
531
+ * @param weights - Optional per-control-point weights; ignored when the array length
532
+ * does not match `controlPoints.length`
533
+ * @param declaredDegree - Degree from the source file; when less than 1, derived from
534
+ * `knots.length - controlPoints.length - 1`, then clamped to `[1, controlPoints.length - 1]`
535
+ * @param closed - Whether the spline forms a closed loop
536
+ * @returns A spline geometry, or `null` if construction fails
537
+ */
538
+ AcGeSpline3d.fromControlPoints = function (controlPoints, knots, weights, declaredDegree, closed) {
539
+ if (controlPoints.length < 2 || knots.length < 2) {
540
+ return null;
541
+ }
542
+ var degree = resolveControlPointSplineDegree(declaredDegree, controlPoints.length, knots.length);
543
+ if (controlPoints.length < degree + 1) {
544
+ return null;
545
+ }
546
+ try {
547
+ return new AcGeSpline3d(controlPoints, knots, normalizeSplineWeights(weights, controlPoints.length), degree, closed);
548
+ }
549
+ catch (_a) {
550
+ return null;
551
+ }
552
+ };
553
+ /**
554
+ * Creates a 3D spline geometry that interpolates fit points.
555
+ *
556
+ * Knots and control points are generated from the fit data. Non-zero start/end
557
+ * tangents constrain the curve ends; zero-length tangents are ignored. Degree is
558
+ * clamped so that `fitPoints.length + tangentCount >= degree + 1`.
559
+ *
560
+ * @param fitPoints - Points the spline should pass through
561
+ * @param knotParam - Knot parameterization (`'Uniform'`, `'Chord'`, or `'SqrtChord'`)
562
+ * @param declaredDegree - Requested degree from the source file; defaults to 3 when
563
+ * missing or less than 1, then clamped to fit the available fit/tangent data
564
+ * @param closed - Whether the spline forms a closed loop
565
+ * @param startTangent - Optional start tangent direction; ignored when zero-length
566
+ * @param endTangent - Optional end tangent direction; ignored when zero-length
567
+ * @returns A spline geometry, or `null` if construction fails
568
+ */
569
+ AcGeSpline3d.fromFitPoints = function (fitPoints, knotParam, declaredDegree, closed, startTangent, endTangent) {
570
+ if (fitPoints.length < 2) {
571
+ return null;
572
+ }
573
+ var hasStartTangent = isNonZeroDirection(startTangent);
574
+ var hasEndTangent = isNonZeroDirection(endTangent);
575
+ var tangentCount = (hasStartTangent ? 1 : 0) + (hasEndTangent ? 1 : 0);
576
+ var degree = resolveFitPointSplineDegree(declaredDegree, fitPoints.length, tangentCount);
577
+ if (fitPoints.length + tangentCount < degree + 1) {
578
+ return null;
579
+ }
580
+ try {
581
+ if (hasStartTangent || hasEndTangent) {
582
+ return new AcGeSpline3d(fitPoints, knotParam, degree, closed, hasStartTangent ? startTangent : undefined, hasEndTangent ? endTangent : undefined);
583
+ }
584
+ return new AcGeSpline3d(fitPoints, knotParam, degree, closed);
585
+ }
586
+ catch (_a) {
587
+ return null;
588
+ }
589
+ };
590
+ /**
591
+ * Creates a 3D spline geometry from parsed DWG/DXF spline-edge data.
592
+ *
593
+ * Used for hatch boundary paths, proxy-graphics edges, and similar structures where
594
+ * spline data is embedded as a lightweight edge record rather than a full SPLINE
595
+ * entity. Control-point data is preferred; fit data is used when control points are
596
+ * absent. Fit-point edges always use `'Uniform'` knot parameterization and are
597
+ * treated as open curves.
598
+ *
599
+ * @param spline - Parsed spline-edge payload from a DWG/DXF reader
600
+ * @param spline.numberOfControlPoints - Count of control points in the edge record
601
+ * @param spline.numberOfKnots - Count of knots in the edge record
602
+ * @param spline.numberOfFitData - Count of fit points in the edge record
603
+ * @param spline.degree - Optional declared degree
604
+ * @param spline.controlPoints - Control vertices, optionally with per-point `weight`
605
+ * @param spline.knots - Knot values for the control-point representation
606
+ * @param spline.fitDatum - Fit points when the edge is defined by fit data
607
+ * @param spline.startTangent - Optional start tangent for fit-data edges
608
+ * @param spline.endTangent - Optional end tangent for fit-data edges
609
+ * @returns A spline geometry, or `null` when neither representation can be built
610
+ */
611
+ AcGeSpline3d.fromDwgSplineEdge = function (spline) {
612
+ if (spline.numberOfControlPoints > 0 && spline.numberOfKnots > 0) {
613
+ var controlPoints = spline.controlPoints.map(function (item) {
614
+ var _a;
615
+ return ({
616
+ x: item.x,
617
+ y: item.y,
618
+ z: (_a = item.z) !== null && _a !== void 0 ? _a : 0
619
+ });
620
+ });
621
+ var hasWeights_1 = true;
622
+ var weights = spline.controlPoints.map(function (item) {
623
+ if (item.weight == null)
624
+ hasWeights_1 = false;
625
+ return item.weight || 1;
626
+ });
627
+ return AcGeSpline3d.fromControlPoints(controlPoints, spline.knots, hasWeights_1 ? weights : undefined, spline.degree, false);
628
+ }
629
+ if (spline.numberOfFitData > 0) {
630
+ var fitPoints = spline.fitDatum.map(function (item) {
631
+ var _a;
632
+ return ({
633
+ x: item.x,
634
+ y: item.y,
635
+ z: (_a = item.z) !== null && _a !== void 0 ? _a : 0
636
+ });
637
+ });
638
+ return AcGeSpline3d.fromFitPoints(fitPoints, 'Uniform', spline.degree, false, AcGeSpline3d.toPoint3dLike(spline.startTangent), AcGeSpline3d.toPoint3dLike(spline.endTangent));
639
+ }
640
+ return null;
641
+ };
642
+ AcGeSpline3d.toPoint3dLike = function (point) {
643
+ var _a;
644
+ if (!point)
645
+ return undefined;
646
+ return { x: point.x, y: point.y, z: (_a = point.z) !== null && _a !== void 0 ? _a : 0 };
647
+ };
521
648
  return AcGeSpline3d;
522
649
  }(AcGeCurve3d));
523
650
  export { AcGeSpline3d };
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeSpline3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeSpline3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EACL,SAAS,EAGT,WAAW,EAGZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAgC,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,kBAAkB,CAAA;AAEzB;IAAkC,gCAAW;IAyB3C,sBACE,CAAW,EACX,CAAW,EACX,CAAW,EACX,CAAW,EACX,CAAW,EACX,CAAW;QAEX,YAAA,MAAK,WAAE,SAAA;QACP,6DAA6D;QAC7D,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAA;QAEnC,sBAAsB;QACtB,KAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,KAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,UAAU,CAAC,kBAAkB,CAAA;YACrC,CAAC;YAED,8BAA8B;YAC9B,KAAI,CAAC,UAAU,GAAG,CAAsB,CAAA;YACxC,KAAI,CAAC,qBAAqB,GAAG,CAAiC,CAAA;YAE9D,iEAAiE;YACjE,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,KAAI,CAAC,OAAO,GAAI,CAAY,IAAI,CAAC,CAAA;YACnC,CAAC;YACD,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,SAAS,CAAA;YAC3C,IAAI,UAAU,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;gBACpC,KAAI,CAAC,OAAO,GAAG,CAAY,CAAA;YAC7B,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;oBACpB,KAAI,CAAC,aAAa,GAAG,CAAkB,CAAA;gBACzC,CAAC;gBACD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;oBACpB,KAAI,CAAC,WAAW,GAAG,CAAkB,CAAA;gBACvC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;oBACpB,KAAI,CAAC,aAAa,GAAG,CAAkB,CAAA;gBACzC,CAAC;gBACD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;oBACpB,KAAI,CAAC,WAAW,GAAG,CAAkB,CAAA;gBACvC,CAAC;YACH,CAAC;YAED,IAAI,KAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAI,CAAC,aAAa,GAAG,SAAS,CAAA;gBAC9B,KAAI,CAAC,WAAW,GAAG,SAAS,CAAA;YAC9B,CAAC;YAED,iEAAiE;YACjE,IAAM,YAAY,GAChB,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,GAAG,KAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM,UAAU,CAAC,kBAAkB,CAAA;YACrC,CAAC;YAED,IAAI,KAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAI,CAAC,WAAW,GAAG,cAAc,CAAC,iBAAiB,CACjD,KAAI,CAAC,UAAU,EACf,KAAI,CAAC,OAAO,EACZ,KAAI,CAAC,qBAAqB,CAC3B,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAM,MAAM,GAAG,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,UAAU,CAAC,CAAA;gBAClD,KAAI,CAAC,WAAW,GAAG,cAAc,CAAC,QAAQ,CACxC,MAAM,EACN,KAAI,CAAC,OAAO,EACZ,KAAI,CAAC,qBAAqB,EAC1B,KAAI,CAAC,aAAa;oBAChB,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,aAAa,CAAC;oBACvC,CAAC,CAAC,SAAS,EACb,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CACnE,CAAA;YACH,CAAC;YACD,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,UAAU,CACnC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAApB,CAAoB,CAAC,CAChE,CAAA;QACH,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,UAAU,CAAC,kBAAkB,CAAA;YACrC,CAAC;YAED,kCAAkC;YAClC,KAAI,CAAC,cAAc,GAAG,CAAsB,CAAA;YAE5C,oDAAoD;YACpD,IAAI,OAAO,SAAsB,CAAA;YACjC,IAAI,MAAM,GAAW,CAAC,CAAA;YACtB,IAAI,QAAM,GAAY,KAAK,CAAA;YAE3B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,qBAAqB;oBACrB,OAAO,GAAG,CAAa,CAAA;oBACvB,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;wBACpB,MAAM,GAAI,CAAY,IAAI,CAAC,CAAA;oBAC7B,CAAC;oBACD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;wBACpB,QAAM,GAAG,CAAY,CAAA;oBACvB,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC3B,8BAA8B;oBAC9B,MAAM,GAAI,CAAY,IAAI,CAAC,CAAA;oBAC3B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;wBACpB,QAAM,GAAG,CAAY,CAAA;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,IAAI,CAAC,KAAK,SAAS,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAI,CAAY,IAAI,CAAC,CAAA;gBAC3B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;oBACpB,QAAM,GAAG,CAAY,CAAA;gBACvB,CAAC;YACH,CAAC;YAED,KAAI,CAAC,OAAO,GAAG,MAAM,CAAA;YACrB,KAAI,CAAC,OAAO,GAAG,QAAM,CAAA;YAErB,qEAAqE;YACrE,IAAI,KAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,UAAU,CAAC,kBAAkB,CAAA;YACrC,CAAC;YAED,KAAI,CAAC,WAAW,GAAG,cAAc,CAAC,2BAA2B,CAC3D,KAAI,CAAC,OAAO,EACZ,CAAa,EACb,KAAI,CAAC,cAAc,EACnB,OAAO,CACR,CAAA;QACH,CAAC;;QAED,kCAAkC;QAClC,sBAAsB;QACtB,sBAAsB;QACtB,IAAI;IACN,CAAC;IAED;;OAEG;IACK,iCAAU,GAAlB;QACE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,wBAAwB;YACxB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAM,YAAY,GAAG,cAAc,CAAC,6BAA6B,CAC/D,IAAI,CAAC,UAAU,CAChB,CAAA;gBACD,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC/C,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,QAAQ,CACxC,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,qBAAqB,CAC3B,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAClD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,QAAQ,CACxC,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,aAAa;oBAChB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;oBACvC,CAAC,CAAC,SAAS,EACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CACnE,CAAA;YACH,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CACnC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAApB,CAAoB,CAAC,CAChE,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,4BAA4B;YAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,0CAA0C;gBAC1C,IAAM,YAAY,GAAG,cAAc,CAAC,6BAA6B,CAC/D,IAAI,CAAC,cAAc,CACpB,CAAA;gBACD,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC/C,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,QAAQ,CACxC,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,qBAAqB,CAC3B,CAAA;gBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CACnC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAApB,CAAoB,CAAC,CAChE,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,wCAAwC;gBACxC,qDAAqD;gBACrD,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;gBACtC,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;gBAC1C,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,2BAA2B,CAC3D,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,IAAI,CAAC,cAAc,EACnB,OAAO,CACR,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gCAAS,GAAjB,UAAkB,MAAe;QAC/B,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAKD,sBAAI,gCAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;;;OAAA;IAED,sBAAI,8CAAoB;aAAxB;YACE,OAAO,IAAI,CAAC,qBAAqB,CAAA;QACnC,CAAC;;;OAAA;IAED,sBAAI,uCAAa;aAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC;gBACvC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;aAChB,CAAC,EAJsC,CAItC,CAAC,CAAA;QACL,CAAC;;;OAAA;IAED,sBAAI,mCAAS;aAAb;;YACE,OAAO,MAAA,IAAI,CAAC,UAAU,0CAAE,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC;gBACpC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;aAChB,CAAC,EAJmC,CAInC,CAAC,CAAA;QACL,CAAC;;;OAAA;IAED,sBAAI,+BAAK;aAAT;YACE,gCAAW,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAC;QACtC,CAAC;;;OAAA;IAED,sBAAI,iCAAO;aAAX;YACE,gCAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAC;QACxC,CAAC;;;OAAA;IAKD,sBAAI,oCAAU;QAHd;;WAEG;aACH;YACE,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YACtC,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;YACxC,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;YAChC,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACrD,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,CAAC;;;OAAA;IAKD,sBAAI,kCAAQ;QAHZ;;WAEG;aACH;YACE,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YACtC,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;YACxC,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;YACjD,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACjD,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/D,CAAC;;;OAAA;IAKD,sBAAI,gCAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;QAClC,CAAC;;;OAAA;IAED;;;;;OAKG;IACH,mCAAY,GAAZ,UAAa,KAAsB,EAAE,OAAY;QAAZ,wBAAA,EAAA,YAAY;QAC/C,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7D,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED;;;;OAIG;IACH,iCAAU,GAAV,UAAW,CAAS;QAClB,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA;IACzD,CAAC;IAED;;;;;;OAMG;IACH,oCAAa,GAAb,UAAc,KAAa;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QACD,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;QACrC,IAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAClE,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QACvC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;IACpD,CAAC;IAED;;;;;;OAMG;IACH,wCAAiB,GAAjB,UAAkB,KAAa;QAC7B,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAA;QACzC,IAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,4CAAqB,GAArB,UAAsB,UAAkB;QAItC,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED;;;;;OAKG;IACH,gCAAS,GAAT,UAAU,SAAuB;QAAvB,0BAAA,EAAA,eAAuB;QAC/B,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAA;QAC9B,IAAM,MAAM,GAAkB,EAAE,CAAA;QAChC,qCAAqC;QACrC,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAE3B,0FAA0F;QAC1F,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;QACxC,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;QAEjD,qCAAqC;QACrC,IAAM,IAAI,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,0EAA0E;YAC1E,IAAM,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAA;YAChE,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,qCAAc,GAAd,UAAe,KAAqB,EAAE,KAAa;QACjD,IAAM,MAAM,GAAG,EAAE,CAAA;QACjB,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA,CAAC,qCAAqC;QACjE,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;QAE7B,0FAA0F;QAC1F,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;QAEjD,IAAM,IAAI,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA,CAAC,qCAAqC;QAExF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAM,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,IAAI,CAAA,CAAC,uCAAuC;YACvE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,6CAA6C;QAC3E,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,2CAAoB,GAApB;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAClC,OAAO,IAAI,SAAS,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED,sBAAI,gCAAM;aAAV;YACE,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;aACD,UAAW,KAAc;YACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;;;OAHA;IAQD,sBAAI,8BAAI;QAHR;;WAEG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAA;YAC3B,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAClC,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAA;QACxC,CAAC;;;OAAA;IAED;;OAEG;IACH,gCAAS,GAAT,UAAU,MAAoB;QAC5B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAA,KAAK;gBACzC,OAAA,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YAA3C,CAA2C,CAC5C,CAAA;YAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAClC,IAAI,CAAC,aAAa,CACnB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,kBAAkB,CACrE,MAAM,CACP,CAAA;YACH,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YACtC,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;YAE1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAA,KAAK;gBACjD,OAAA,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YAA3C,CAA2C,CAC5C,CAAA;YACD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,2BAA2B,CAC3D,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,IAAI,CAAC,cAAc,EACnB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzC,CAAA;QACH,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,4BAAK,GAAL;QACE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC;gBAC5B,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;aAChB,CAAC,EAJ2B,CAI3B,CAAC,EACH,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa;gBAChB,CAAC,CAAC;oBACE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC;iBAC7B;gBACH,CAAC,CAAC,SAAS,EACb,IAAI,CAAC,WAAW;gBACd,CAAC,CAAC;oBACE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACrB,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACrB,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;iBAC3B;gBACH,CAAC,CAAC,SAAS,CACd,CAAA;QACH,CAAC;QAED,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC;YAChC,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;SAChB,CAAC,EAJ+B,CAI/B,CAAC,EACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EACxB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACb,CAAA;IACH,CAAC;IAED;;;;OAIG;IACK,oCAAa,GAArB,UAAsB,MAAyB;QAC7C,IAAM,WAAW,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK;YAC1B,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;;;OAIG;IACK,iCAAU,GAAlB,UAAmB,MAAkB;QACnC,IAAM,QAAQ,GAAG,IAAI,KAAK,CAAkB,MAAM,CAAC,MAAM,CAAC,CAAA;QAC1D,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK;YAC1B,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7D,CAAC,CAAC,CAAA;QACF,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,mCAAY,GAApB,UAAqB,KAAoB;QACvC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACzC,CAAC;IAED;;;;;;OAMG;IACI,+BAAkB,GAAzB,UACE,SAA4B,EAC5B,gBAA0D,EAC1D,MAAkB;QADlB,iCAAA,EAAA,4BAA0D;QAC1D,uBAAA,EAAA,UAAkB;QAElB,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,mBAAY,MAAM,GAAG,CAAC,+CAAqC,MAAM,mBAAgB,CAClF,CAAA;QACH,CAAC;QAED,+EAA+E;QAC/E,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,8BAAiB,GAAxB,UACE,aAAgC,EAChC,KAAe,EACf,OAA6B,EAC7B,cAAkC,EAClC,MAAe;QAEf,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAM,MAAM,GAAG,+BAA+B,CAC5C,cAAc,EACd,aAAa,CAAC,MAAM,EACpB,KAAK,CAAC,MAAM,CACb,CAAA;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,YAAY,CACrB,aAAa,EACb,KAAK,EACL,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EACrD,MAAM,EACN,MAAM,CACP,CAAA;QACH,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,0BAAa,GAApB,UACE,SAA4B,EAC5B,SAAuC,EACvC,cAAkC,EAClC,MAAe,EACf,YAAqC,EACrC,UAAmC;QAEnC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAA;QACxD,IAAM,aAAa,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACpD,IAAM,YAAY,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,IAAM,MAAM,GAAG,2BAA2B,CACxC,cAAc,EACd,SAAS,CAAC,MAAM,EAChB,YAAY,CACb,CAAA;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC;YACH,IAAI,eAAe,IAAI,aAAa,EAAE,CAAC;gBACrC,OAAO,IAAI,YAAY,CACrB,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,eAAe,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC,SAAS,EAC3C,aAAa,CAAC,CAAC,CAAC,UAAW,CAAC,CAAC,CAAC,SAAS,CACxC,CAAA;YACH,CAAC;YAED,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/D,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,8BAAiB,GAAxB,UAAyB,MAUxB;QACC,IAAI,MAAM,CAAC,qBAAqB,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YACjE,IAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAA,IAAI;;gBAAI,OAAA,CAAC;oBACtD,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,MAAA,IAAI,CAAC,CAAC,mCAAI,CAAC;iBACf,CAAC,CAAA;aAAA,CAAC,CAAA;YACH,IAAI,YAAU,GAAG,IAAI,CAAA;YACrB,IAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC3C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;oBAAE,YAAU,GAAG,KAAK,CAAA;gBAC3C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;YACF,OAAO,YAAY,CAAC,iBAAiB,CACnC,aAAa,EACb,MAAM,CAAC,KAAK,EACZ,YAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAChC,MAAM,CAAC,MAAM,EACb,KAAK,CACN,CAAA;QACH,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,IAAI;;gBAAI,OAAA,CAAC;oBAC7C,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,CAAC,EAAE,MAAA,IAAI,CAAC,CAAC,mCAAI,CAAC;iBACf,CAAC,CAAA;aAAA,CAAC,CAAA;YACH,OAAO,YAAY,CAAC,aAAa,CAC/B,SAAS,EACT,SAAS,EACT,MAAM,CAAC,MAAM,EACb,KAAK,EACL,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAC/C,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAC9C,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEc,0BAAa,GAA5B,UACE,KAAmD;;QAEnD,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAA,KAAK,CAAC,CAAC,mCAAI,CAAC,EAAE,CAAA;IACpD,CAAC;IACH,mBAAC;AAAD,CAAC,AA5vBD,CAAkC,WAAW,GA4vB5C"}
@@ -0,0 +1,6 @@
1
+ import { AcGePoint3dLike } from '../math';
2
+ export declare function isNonZeroDirection(vector?: AcGePoint3dLike | null): boolean;
3
+ export declare function resolveControlPointSplineDegree(declaredDegree: number | undefined, controlPointCount: number, knotCount: number): number;
4
+ export declare function resolveFitPointSplineDegree(declaredDegree: number | undefined, fitPointCount: number, tangentCount: number): number;
5
+ export declare function normalizeSplineWeights(weights: number[] | undefined, controlPointCount: number): number[] | undefined;
6
+ //# sourceMappingURL=AcGeSplineUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSplineUtil.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSplineUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAM3E;AAED,wBAAgB,+BAA+B,CAC7C,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR;AAED,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,MAAM,CAQR;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,iBAAiB,EAAE,MAAM,GACxB,MAAM,EAAE,GAAG,SAAS,CAKtB"}
@@ -0,0 +1,36 @@
1
+ export function isNonZeroDirection(vector) {
2
+ var _a, _b, _c;
3
+ if (!vector)
4
+ return false;
5
+ var x = (_a = vector.x) !== null && _a !== void 0 ? _a : 0;
6
+ var y = (_b = vector.y) !== null && _b !== void 0 ? _b : 0;
7
+ var z = (_c = vector.z) !== null && _c !== void 0 ? _c : 0;
8
+ return x * x + y * y + z * z > 1e-20;
9
+ }
10
+ export function resolveControlPointSplineDegree(declaredDegree, controlPointCount, knotCount) {
11
+ var degree = declaredDegree !== null && declaredDegree !== void 0 ? declaredDegree : 0;
12
+ if (degree < 1 && knotCount > 0 && controlPointCount > 0) {
13
+ degree = knotCount - controlPointCount - 1;
14
+ }
15
+ if (degree < 1) {
16
+ degree = 3;
17
+ }
18
+ degree = Math.min(degree, controlPointCount - 1);
19
+ return Math.max(1, degree);
20
+ }
21
+ export function resolveFitPointSplineDegree(declaredDegree, fitPointCount, tangentCount) {
22
+ var degree = declaredDegree !== null && declaredDegree !== void 0 ? declaredDegree : 0;
23
+ if (degree < 1) {
24
+ degree = 3;
25
+ }
26
+ var maxDegree = fitPointCount + tangentCount - 1;
27
+ degree = Math.min(degree, maxDegree);
28
+ return Math.max(1, degree);
29
+ }
30
+ export function normalizeSplineWeights(weights, controlPointCount) {
31
+ if (!weights || weights.length !== controlPointCount) {
32
+ return undefined;
33
+ }
34
+ return weights;
35
+ }
36
+ //# sourceMappingURL=AcGeSplineUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSplineUtil.js","sourceRoot":"","sources":["../../src/geometry/AcGeSplineUtil.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAA+B;;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAM,CAAC,GAAG,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAA;IACvB,IAAM,CAAC,GAAG,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAA;IACvB,IAAM,CAAC,GAAG,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAA;IACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,cAAkC,EAClC,iBAAyB,EACzB,SAAiB;IAEjB,IAAI,MAAM,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,GAAG,CAAC,CAAA;IACZ,CAAC;IACD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,cAAkC,EAClC,aAAqB,EACrB,YAAoB;IAEpB,IAAI,MAAM,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,GAAG,CAAC,CAAA;IACZ,CAAC;IACD,IAAM,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,CAAC,CAAA;IAClD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA6B,EAC7B,iBAAyB;IAEzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACrD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeMatrix3d.d.ts","sourceRoot":"","sources":["../../src/math/AcGeMatrix3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeMatrix3d.d.ts","sourceRoot":"","sources":["../../src/math/AcGeMatrix3d.ts"],"names":[],"mappings":"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"}
@@ -152,17 +152,25 @@ var AcGeMatrix3d = /** @class */ (function () {
152
152
  * @returns Return this matrix
153
153
  */
154
154
  AcGeMatrix3d.prototype.setFromExtrusionDirection = function (extrusion) {
155
- if (!DEFAULT_TOL.equalPoint3d(extrusion, AcGeVector3d.Z_AXIS)) {
155
+ var length = Math.hypot(extrusion.x, extrusion.y, extrusion.z);
156
+ if (!Number.isFinite(length) || length < 1e-12) {
157
+ this.identity();
158
+ return this;
159
+ }
160
+ var normal = Math.abs(length - 1) > 1e-6
161
+ ? extrusion.clone().multiplyScalar(1 / length)
162
+ : extrusion;
163
+ if (!DEFAULT_TOL.equalPoint3d(normal, AcGeVector3d.Z_AXIS)) {
156
164
  var xAxis = new AcGeVector3d(1, 0, 0);
157
- if (Math.abs(extrusion.x) < 1.0 / 64.0 &&
158
- Math.abs(extrusion.y) < 1.0 / 64.0) {
159
- xAxis.crossVectors(AcGeVector3d.Y_AXIS, extrusion).normalize();
165
+ if (Math.abs(normal.x) < 1.0 / 64.0 &&
166
+ Math.abs(normal.y) < 1.0 / 64.0) {
167
+ xAxis.crossVectors(AcGeVector3d.Y_AXIS, normal).normalize();
160
168
  }
161
169
  else {
162
- xAxis.crossVectors(AcGeVector3d.Z_AXIS, extrusion).normalize();
170
+ xAxis.crossVectors(AcGeVector3d.Z_AXIS, normal).normalize();
163
171
  }
164
- var yAxis = extrusion.clone().cross(xAxis).normalize();
165
- this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, extrusion.x, extrusion.y, extrusion.z, 0, 0, 0, 0, 1);
172
+ var yAxis = normal.clone().cross(xAxis).normalize();
173
+ this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, normal.x, normal.y, normal.z, 0, 0, 0, 0, 1);
166
174
  }
167
175
  else {
168
176
  this.identity();
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeMatrix3d.js","sourceRoot":"","sources":["../../src/math/AcGeMatrix3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeMatrix3d.js","sourceRoot":"","sources":["../../src/math/AcGeMatrix3d.ts"],"names":[],"mappings":"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,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QAEtD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QAEtD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACtD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QAEtD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACtD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QAEtD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,qCAAc,GAAd,UAAe,CAAS;QACtB,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACX,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACX,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAEX,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,kCAAW,GAAX;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,IAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACf,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACd,IAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACf,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACd,IAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACf,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACd,IAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACf,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAEd,gCAAgC;QAChC,mGAAmG;QAEnG,OAAO,CACL,GAAG;YACD,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACpB,GAAG;gBACD,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACpB,GAAG;gBACD,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACpB,GAAG;gBACD,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG;oBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CACrB,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,gCAAS,GAAT;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QACxB,IAAI,GAAG,CAAA;QAEP,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACb,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACb,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACb,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QAEX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACd,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;QACZ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACd,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;QACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACZ,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACf,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;QAEZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,kCAAW,GAAX,UAAY,CAAwB,EAAE,CAAS,EAAE,CAAS;QACxD,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACd,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;YACV,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;YACV,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QACZ,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,6BAAM,GAAN;QACE,gGAAgG;QAChG,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EACtB,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EACX,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EACZ,GAAG,GACD,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG,EACjB,GAAG,GACD,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG,EACjB,GAAG,GACD,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG,EACjB,GAAG,GACD,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG;YACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QAEnB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QAEzD,IAAI,GAAG,KAAK,CAAC;YACX,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEjE,IAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAA;QAEtB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QAER,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QAER,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC;YACH,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,EAAE,CAAC;YACJ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,EAAE,CAAC;YACJ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QAER,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACrB,EAAE,CAAC,EAAE,CAAC;YACJ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,EAAE,CAAC;YACJ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QACR,EAAE,CAAC,EAAE,CAAC;YACJ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;gBACd,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG;gBACf,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,MAAM,CAAA;QAER,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,4BAAK,GAAL,UAAM,CAAe;QACnB,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QACxB,IAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EACX,CAAC,GAAG,CAAC,CAAC,CAAC,EACP,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAET,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACX,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACV,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAEX,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,wCAAiB,GAAjB;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,IAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAEhE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,sCAAe,GAAf,UAAgB,CAAwB,EAAE,CAAU,EAAE,CAAU;QAC9D,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,oCAAa,GAAb,UAAc,KAAa;QACzB,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EACvB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAErB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEzD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,oCAAa,GAAb,UAAc,KAAa;QACzB,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EACvB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAErB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEzD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,oCAAa,GAAb,UAAc,KAAa;QACzB,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EACvB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAErB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEzD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,uCAAgB,GAAhB,UAAiB,IAAkB,EAAE,KAAa;QAChD,qEAAqE;QAErE,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzB,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzB,IAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACf,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EACd,CAAC,GAAG,IAAI,CAAC,CAAC,EACV,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACZ,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EACd,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAEZ,IAAI,CAAC,GAAG,CACN,EAAE,GAAG,CAAC,GAAG,CAAC,EACV,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,CAAC,EACD,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,EAAE,GAAG,CAAC,GAAG,CAAC,EACV,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,CAAC,EACD,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACb,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,CACF,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,gCAAS,GAAT,UAAU,CAAS,EAAE,CAAS,EAAE,CAAS;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAExD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;OASG;IACH,gCAAS,GAAT,UACE,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;QAEV,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAE9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,8BAAO,GAAP,UACE,QAA0B,EAC1B,UAA0B,EAC1B,KAAmB;QAEnB,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,IAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EACpB,CAAC,GAAG,UAAU,CAAC,CAAC,EAChB,CAAC,GAAG,UAAU,CAAC,CAAC,EAChB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAA;QAClB,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EACd,EAAE,GAAG,CAAC,GAAG,CAAC,EACV,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QACZ,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACf,EAAE,GAAG,CAAC,GAAG,EAAE,EACX,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;QACb,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACf,EAAE,GAAG,CAAC,GAAG,EAAE,EACX,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;QACb,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACf,EAAE,GAAG,CAAC,GAAG,EAAE,EACX,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;QAEb,IAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAChB,EAAE,GAAG,KAAK,CAAC,CAAC,EACZ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;QAEd,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QACtB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QACtB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAET,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QACtB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QACtB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAET,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QACtB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QACtB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QAC7B,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAEV,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;QACnB,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;QACnB,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;QACnB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAEV,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;OAUG;IACH,gCAAS,GAAT,UACE,QAA0B,EAC1B,UAA0B,EAC1B,KAAmB;QAEnB,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QAC9C,IAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QAChD,IAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QAEjD,wDAAwD;QACxD,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,IAAI,GAAG,GAAG,CAAC;YAAE,EAAE,GAAG,CAAC,EAAE,CAAA;QAErB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACnB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACnB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAEnB,0BAA0B;QAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEd,IAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAA;QACpB,IAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAA;QACpB,IAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAA;QAEpB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QAExB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QAExB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAA;QAEzB,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;QAErC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAA;QACZ,KAAK,CAAC,CAAC,GAAG,EAAE,CAAA;QACZ,KAAK,CAAC,CAAC,GAAG,EAAE,CAAA;QAEZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mBAAmB;IACnB,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;IACZ,UAAU;IACV,SAAS;IACT,6CAA6C;IAC7C,MAAM;IACN,6BAA6B;IAC7B,0CAA0C;IAC1C,0CAA0C;IAE1C,8CAA8C;IAC9C,8CAA8C;IAE9C,aAAa;IAEb,sDAAsD;IACtD,uCAAuC;IACvC,2CAA2C;IAC3C,8DAA8D;IAC9D,8BAA8B;IAC9B,uCAAuC;IACvC,aAAa;IACb,uBAAuB;IACvB,yEAAyE;IACzE,2BAA2B;IAC3B,QAAQ;IACR,MAAM;IAEN,cAAc;IACd,cAAc;IACd,cAAc;IACd,eAAe;IACf,cAAc;IACd,cAAc;IACd,cAAc;IACd,eAAe;IACf,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,eAAe;IAEf,gBAAgB;IAChB,IAAI;IAEJ,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;IACZ,UAAU;IACV,SAAS;IACT,6CAA6C;IAC7C,MAAM;IACN,6BAA6B;IAC7B,mCAAmC;IACnC,mCAAmC;IACnC,iCAAiC;IAEjC,iCAAiC;IACjC,iCAAiC;IAEjC,gBAAgB;IAEhB,sDAAsD;IACtD,2BAA2B;IAC3B,oBAAoB;IACpB,8DAA8D;IAC9D,mBAAmB;IACnB,oBAAoB;IACpB,aAAa;IACb,uBAAuB;IACvB,0EAA0E;IAC1E,2BAA2B;IAC3B,QAAQ;IACR,MAAM;IAEN,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IAEf,gBAAgB;IAChB,IAAI;IAEJ;;;;OAIG;IACH,6BAAM,GAAN,UAAO,MAAoB;QACzB,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QACxB,IAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;QAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;QACnC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,gCAAS,GAAT,UAAU,KAAe,EAAE,MAAU;QAAV,uBAAA,EAAA,UAAU;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,8BAAO,GAAP,UAAQ,KAAoB,EAAE,MAAkB;QAAxC,sBAAA,EAAA,UAAoB;QAAE,uBAAA,EAAA,UAAkB;QAC9C,IAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACrB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAEzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAEzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3B,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAE3B,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3B,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3B,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3B,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAE3B,OAAO,KAAK,CAAA;IACd,CAAC;IAt4CD;;OAEG;IACI,qBAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;IAo4CrD,mBAAC;CAAA,AAx4CD,IAw4CC;SAx4CY,YAAY;AA04CzB,IAAM,GAAG,GAAG,aAAa,CAAC,IAAI,YAAY,EAAE,CAAA;AAC5C,IAAM,GAAG,GAAG,aAAa,CAAC,IAAI,YAAY,EAAE,CAAA;AAC5C,IAAM,KAAK,GAAG,aAAa,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACrD,IAAM,IAAI,GAAG,aAAa,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACpD,IAAM,EAAE,GAAG,aAAa,CAAC,IAAI,YAAY,EAAE,CAAA;AAC3C,IAAM,EAAE,GAAG,aAAa,CAAC,IAAI,YAAY,EAAE,CAAA;AAC3C,IAAM,EAAE,GAAG,aAAa,CAAC,IAAI,YAAY,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlightcad/geometry-engine",
3
- "version": "3.4.6",
3
+ "version": "3.4.8",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "require": "./dist/geometry-engine.umd.cjs"
34
34
  },
35
35
  "peerDependencies": {
36
- "@mlightcad/common": "1.6.6"
36
+ "@mlightcad/common": "1.6.8"
37
37
  },
38
38
  "scripts": {
39
39
  "clean": "rimraf dist lib tsconfig.tsbuildinfo",