@mlightcad/geometry-engine 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +13 -0
- package/dist/geometry-engine.js +10186 -0
- package/dist/geometry-engine.umd.cjs +4 -0
- package/lib/geometry/AcGeArea2d.d.ts +61 -0
- package/lib/geometry/AcGeArea2d.d.ts.map +1 -0
- package/lib/geometry/AcGeArea2d.js +174 -0
- package/lib/geometry/AcGeArea2d.js.map +1 -0
- package/lib/geometry/AcGeCircArc2d.d.ts +108 -0
- package/lib/geometry/AcGeCircArc2d.d.ts.map +1 -0
- package/lib/geometry/AcGeCircArc2d.js +412 -0
- package/lib/geometry/AcGeCircArc2d.js.map +1 -0
- package/lib/geometry/AcGeCircArc3d.d.ts +138 -0
- package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -0
- package/lib/geometry/AcGeCircArc3d.js +447 -0
- package/lib/geometry/AcGeCircArc3d.js.map +1 -0
- package/lib/geometry/AcGeCurve2d.d.ts +85 -0
- package/lib/geometry/AcGeCurve2d.d.ts.map +1 -0
- package/lib/geometry/AcGeCurve2d.js +213 -0
- package/lib/geometry/AcGeCurve2d.js.map +1 -0
- package/lib/geometry/AcGeCurve3d.d.ts +27 -0
- package/lib/geometry/AcGeCurve3d.d.ts.map +1 -0
- package/lib/geometry/AcGeCurve3d.js +29 -0
- package/lib/geometry/AcGeCurve3d.js.map +1 -0
- package/lib/geometry/AcGeEllipseArc2d.d.ts +105 -0
- package/lib/geometry/AcGeEllipseArc2d.d.ts.map +1 -0
- package/lib/geometry/AcGeEllipseArc2d.js +292 -0
- package/lib/geometry/AcGeEllipseArc2d.js.map +1 -0
- package/lib/geometry/AcGeEllipseArc3d.d.ts +141 -0
- package/lib/geometry/AcGeEllipseArc3d.d.ts.map +1 -0
- package/lib/geometry/AcGeEllipseArc3d.js +442 -0
- package/lib/geometry/AcGeEllipseArc3d.js.map +1 -0
- package/lib/geometry/AcGeLine2d.d.ts +56 -0
- package/lib/geometry/AcGeLine2d.d.ts.map +1 -0
- package/lib/geometry/AcGeLine2d.js +125 -0
- package/lib/geometry/AcGeLine2d.js.map +1 -0
- package/lib/geometry/AcGeLine3d.d.ts +134 -0
- package/lib/geometry/AcGeLine3d.d.ts.map +1 -0
- package/lib/geometry/AcGeLine3d.js +291 -0
- package/lib/geometry/AcGeLine3d.js.map +1 -0
- package/lib/geometry/AcGeLoop2d.d.ts +59 -0
- package/lib/geometry/AcGeLoop2d.d.ts.map +1 -0
- package/lib/geometry/AcGeLoop2d.js +141 -0
- package/lib/geometry/AcGeLoop2d.js.map +1 -0
- package/lib/geometry/AcGePolyline2d.d.ts +90 -0
- package/lib/geometry/AcGePolyline2d.d.ts.map +1 -0
- package/lib/geometry/AcGePolyline2d.js +224 -0
- package/lib/geometry/AcGePolyline2d.js.map +1 -0
- package/lib/geometry/AcGeShape.d.ts +12 -0
- package/lib/geometry/AcGeShape.d.ts.map +1 -0
- package/lib/geometry/AcGeShape.js +22 -0
- package/lib/geometry/AcGeShape.js.map +1 -0
- package/lib/geometry/AcGeShape2d.d.ts +31 -0
- package/lib/geometry/AcGeShape2d.d.ts.map +1 -0
- package/lib/geometry/AcGeShape2d.js +51 -0
- package/lib/geometry/AcGeShape2d.js.map +1 -0
- package/lib/geometry/AcGeShape3d.d.ts +33 -0
- package/lib/geometry/AcGeShape3d.d.ts.map +1 -0
- package/lib/geometry/AcGeShape3d.js +52 -0
- package/lib/geometry/AcGeShape3d.js.map +1 -0
- package/lib/geometry/AcGeSpline3d.d.ts +77 -0
- package/lib/geometry/AcGeSpline3d.d.ts.map +1 -0
- package/lib/geometry/AcGeSpline3d.js +221 -0
- package/lib/geometry/AcGeSpline3d.js.map +1 -0
- package/lib/geometry/index.d.ts +13 -0
- package/lib/geometry/index.d.ts.map +1 -0
- package/lib/geometry/index.js +13 -0
- package/lib/geometry/index.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -0
- package/lib/math/AcGeBox2d.d.ts +173 -0
- package/lib/math/AcGeBox2d.d.ts.map +1 -0
- package/lib/math/AcGeBox2d.js +289 -0
- package/lib/math/AcGeBox2d.js.map +1 -0
- package/lib/math/AcGeBox3d.d.ts +195 -0
- package/lib/math/AcGeBox3d.d.ts.map +1 -0
- package/lib/math/AcGeBox3d.js +378 -0
- package/lib/math/AcGeBox3d.js.map +1 -0
- package/lib/math/AcGeEuler.d.ts +133 -0
- package/lib/math/AcGeEuler.d.ts.map +1 -0
- package/lib/math/AcGeEuler.js +358 -0
- package/lib/math/AcGeEuler.js.map +1 -0
- package/lib/math/AcGeMatrix2d.d.ts +203 -0
- package/lib/math/AcGeMatrix2d.d.ts.map +1 -0
- package/lib/math/AcGeMatrix2d.js +393 -0
- package/lib/math/AcGeMatrix2d.js.map +1 -0
- package/lib/math/AcGeMatrix3d.d.ts +279 -0
- package/lib/math/AcGeMatrix3d.d.ts.map +1 -0
- package/lib/math/AcGeMatrix3d.js +1037 -0
- package/lib/math/AcGeMatrix3d.js.map +1 -0
- package/lib/math/AcGePlane.d.ts +131 -0
- package/lib/math/AcGePlane.d.ts.map +1 -0
- package/lib/math/AcGePlane.js +218 -0
- package/lib/math/AcGePlane.js.map +1 -0
- package/lib/math/AcGePoint.d.ts +4 -0
- package/lib/math/AcGePoint.d.ts.map +1 -0
- package/lib/math/AcGePoint.js +2 -0
- package/lib/math/AcGePoint.js.map +1 -0
- package/lib/math/AcGePoint2d.d.ts +17 -0
- package/lib/math/AcGePoint2d.d.ts.map +1 -0
- package/lib/math/AcGePoint2d.js +40 -0
- package/lib/math/AcGePoint2d.js.map +1 -0
- package/lib/math/AcGePoint3d.d.ts +18 -0
- package/lib/math/AcGePoint3d.d.ts.map +1 -0
- package/lib/math/AcGePoint3d.js +43 -0
- package/lib/math/AcGePoint3d.js.map +1 -0
- package/lib/math/AcGeQuaternion.d.ts +230 -0
- package/lib/math/AcGeQuaternion.d.ts.map +1 -0
- package/lib/math/AcGeQuaternion.js +666 -0
- package/lib/math/AcGeQuaternion.js.map +1 -0
- package/lib/math/AcGeVector.d.ts +9 -0
- package/lib/math/AcGeVector.d.ts.map +1 -0
- package/lib/math/AcGeVector.js +2 -0
- package/lib/math/AcGeVector.js.map +1 -0
- package/lib/math/AcGeVector2d.d.ts +361 -0
- package/lib/math/AcGeVector2d.d.ts.map +1 -0
- package/lib/math/AcGeVector2d.js +622 -0
- package/lib/math/AcGeVector2d.js.map +1 -0
- package/lib/math/AcGeVector3d.d.ts +493 -0
- package/lib/math/AcGeVector3d.d.ts.map +1 -0
- package/lib/math/AcGeVector3d.js +868 -0
- package/lib/math/AcGeVector3d.js.map +1 -0
- package/lib/math/index.d.ts +14 -0
- package/lib/math/index.d.ts.map +1 -0
- package/lib/math/index.js +14 -0
- package/lib/math/index.js.map +1 -0
- package/lib/util/AcGeConstants.d.ts +19 -0
- package/lib/util/AcGeConstants.d.ts.map +1 -0
- package/lib/util/AcGeConstants.js +25 -0
- package/lib/util/AcGeConstants.js.map +1 -0
- package/lib/util/AcGeGeometryUtil.d.ts +16 -0
- package/lib/util/AcGeGeometryUtil.d.ts.map +1 -0
- package/lib/util/AcGeGeometryUtil.js +56 -0
- package/lib/util/AcGeGeometryUtil.js.map +1 -0
- package/lib/util/AcGeMathUtil.d.ts +203 -0
- package/lib/util/AcGeMathUtil.d.ts.map +1 -0
- package/lib/util/AcGeMathUtil.js +585 -0
- package/lib/util/AcGeMathUtil.js.map +1 -0
- package/lib/util/AcGeTol.d.ts +91 -0
- package/lib/util/AcGeTol.d.ts.map +1 -0
- package/lib/util/AcGeTol.js +83 -0
- package/lib/util/AcGeTol.js.map +1 -0
- package/lib/util/index.d.ts +5 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +5 -0
- package/lib/util/index.js.map +1 -0
- package/package.json +42 -0
@@ -0,0 +1,4 @@
|
|
1
|
+
(function(Q,se){typeof exports=="object"&&typeof module<"u"?se(exports,require("@mlightcad/common")):typeof define=="function"&&define.amd?define(["exports","@mlightcad/common"],se):(Q=typeof globalThis<"u"?globalThis:Q||self,se(Q["geometry-engine"]={},Q.common))})(this,function(Q,se){"use strict";const Yt=["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 Ir=1234567;const ir=Math.PI/180,sr=180/Math.PI;function Er(){const L=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0,o=Math.random()*4294967295|0;return(Yt[L&255]+Yt[L>>8&255]+Yt[L>>16&255]+Yt[L>>24&255]+"-"+Yt[e&255]+Yt[e>>8&255]+"-"+Yt[e>>16&15|64]+Yt[e>>24&255]+"-"+Yt[s&63|128]+Yt[s>>8&255]+"-"+Yt[s>>16&255]+Yt[s>>24&255]+Yt[o&255]+Yt[o>>8&255]+Yt[o>>16&255]+Yt[o>>24&255]).toLowerCase()}function Ne(L,e,s){return Math.max(e,Math.min(s,L))}function ar(L,e){return(L%e+e)%e}function Nr(L,e,s,o,c){return o+(L-e)*(c-o)/(s-e)}function Br(L,e,s){return L!==e?(s-L)/(e-L):0}function or(L,e,s){return(1-s)*L+s*e}function Lr(L,e,s,o){return or(L,e,1-Math.exp(-s*o))}function Tr(L,e=1){return e-Math.abs(ar(L,e*2)-e)}function Ur(L,e,s){return L<=e?0:L>=s?1:(L=(L-e)/(s-e),L*L*(3-2*L))}function Rr(L,e,s){return L<=e?0:L>=s?1:(L=(L-e)/(s-e),L*L*L*(L*(L*6-15)+10))}function Vr(L,e){return L+Math.floor(Math.random()*(e-L+1))}function Dr(L,e){return L+Math.random()*(e-L)}function Fr(L){return L*(.5-Math.random())}function Or(L){L!==void 0&&(Ir=L);let e=Ir+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function qr(L){return L*ir}function Gr(L){return L*sr}function Kr(L){return(L&L-1)===0&&L!==0}function jr(L){return Math.pow(2,Math.ceil(Math.log(L)/Math.LN2))}function Xr(L){return Math.pow(2,Math.floor(Math.log(L)/Math.LN2))}function bn(L){const e=Math.PI*2;return(L%e+e)%e}function Wr(L,e,s){return L>e&&L<s||L>s&&L<e}function Zr(L,e,s,o=!1){return L=bn(L),e=bn(e),s=bn(s),o?e>s?L<=e&&L>=s:L<=e||L>=s:e<s?L>=e&&L<=s:L>=e||L<=s}function hr(L){return L=Math.abs(L),L<1?0:Math.ceil(Math.log10(Math.abs(L)+1))}function Yr(L,e=1e-7){const s=hr(L);return Math.max(Math.pow(10,s)*e,e)}const Tt={DEG2RAD:ir,RAD2DEG:sr,generateUUID:Er,clamp:Ne,euclideanModulo:ar,mapLinear:Nr,inverseLerp:Br,lerp:or,damp:Lr,pingpong:Tr,smoothstep:Ur,smootherstep:Rr,randInt:Vr,randFloat:Dr,randFloatSpread:Fr,seededRandom:Or,degToRad:qr,radToDeg:Gr,isPowerOfTwo:Kr,ceilPowerOfTwo:jr,floorPowerOfTwo:Xr,normalizeAngle:bn,isBetween:Wr,isBetweenAngle:Zr,intPartLength:hr,relativeEps:Yr},Sn=class Sn{constructor(e,s){this.x=0,this.y=0;const o=+(e!==void 0)+ +(s!==void 0);if(o!==0){if(o===1&&e instanceof Array){this.x=e[0],this.y=e[1];return}if(o===1){const{x:c,y:d}=e;this.x=c,this.y=d;return}if(o===2){this.x=e,this.y=s;return}throw se.AcCmErrors.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,s){return this.x=e,this.y=s,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,s){switch(e){case 0:this.x=s;break;case 1:this.y=s;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new Sn(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,s){return this.x=e.x+s.x,this.y=e.y+s.y,this}addScaledVector(e,s){return this.x+=e.x*s,this.y+=e.y*s,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,s){return this.x=e.x-s.x,this.y=e.y-s.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix2d(e){const s=this.x,o=this.y,c=e.elements;return this.x=c[0]*s+c[3]*o+c[6],this.y=c[1]*s+c[4]*o+c[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,s){return this.x=Math.max(e.x,Math.min(s.x,this.x)),this.y=Math.max(e.y,Math.min(s.y,this.y)),this}clampScalar(e,s){return this.x=Math.max(e,Math.min(s,this.x)),this.y=Math.max(e,Math.min(s,this.y)),this}clampLength(e,s){const o=this.length();return this.divideScalar(o||1).multiplyScalar(Math.max(e,Math.min(s,o)))}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(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.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(e){const s=Math.sqrt(this.lengthSq()*e.lengthSq());if(s===0)return Math.PI/2;const o=this.dot(e)/s;return Math.acos(Math.max(-1,Math.min(1,o)))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const s=this.x-e.x,o=this.y-e.y;return s*s+o*o}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,s){return this.x+=(e.x-this.x)*s,this.y+=(e.y-this.y)*s,this}lerpVectors(e,s,o){return this.x=e.x+(s.x-e.x)*o,this.y=e.y+(s.y-e.y)*o,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,s=0){return this.x=e[s],this.y=e[s+1],this}toArray(e=[],s=0){return e[s]=this.x,e[s+1]=this.y,e}rotateAround(e,s){const o=Math.cos(s),c=Math.sin(s),d=this.x-e.x,w=this.y-e.y;return this.x=d*o-w*c+e.x,this.y=d*c+w*o+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(e=1e-7){return Math.min(Tt.relativeEps(this.x,e),Tt.relativeEps(this.y,e))}*[Symbol.iterator](){yield this.x,yield this.y}};Sn.EMPTY=Object.freeze(new Sn(0,0));let Nt=Sn;const Cn=class Cn{constructor(e,s,o,c,d,w,A,z,p){this.elements=[1,0,0,0,1,0,0,0,1],e!=null&&s!=null&&o!=null&&c!=null&&d!=null&&w!=null&&A!=null&&z!=null&&p!=null&&this.set(e,s,o,c,d,w,A,z,p)}set(e,s,o,c,d,w,A,z,p){const S=this.elements;return S[0]=e,S[1]=c,S[2]=A,S[3]=s,S[4]=d,S[5]=z,S[6]=o,S[7]=w,S[8]=p,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const s=this.elements,o=e.elements;return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s[4]=o[4],s[5]=o[5],s[6]=o[6],s[7]=o[7],s[8]=o[8],this}extractBasis(e,s,o){return e.setFromMatrix3Column(this,0),s.setFromMatrix3Column(this,1),o.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const s=e.elements;return this.set(s[0],s[4],s[8],s[1],s[5],s[9],s[2],s[6],s[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,s){const o=e.elements,c=s.elements,d=this.elements,w=o[0],A=o[3],z=o[6],p=o[1],S=o[4],y=o[7],N=o[2],k=o[5],V=o[8],W=c[0],J=c[3],Z=c[6],Mt=c[1],zt=c[4],yt=c[7],X=c[2],ct=c[5],ut=c[8];return d[0]=w*W+A*Mt+z*X,d[3]=w*J+A*zt+z*ct,d[6]=w*Z+A*yt+z*ut,d[1]=p*W+S*Mt+y*X,d[4]=p*J+S*zt+y*ct,d[7]=p*Z+S*yt+y*ut,d[2]=N*W+k*Mt+V*X,d[5]=N*J+k*zt+V*ct,d[8]=N*Z+k*yt+V*ut,this}multiplyScalar(e){const s=this.elements;return s[0]*=e,s[3]*=e,s[6]*=e,s[1]*=e,s[4]*=e,s[7]*=e,s[2]*=e,s[5]*=e,s[8]*=e,this}determinant(){const e=this.elements,s=e[0],o=e[1],c=e[2],d=e[3],w=e[4],A=e[5],z=e[6],p=e[7],S=e[8];return s*w*S-s*A*p-o*d*S+o*A*z+c*d*p-c*w*z}invert(){const e=this.elements,s=e[0],o=e[1],c=e[2],d=e[3],w=e[4],A=e[5],z=e[6],p=e[7],S=e[8],y=S*w-A*p,N=A*z-S*d,k=p*d-w*z,V=s*y+o*N+c*k;if(V===0)return this.set(0,0,0,0,0,0,0,0,0);const W=1/V;return e[0]=y*W,e[1]=(c*p-S*o)*W,e[2]=(A*o-c*w)*W,e[3]=N*W,e[4]=(S*s-c*z)*W,e[5]=(c*d-A*s)*W,e[6]=k*W,e[7]=(o*z-p*s)*W,e[8]=(w*s-o*d)*W,this}transpose(){let e;const s=this.elements;return e=s[1],s[1]=s[3],s[3]=e,e=s[2],s[2]=s[6],s[6]=e,e=s[5],s[5]=s[7],s[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const s=this.elements;return e.elements[0]=s[0],e.elements[1]=s[3],e.elements[2]=s[6],e.elements[3]=s[1],e.elements[4]=s[4],e.elements[5]=s[7],e.elements[6]=s[2],e.elements[7]=s[5],e.elements[8]=s[8],this}setUvTransform(e,s,o,c,d,w,A){const z=Math.cos(d),p=Math.sin(d);return this.set(o*z,o*p,-o*(z*w+p*A)+w+e,-c*p,c*z,-c*(-p*w+z*A)+A+s,0,0,1),this}scale(e,s){return this.premultiply(ur.makeScale(e,s)),this}rotate(e){return this.premultiply(ur.makeRotation(-e)),this}translate(e,s){return this.premultiply(ur.makeTranslation(e,s)),this}makeTranslation(e,s){return e instanceof Nt?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,s,0,0,1),this}makeRotation(e){const s=Math.cos(e),o=Math.sin(e);return this.set(s,-o,0,o,s,0,0,0,1),this}makeScale(e,s){return this.set(e,0,0,0,s,0,0,0,1),this}equals(e){const s=this.elements,o=e.elements;for(let c=0;c<9;c++)if(s[c]!==o[c])return!1;return!0}fromArray(e,s=0){for(let o=0;o<9;o++)this.elements[o]=e[o+s];return this}toArray(e=[],s=0){const o=this.elements;return e[s]=o[0],e[s+1]=o[1],e[s+2]=o[2],e[s+3]=o[3],e[s+4]=o[4],e[s+5]=o[5],e[s+6]=o[6],e[s+7]=o[7],e[s+8]=o[8],e}clone(){return new Cn().fromArray(this.elements)}};Cn.IDENTITY=Object.freeze(new Cn);let rn=Cn;const ur=new rn,He=1e-6,Ht=2*Math.PI,Mi={x:0,y:0},lr={x:0,y:0,z:0};class Hr{constructor(){this.equalPointTol=He,this.equalVectorTol=He}equalPoint2d(e,s){return new Nt(e).sub(s).length()<this.equalPointTol}equalPoint3d(e,s){return new Y(e).sub(s).length()<this.equalPointTol}static equalToZero(e,s=He){return e<s&&e>-s}static equal(e,s,o=He){return Math.abs(e-s)<o}static great(e,s,o=He){return e-s>o}static less(e,s,o=He){return e-s<o}}const cr=new Hr;function vr(L,e,s=!1){const o=L.x,c=L.y;let d=!1;const w=e.length;for(let A=0,z=w-1;A<w;z=A++){const p=e[A].x,S=e[A].y,y=e[z].x,N=e[z].y;let k=S>c!=N>c;s&&(k=S>=c!=N>=c),k&&o<(y-p)*(c-S)/(N-S)+p&&(d=!d)}return d}function Qr(L,e){if(L.length===0||e.length===0)return!1;const s=new de().setFromPoints(L),o=new de().setFromPoints(e);if(!s.intersectsBox(o))return!1;for(let c=0;c<L.length;){if(vr(L[c],e,!0))return!0;c<L.length-1&&cr.equalPoint2d(L[c+1],L[c])&&++c,++c}return!1}const Jr={isPointInPolygon:vr,isPolygonIntersect:Qr};class xn{constructor(e=0,s=0,o=0,c=1){this._x=e,this._y=s,this._z=o,this._w=c}static slerpFlat(e,s,o,c,d,w,A){let z=o[c+0],p=o[c+1],S=o[c+2],y=o[c+3];const N=d[w+0],k=d[w+1],V=d[w+2],W=d[w+3];if(A===0){e[s+0]=z,e[s+1]=p,e[s+2]=S,e[s+3]=y;return}if(A===1){e[s+0]=N,e[s+1]=k,e[s+2]=V,e[s+3]=W;return}if(y!==W||z!==N||p!==k||S!==V){let J=1-A;const Z=z*N+p*k+S*V+y*W,Mt=Z>=0?1:-1,zt=1-Z*Z;if(zt>Number.EPSILON){const X=Math.sqrt(zt),ct=Math.atan2(X,Z*Mt);J=Math.sin(J*ct)/X,A=Math.sin(A*ct)/X}const yt=A*Mt;if(z=z*J+N*yt,p=p*J+k*yt,S=S*J+V*yt,y=y*J+W*yt,J===1-A){const X=1/Math.sqrt(z*z+p*p+S*S+y*y);z*=X,p*=X,S*=X,y*=X}}e[s]=z,e[s+1]=p,e[s+2]=S,e[s+3]=y}static multiplyQuaternionsFlat(e,s,o,c,d,w){const A=o[c],z=o[c+1],p=o[c+2],S=o[c+3],y=d[w],N=d[w+1],k=d[w+2],V=d[w+3];return e[s]=A*V+S*y+z*k-p*N,e[s+1]=z*V+S*N+p*y-A*k,e[s+2]=p*V+S*k+A*N-z*y,e[s+3]=S*V-A*y-z*N-p*k,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,s,o,c){return this._x=e,this._y=s,this._z=o,this._w=c,this._onChangeCallback(),this}clone(){return new xn(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,s=!0){const o=e.x,c=e.y,d=e.z,w=e.order,A=Math.cos,z=Math.sin,p=A(o/2),S=A(c/2),y=A(d/2),N=z(o/2),k=z(c/2),V=z(d/2);switch(w){case"XYZ":this._x=N*S*y+p*k*V,this._y=p*k*y-N*S*V,this._z=p*S*V+N*k*y,this._w=p*S*y-N*k*V;break;case"YXZ":this._x=N*S*y+p*k*V,this._y=p*k*y-N*S*V,this._z=p*S*V-N*k*y,this._w=p*S*y+N*k*V;break;case"ZXY":this._x=N*S*y-p*k*V,this._y=p*k*y+N*S*V,this._z=p*S*V+N*k*y,this._w=p*S*y-N*k*V;break;case"ZYX":this._x=N*S*y-p*k*V,this._y=p*k*y+N*S*V,this._z=p*S*V-N*k*y,this._w=p*S*y+N*k*V;break;case"YZX":this._x=N*S*y+p*k*V,this._y=p*k*y+N*S*V,this._z=p*S*V-N*k*y,this._w=p*S*y-N*k*V;break;case"XZY":this._x=N*S*y-p*k*V,this._y=p*k*y-N*S*V,this._z=p*S*V+N*k*y,this._w=p*S*y+N*k*V;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+w)}return s===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,s){const o=s/2,c=Math.sin(o);return this._x=e.x*c,this._y=e.y*c,this._z=e.z*c,this._w=Math.cos(o),this._onChangeCallback(),this}setFromRotationMatrix(e){const s=e.elements,o=s[0],c=s[4],d=s[8],w=s[1],A=s[5],z=s[9],p=s[2],S=s[6],y=s[10],N=o+A+y;if(N>0){const k=.5/Math.sqrt(N+1);this._w=.25/k,this._x=(S-z)*k,this._y=(d-p)*k,this._z=(w-c)*k}else if(o>A&&o>y){const k=2*Math.sqrt(1+o-A-y);this._w=(S-z)/k,this._x=.25*k,this._y=(c+w)/k,this._z=(d+p)/k}else if(A>y){const k=2*Math.sqrt(1+A-o-y);this._w=(d-p)/k,this._x=(c+w)/k,this._y=.25*k,this._z=(z+S)/k}else{const k=2*Math.sqrt(1+y-o-A);this._w=(w-c)/k,this._x=(d+p)/k,this._y=(z+S)/k,this._z=.25*k}return this._onChangeCallback(),this}setFromUnitVectors(e,s){let o=e.dot(s)+1;return o<Number.EPSILON?(o=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=o):(this._x=0,this._y=-e.z,this._z=e.y,this._w=o)):(this._x=e.y*s.z-e.z*s.y,this._y=e.z*s.x-e.x*s.z,this._z=e.x*s.y-e.y*s.x,this._w=o),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ne(this.dot(e),-1,1)))}rotateTowards(e,s){const o=this.angleTo(e);if(o===0)return this;const c=Math.min(1,s/o);return this.slerp(e,c),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(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._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 e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,s){const o=e._x,c=e._y,d=e._z,w=e._w,A=s._x,z=s._y,p=s._z,S=s._w;return this._x=o*S+w*A+c*p-d*z,this._y=c*S+w*z+d*A-o*p,this._z=d*S+w*p+o*z-c*A,this._w=w*S-o*A-c*z-d*p,this._onChangeCallback(),this}slerp(e,s){if(s===0)return this;if(s===1)return this.copy(e);const o=this._x,c=this._y,d=this._z,w=this._w;let A=w*e._w+o*e._x+c*e._y+d*e._z;if(A<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,A=-A):this.copy(e),A>=1)return this._w=w,this._x=o,this._y=c,this._z=d,this;const z=1-A*A;if(z<=Number.EPSILON){const k=1-s;return this._w=k*w+s*this._w,this._x=k*o+s*this._x,this._y=k*c+s*this._y,this._z=k*d+s*this._z,this.normalize(),this}const p=Math.sqrt(z),S=Math.atan2(p,A),y=Math.sin((1-s)*S)/p,N=Math.sin(s*S)/p;return this._w=w*y+this._w*N,this._x=o*y+this._x*N,this._y=c*y+this._y*N,this._z=d*y+this._z*N,this._onChangeCallback(),this}slerpQuaternions(e,s,o){return this.copy(e).slerp(s,o)}random(){const e=2*Math.PI*Math.random(),s=2*Math.PI*Math.random(),o=Math.random(),c=Math.sqrt(1-o),d=Math.sqrt(o);return this.set(c*Math.sin(e),c*Math.cos(e),d*Math.sin(s),d*Math.cos(s))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,s=0){return this._x=e[s],this._y=e[s+1],this._z=e[s+2],this._w=e[s+3],this._onChangeCallback(),this}toArray(e=[],s=0){return e[s]=this._x,e[s+1]=this._y,e[s+2]=this._z,e[s+3]=this._w,e}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}const te=class te{constructor(e,s,o){this.x=0,this.y=0,this.z=0;const c=+(e!==void 0)+ +(s!==void 0)+ +(o!==void 0);if(c!==0){if(c===1&&e instanceof Array){this.x=e[0],this.y=e[1],this.z=e[2];return}if(c===1){const{x:d,y:w,z:A}=e;this.x=d,this.y=w,this.z=A||0;return}if(c===3){this.x=e,this.y=s,this.z=o;return}throw se.AcCmErrors.ILLEGAL_PARAMETERS}}set(e,s,o){return o===void 0&&(o=this.z),this.x=e,this.y=s,this.z=o,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,s){switch(e){case 0:this.x=s;break;case 1:this.y=s;break;case 2:this.z=s;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new te(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z||0,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z||0,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,s){return this.x=e.x+s.x,this.y=e.y+s.y,this.z=e.z+s.z,this}addScaledVector(e,s){return this.x+=e.x*s,this.y+=e.y*s,this.z+=e.z*s,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,s){return this.x=e.x-s.x,this.y=e.y-s.y,this.z=e.z-s.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,s){return this.x=e.x*s.x,this.y=e.y*s.y,this.z=e.z*s.z,this}applyEuler(e){return this.applyQuaternion($r.setFromEuler(e))}applyAxisAngle(e,s){return this.applyQuaternion($r.setFromAxisAngle(e,s))}applyMatrix3(e){const s=this.x,o=this.y,c=this.z,d=e.elements;return this.x=d[0]*s+d[3]*o+d[6]*c,this.y=d[1]*s+d[4]*o+d[7]*c,this.z=d[2]*s+d[5]*o+d[8]*c,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix3d(e){const s=this.x,o=this.y,c=this.z,d=e.elements,w=1/(d[3]*s+d[7]*o+d[11]*c+d[15]);return this.x=(d[0]*s+d[4]*o+d[8]*c+d[12])*w,this.y=(d[1]*s+d[5]*o+d[9]*c+d[13])*w,this.z=(d[2]*s+d[6]*o+d[10]*c+d[14])*w,this}applyQuaternion(e){const s=this.x,o=this.y,c=this.z,d=e.x,w=e.y,A=e.z,z=e.w,p=2*(w*c-A*o),S=2*(A*s-d*c),y=2*(d*o-w*s);return this.x=s+z*p+w*y-A*S,this.y=o+z*S+A*p-d*y,this.z=c+z*y+d*S-w*p,this}transformDirection(e){const s=this.x,o=this.y,c=this.z,d=e.elements;return this.x=d[0]*s+d[4]*o+d[8]*c,this.y=d[1]*s+d[5]*o+d[9]*c,this.z=d[2]*s+d[6]*o+d[10]*c,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,s){return this.x=Math.max(e.x,Math.min(s.x,this.x)),this.y=Math.max(e.y,Math.min(s.y,this.y)),this.z=Math.max(e.z,Math.min(s.z,this.z)),this}clampScalar(e,s){return this.x=Math.max(e,Math.min(s,this.x)),this.y=Math.max(e,Math.min(s,this.y)),this.z=Math.max(e,Math.min(s,this.z)),this}clampLength(e,s){const o=this.length();return this.divideScalar(o||1).multiplyScalar(Math.max(e,Math.min(s,o)))}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(e){return this.x*e.x+this.y*e.y+this.z*e.z}isParallelTo(e){const s=this.dot(e),o=this.length(),c=e.length();return Math.abs(s)===o*c}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(e){return this.normalize().multiplyScalar(e)}lerp(e,s){return this.x+=(e.x-this.x)*s,this.y+=(e.y-this.y)*s,this.z+=(e.z-this.z)*s,this}lerpVectors(e,s,o){return this.x=e.x+(s.x-e.x)*o,this.y=e.y+(s.y-e.y)*o,this.z=e.z+(s.z-e.z)*o,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,s){const o=e.x,c=e.y,d=e.z,w=s.x,A=s.y,z=s.z;return this.x=c*z-d*A,this.y=d*w-o*z,this.z=o*A-c*w,this}projectOnVector(e){const s=e.lengthSq();if(s===0)return this.set(0,0,0);const o=e.dot(this)/s;return this.copy(e).multiplyScalar(o)}projectOnPlane(e){return _r.copy(this).projectOnVector(e),this.sub(_r)}reflect(e){return this.sub(_r.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const s=Math.sqrt(this.lengthSq()*e.lengthSq());if(s===0)return Math.PI/2;const o=this.dot(e)/s;return Math.acos(Math.max(-1,Math.min(1,o)))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const s=this.x-e.x,o=this.y-e.y,c=this.z-e.z;return s*s+o*o+c*c}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromMatrixPosition(e){const s=e.elements;return this.x=s[12],this.y=s[13],this.z=s[14],this}setFromMatrixScale(e){const s=this.setFromMatrixColumn(e,0).length(),o=this.setFromMatrixColumn(e,1).length(),c=this.setFromMatrixColumn(e,2).length();return this.x=s,this.y=o,this.z=c,this}setFromMatrixColumn(e,s){return this.fromArray(e.elements,s*4)}setFromMatrix3Column(e,s){return this.fromArray(e.elements,s*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,s=0){return this.x=e[s],this.y=e[s+1],this.z=e[s+2],this}toArray(e=[],s=0){return e[s]=this.x,e[s+1]=this.y,e[s+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,s=Math.random()*2-1,o=Math.sqrt(1-s*s);return this.x=o*Math.cos(e),this.y=s,this.z=o*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};te.X_AXIS=Object.freeze(new te(1,0,0)),te.NEGATIVE_X_AXIS=Object.freeze(new te(-1,0,0)),te.Y_AXIS=Object.freeze(new te(0,1,0)),te.NEGATIVE_Y_AXIS=Object.freeze(new te(0,-1,0)),te.Z_AXIS=Object.freeze(new te(0,0,1)),te.NEGATIVE_Z_AXIS=Object.freeze(new te(0,0,-1));let Y=te;const _r=new Y,$r=new xn,kn=class kn{constructor(e,s,o,c,d,w,A,z,p,S,y,N,k,V,W,J){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!=null&&s!=null&&o!=null&&c!=null&&d!=null&&w!=null&&A!=null&&z!=null&&p!=null&&S!=null&&y!=null&&N!=null&&k!=null&&V!=null&&W!=null&&J!=null&&this.set(e,s,o,c,d,w,A,z,p,S,y,N,k,V,W,J)}set(e,s,o,c,d,w,A,z,p,S,y,N,k,V,W,J){const Z=this.elements;return Z[0]=e,Z[4]=s,Z[8]=o,Z[12]=c,Z[1]=d,Z[5]=w,Z[9]=A,Z[13]=z,Z[2]=p,Z[6]=S,Z[10]=y,Z[14]=N,Z[3]=k,Z[7]=V,Z[11]=W,Z[15]=J,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 kn().fromArray(this.elements)}copy(e){const s=this.elements,o=e.elements;return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s[4]=o[4],s[5]=o[5],s[6]=o[6],s[7]=o[7],s[8]=o[8],s[9]=o[9],s[10]=o[10],s[11]=o[11],s[12]=o[12],s[13]=o[13],s[14]=o[14],s[15]=o[15],this}copyPosition(e){const s=this.elements,o=e.elements;return s[12]=o[12],s[13]=o[13],s[14]=o[14],this}setFromMatrix3(e){const s=e.elements;return this.set(s[0],s[3],s[6],0,s[1],s[4],s[7],0,s[2],s[5],s[8],0,0,0,0,1),this}setFromExtrusionDirection(e){if(cr.equalPoint3d(e,Y.Z_AXIS))this.identity();else{const s=new Y(1,0,0);Math.abs(e.x)<1/64&&Math.abs(e.y)<1/64?s.crossVectors(Y.Y_AXIS,e).normalize():s.crossVectors(Y.Z_AXIS,e).normalize();const o=e.clone().cross(s).normalize();this.set(s.x,s.y,s.z,0,o.x,o.y,o.z,0,e.x,e.y,e.z,0,0,0,0,1)}return this}extractBasis(e,s,o){return e.setFromMatrixColumn(this,0),s.setFromMatrixColumn(this,1),o.setFromMatrixColumn(this,2),this}makeBasis(e,s,o){return this.set(e.x,s.x,o.x,0,e.y,s.y,o.y,0,e.z,s.z,o.z,0,0,0,0,1),this}extractRotation(e){const s=this.elements,o=e.elements,c=1/an.setFromMatrixColumn(e,0).length(),d=1/an.setFromMatrixColumn(e,1).length(),w=1/an.setFromMatrixColumn(e,2).length();return s[0]=o[0]*c,s[1]=o[1]*c,s[2]=o[2]*c,s[3]=0,s[4]=o[4]*d,s[5]=o[5]*d,s[6]=o[6]*d,s[7]=0,s[8]=o[8]*w,s[9]=o[9]*w,s[10]=o[10]*w,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Ai,e,Pi)}lookAt(e,s,o){const c=this.elements;return ae.subVectors(e,s),ae.lengthSq()===0&&(ae.z=1),ae.normalize(),Ve.crossVectors(o,ae),Ve.lengthSq()===0&&(Math.abs(o.z)===1?ae.x+=1e-4:ae.z+=1e-4,ae.normalize(),Ve.crossVectors(o,ae)),Ve.normalize(),Jn.crossVectors(ae,Ve),c[0]=Ve.x,c[4]=Jn.x,c[8]=ae.x,c[1]=Ve.y,c[5]=Jn.y,c[9]=ae.y,c[2]=Ve.z,c[6]=Jn.z,c[10]=ae.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,s){const o=e.elements,c=s.elements,d=this.elements,w=o[0],A=o[4],z=o[8],p=o[12],S=o[1],y=o[5],N=o[9],k=o[13],V=o[2],W=o[6],J=o[10],Z=o[14],Mt=o[3],zt=o[7],yt=o[11],X=o[15],ct=c[0],ut=c[4],Ut=c[8],jt=c[12],Rt=c[1],Kt=c[5],Qt=c[9],oe=c[13],he=c[2],ue=c[6],Ft=c[10],Xt=c[14],K=c[3],wt=c[7],Wt=c[11],ze=c[15];return d[0]=w*ct+A*Rt+z*he+p*K,d[4]=w*ut+A*Kt+z*ue+p*wt,d[8]=w*Ut+A*Qt+z*Ft+p*Wt,d[12]=w*jt+A*oe+z*Xt+p*ze,d[1]=S*ct+y*Rt+N*he+k*K,d[5]=S*ut+y*Kt+N*ue+k*wt,d[9]=S*Ut+y*Qt+N*Ft+k*Wt,d[13]=S*jt+y*oe+N*Xt+k*ze,d[2]=V*ct+W*Rt+J*he+Z*K,d[6]=V*ut+W*Kt+J*ue+Z*wt,d[10]=V*Ut+W*Qt+J*Ft+Z*Wt,d[14]=V*jt+W*oe+J*Xt+Z*ze,d[3]=Mt*ct+zt*Rt+yt*he+X*K,d[7]=Mt*ut+zt*Kt+yt*ue+X*wt,d[11]=Mt*Ut+zt*Qt+yt*Ft+X*Wt,d[15]=Mt*jt+zt*oe+yt*Xt+X*ze,this}multiplyScalar(e){const s=this.elements;return s[0]*=e,s[4]*=e,s[8]*=e,s[12]*=e,s[1]*=e,s[5]*=e,s[9]*=e,s[13]*=e,s[2]*=e,s[6]*=e,s[10]*=e,s[14]*=e,s[3]*=e,s[7]*=e,s[11]*=e,s[15]*=e,this}determinant(){const e=this.elements,s=e[0],o=e[4],c=e[8],d=e[12],w=e[1],A=e[5],z=e[9],p=e[13],S=e[2],y=e[6],N=e[10],k=e[14],V=e[3],W=e[7],J=e[11],Z=e[15];return V*(+d*z*y-c*p*y-d*A*N+o*p*N+c*A*k-o*z*k)+W*(+s*z*k-s*p*N+d*w*N-c*w*k+c*p*S-d*z*S)+J*(+s*p*y-s*A*k-d*w*y+o*w*k+d*A*S-o*p*S)+Z*(-c*A*S-s*z*y+s*A*N+c*w*y-o*w*N+o*z*S)}transpose(){const e=this.elements;let s;return s=e[1],e[1]=e[4],e[4]=s,s=e[2],e[2]=e[8],e[8]=s,s=e[6],e[6]=e[9],e[9]=s,s=e[3],e[3]=e[12],e[12]=s,s=e[7],e[7]=e[13],e[13]=s,s=e[11],e[11]=e[14],e[14]=s,this}setPosition(e,s,o){const c=this.elements;return e instanceof Y?(c[12]=e.x,c[13]=e.y,c[14]=e.z):(c[12]=e,c[13]=s,c[14]=o),this}invert(){const e=this.elements,s=e[0],o=e[1],c=e[2],d=e[3],w=e[4],A=e[5],z=e[6],p=e[7],S=e[8],y=e[9],N=e[10],k=e[11],V=e[12],W=e[13],J=e[14],Z=e[15],Mt=y*J*p-W*N*p+W*z*k-A*J*k-y*z*Z+A*N*Z,zt=V*N*p-S*J*p-V*z*k+w*J*k+S*z*Z-w*N*Z,yt=S*W*p-V*y*p+V*A*k-w*W*k-S*A*Z+w*y*Z,X=V*y*z-S*W*z-V*A*N+w*W*N+S*A*J-w*y*J,ct=s*Mt+o*zt+c*yt+d*X;if(ct===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const ut=1/ct;return e[0]=Mt*ut,e[1]=(W*N*d-y*J*d-W*c*k+o*J*k+y*c*Z-o*N*Z)*ut,e[2]=(A*J*d-W*z*d+W*c*p-o*J*p-A*c*Z+o*z*Z)*ut,e[3]=(y*z*d-A*N*d-y*c*p+o*N*p+A*c*k-o*z*k)*ut,e[4]=zt*ut,e[5]=(S*J*d-V*N*d+V*c*k-s*J*k-S*c*Z+s*N*Z)*ut,e[6]=(V*z*d-w*J*d-V*c*p+s*J*p+w*c*Z-s*z*Z)*ut,e[7]=(w*N*d-S*z*d+S*c*p-s*N*p-w*c*k+s*z*k)*ut,e[8]=yt*ut,e[9]=(V*y*d-S*W*d-V*o*k+s*W*k+S*o*Z-s*y*Z)*ut,e[10]=(w*W*d-V*A*d+V*o*p-s*W*p-w*o*Z+s*A*Z)*ut,e[11]=(S*A*d-w*y*d-S*o*p+s*y*p+w*o*k-s*A*k)*ut,e[12]=X*ut,e[13]=(S*W*c-V*y*c+V*o*N-s*W*N-S*o*J+s*y*J)*ut,e[14]=(V*A*c-w*W*c-V*o*z+s*W*z+w*o*J-s*A*J)*ut,e[15]=(w*y*c-S*A*c+S*o*z-s*y*z-w*o*N+s*A*N)*ut,this}scale(e){const s=this.elements,o=e.x,c=e.y,d=e.z;return s[0]*=o,s[4]*=c,s[8]*=d,s[1]*=o,s[5]*=c,s[9]*=d,s[2]*=o,s[6]*=c,s[10]*=d,s[3]*=o,s[7]*=c,s[11]*=d,this}getMaxScaleOnAxis(){const e=this.elements,s=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],o=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],c=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(s,o,c))}makeTranslation(e,s,o){return e instanceof Y?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,s,0,0,1,o,0,0,0,1),this}makeRotationX(e){const s=Math.cos(e),o=Math.sin(e);return this.set(1,0,0,0,0,s,-o,0,0,o,s,0,0,0,0,1),this}makeRotationY(e){const s=Math.cos(e),o=Math.sin(e);return this.set(s,0,o,0,0,1,0,0,-o,0,s,0,0,0,0,1),this}makeRotationZ(e){const s=Math.cos(e),o=Math.sin(e);return this.set(s,-o,0,0,o,s,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,s){const o=Math.cos(s),c=Math.sin(s),d=1-o,w=e.x,A=e.y,z=e.z,p=d*w,S=d*A;return this.set(p*w+o,p*A-c*z,p*z+c*A,0,p*A+c*z,S*A+o,S*z-c*w,0,p*z-c*A,S*z+c*w,d*z*z+o,0,0,0,0,1),this}makeScale(e,s,o){return this.set(e,0,0,0,0,s,0,0,0,0,o,0,0,0,0,1),this}makeShear(e,s,o,c,d,w){return this.set(1,o,d,0,e,1,w,0,s,c,1,0,0,0,0,1),this}compose(e,s,o){const c=this.elements,d=s.x,w=s.y,A=s.z,z=s.w,p=d+d,S=w+w,y=A+A,N=d*p,k=d*S,V=d*y,W=w*S,J=w*y,Z=A*y,Mt=z*p,zt=z*S,yt=z*y,X=o.x,ct=o.y,ut=o.z;return c[0]=(1-(W+Z))*X,c[1]=(k+yt)*X,c[2]=(V-zt)*X,c[3]=0,c[4]=(k-yt)*ct,c[5]=(1-(N+Z))*ct,c[6]=(J+Mt)*ct,c[7]=0,c[8]=(V+zt)*ut,c[9]=(J-Mt)*ut,c[10]=(1-(N+W))*ut,c[11]=0,c[12]=e.x,c[13]=e.y,c[14]=e.z,c[15]=1,this}decompose(e,s,o){const c=this.elements;let d=an.set(c[0],c[1],c[2]).length();const w=an.set(c[4],c[5],c[6]).length(),A=an.set(c[8],c[9],c[10]).length();this.determinant()<0&&(d=-d),e.x=c[12],e.y=c[13],e.z=c[14],pe.copy(this);const p=1/d,S=1/w,y=1/A;return pe.elements[0]*=p,pe.elements[1]*=p,pe.elements[2]*=p,pe.elements[4]*=S,pe.elements[5]*=S,pe.elements[6]*=S,pe.elements[8]*=y,pe.elements[9]*=y,pe.elements[10]*=y,s.setFromRotationMatrix(pe),o.x=d,o.y=w,o.z=A,this}equals(e){const s=this.elements,o=e.elements;for(let c=0;c<16;c++)if(s[c]!==o[c])return!1;return!0}fromArray(e,s=0){for(let o=0;o<16;o++)this.elements[o]=e[o+s];return this}toArray(e=[],s=0){const o=this.elements;return e[s]=o[0],e[s+1]=o[1],e[s+2]=o[2],e[s+3]=o[3],e[s+4]=o[4],e[s+5]=o[5],e[s+6]=o[6],e[s+7]=o[7],e[s+8]=o[8],e[s+9]=o[9],e[s+10]=o[10],e[s+11]=o[11],e[s+12]=o[12],e[s+13]=o[13],e[s+14]=o[14],e[s+15]=o[15],e}};kn.IDENTITY=Object.freeze(new kn);let sn=kn;const an=new Y,pe=new sn,Ai=new Y(0,0,0),Pi=new Y(1,1,1),Ve=new Y,Jn=new Y,ae=new Y;class De{constructor(e=void 0,s=void 0){this.min=e==null?new Y(1/0,1/0,1/0):new Y(e.x,e.y,e.z),this.max=s==null?new Y(-1/0,-1/0,-1/0):new Y(s.x,s.y,s.z)}set(e,s){return this.min.copy(e),this.max.copy(s),this}setFromArray(e){this.makeEmpty();for(let s=0,o=e.length;s<o;s+=3)this.expandByPoint(dr.fromArray(e,s));return this}setFromPoints(e){this.makeEmpty();for(let s=0,o=e.length;s<o;s++)this.expandByPoint(e[s]);return this}setFromCenterAndSize(e,s){const o=dr.copy(s).multiplyScalar(.5);return this.min.copy(e).sub(o),this.max.copy(e).add(o),this}clone(){return new De().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.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(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new Y(0,0,0):new Y(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Y(0,0,0):new Y(0,0,0).subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,s){return s.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}intersectsPlane(e){let s,o;return e.normal.x>0?(s=e.normal.x*this.min.x,o=e.normal.x*this.max.x):(s=e.normal.x*this.max.x,o=e.normal.x*this.min.x),e.normal.y>0?(s+=e.normal.y*this.min.y,o+=e.normal.y*this.max.y):(s+=e.normal.y*this.max.y,o+=e.normal.y*this.min.y),e.normal.z>0?(s+=e.normal.z*this.min.z,o+=e.normal.z*this.max.z):(s+=e.normal.z*this.max.z,o+=e.normal.z*this.min.z),s<=-e.constant&&o>=-e.constant}clampPoint(e,s){return s.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,dr).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Be[0].set(this.min.x,this.min.y,this.min.z).applyMatrix3d(e),Be[1].set(this.min.x,this.min.y,this.max.z).applyMatrix3d(e),Be[2].set(this.min.x,this.max.y,this.min.z).applyMatrix3d(e),Be[3].set(this.min.x,this.max.y,this.max.z).applyMatrix3d(e),Be[4].set(this.max.x,this.min.y,this.min.z).applyMatrix3d(e),Be[5].set(this.max.x,this.min.y,this.max.z).applyMatrix3d(e),Be[6].set(this.max.x,this.max.y,this.min.z).applyMatrix3d(e),Be[7].set(this.max.x,this.max.y,this.max.z).applyMatrix3d(e),this.setFromPoints(Be),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Be=[new Y,new Y,new Y,new Y,new Y,new Y,new Y,new Y],dr=new Y,ti=new Nt;class de{constructor(e=void 0,s=void 0){this.min=e==null?new Nt(1/0,1/0):new Nt(e.x,e.y),this.max=s==null?new Nt(-1/0,-1/0):new Nt(s.x,s.y)}set(e,s){return this.min.copy(e),this.max.copy(s),this}setFromPoints(e){this.makeEmpty();for(let s=0,o=e.length;s<o;s++)this.expandByPoint(e[s]);return this}setFromCenterAndSize(e,s){const o=ti.copy(s).multiplyScalar(.5);return this.min.copy(e).sub(o),this.max.copy(e).add(o),this}clone(){return new de().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.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(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new Nt(0,0):new Nt(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Nt(0,0):new Nt(0,0).subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,s){return s.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}clampPoint(e,s){return s.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,ti).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const ei=new Y,zi=new Y,Si=new rn;class Mn{constructor(e=new Y(1,0,0),s=0){this.normal=e,this.constant=s}set(e,s){return this.normal.copy(e),this.constant=s,this}setComponents(e,s,o,c){return this.normal.set(e,s,o),this.constant=c,this}setFromNormalAndCoplanarPoint(e,s){return this.normal.copy(e),this.constant=-s.dot(this.normal),this}setFromCoplanarPoints(e,s,o){const c=ei.subVectors(o,s).cross(zi.subVectors(e,s)).normalize();return this.setFromNormalAndCoplanarPoint(c,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}projectPoint(e,s){return s.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectsBox(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,s){const o=s||Si.getNormalMatrix(e),c=this.coplanarPoint(ei).applyMatrix3d(e),d=this.normal.applyMatrix3(o).normalize();return this.constant=-c.dot(d),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new Mn().copy(this)}}class Bt extends Nt{static pointArrayToNumberArray(e){const s=new Array(e.length*2);return e.forEach((o,c)=>{o.toArray(s,c*2)}),s}}class Dt extends Y{static pointArrayToNumberArray(e,s=!0){const o=s?3:2,c=new Array(e.length*o);return e.forEach((d,w)=>{d.toArray(c,w*o)}),c}}const ni=new sn,ri=new xn,In=class In{constructor(e=0,s=0,o=0,c=In.DEFAULT_ORDER){this._x=e,this._y=s,this._z=o,this._order=c}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,s,o,c=this._order){return this._x=e,this._y=s,this._z=o,this._order=c,this._onChangeCallback(),this}clone(){return new In(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,s=this._order,o=!0){const c=e.elements,d=c[0],w=c[4],A=c[8],z=c[1],p=c[5],S=c[9],y=c[2],N=c[6],k=c[10];switch(s){case"XYZ":this._y=Math.asin(Ne(A,-1,1)),Math.abs(A)<.9999999?(this._x=Math.atan2(-S,k),this._z=Math.atan2(-w,d)):(this._x=Math.atan2(N,p),this._z=0);break;case"YXZ":this._x=Math.asin(-Ne(S,-1,1)),Math.abs(S)<.9999999?(this._y=Math.atan2(A,k),this._z=Math.atan2(z,p)):(this._y=Math.atan2(-y,d),this._z=0);break;case"ZXY":this._x=Math.asin(Ne(N,-1,1)),Math.abs(N)<.9999999?(this._y=Math.atan2(-y,k),this._z=Math.atan2(-w,p)):(this._y=0,this._z=Math.atan2(z,d));break;case"ZYX":this._y=Math.asin(-Ne(y,-1,1)),Math.abs(y)<.9999999?(this._x=Math.atan2(N,k),this._z=Math.atan2(z,d)):(this._x=0,this._z=Math.atan2(-w,p));break;case"YZX":this._z=Math.asin(Ne(z,-1,1)),Math.abs(z)<.9999999?(this._x=Math.atan2(-S,p),this._y=Math.atan2(-y,d)):(this._x=0,this._y=Math.atan2(A,k));break;case"XZY":this._z=Math.asin(-Ne(w,-1,1)),Math.abs(w)<.9999999?(this._x=Math.atan2(N,p),this._y=Math.atan2(A,d)):(this._x=Math.atan2(-S,k),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+s)}return this._order=s,o===!0&&this._onChangeCallback(),this}setFromQuaternion(e,s,o=!0){return ni.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ni,s,o)}setFromVector3(e,s=this._order){return this.set(e.x,e.y,e.z,s)}reorder(e){return ri.setFromEuler(this),this.setFromQuaternion(ri,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],s=0){return e[s]=this._x,e[s+1]=this._y,e[s+2]=this._z,e[s+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};In.DEFAULT_ORDER="XYZ";let fr=In;class ii{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class mr extends ii{translate(e){return this.transform(new rn().makeTranslation(e.x,e.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Ci extends mr{constructor(){super(),this._loops=[]}add(e){this._loops.push(e),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const e=this.outter;return e?e.box:new de}transform(e){return this._boundingBoxNeedsUpdate=!0,this}getPoints(e){const s=[];for(let o=0;o<this.loops.length;++o){const d=this.loops[o].getPoints(e);s.push(d)}return s}buildHierarchy(){var A;const e=this.getPoints(100),s=this.calculateBoundaryBoxes(e),o=this.sortBoundaryBoxesByAreas(s),c=new Map,d=o.length;for(let z=0;z<d;z++)c.set(o[z],{index:o[z],children:[]});const w={index:-1,children:[]};for(let z=0;z<d;z++){const p=o[z],S=e[p],y=s[p];let N=z+1;for(;N<d;N++){const k=o[N],V=e[k];if(s[k].containsBox(y)&&Jr.isPointInPolygon(S[Tt.randInt(0,S.length-1)],V)){(A=c.get(k))==null||A.children.push(c.get(p));break}}N===d&&w.children.push(c.get(p))}return w}calculateBoundaryBoxes(e){const s=[];return e.forEach(o=>{s.push(new de().setFromPoints(o))}),s}sortBoundaryBoxesByAreas(e){const s=[];e.forEach((c,d)=>{const w=c.size,A=w.width*w.height;s.push({area:A,index:d})}),s.sort((c,d)=>c.area-d.area);const o=[];return s.forEach(c=>{o.push(c.index)}),o}}class on extends mr{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(e){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(e){const s=this.getUtoTmapping(e);return this.getPoint(s)}getPoints(e=5){const s=[];for(let o=0;o<=e;o++)s.push(this.getPoint(o/e));return s}getSpacedPoints(e=5){const s=[];for(let o=0;o<=e;o++)s.push(this.getPointAt(o/e));return s}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){const s=[];let o,c=this.getPoint(0),d=0;s.push(0);for(let w=1;w<=e;w++)o=this.getPoint(w/e),d+=o.distanceTo(c),s.push(d),c=o;return s}getUtoTmapping(e,s){const o=this.getLengths();let c=0;const d=o.length;let w;s?w=s:w=e*o[d-1];let A=0,z=d-1,p;for(;A<=z;)if(c=Math.floor(A+(z-A)/2),p=o[c]-w,p<0)A=c+1;else if(p>0)z=c-1;else{z=c;break}if(c=z,o[c]===w)return c/(d-1);const S=o[c],N=o[c+1]-S,k=(w-S)/N;return(c+k)/(d-1)}getTangent(e){let o=e-1e-4,c=e+1e-4;o<0&&(o=0),c>1&&(c=1);const d=this.getPoint(o),w=this.getPoint(c),A=new Bt;return A.copy(w).sub(d).normalize(),A}getTangentAt(e){const s=this.getUtoTmapping(e);return this.getTangent(s)}}class An extends on{constructor(e,s,o,c,d){super();const w=+(e!==void 0)+ +(s!==void 0)+ +(o!==void 0)+ +(c!==void 0)+ +(d!==void 0);if(w==3)typeof e=="object"&&typeof s=="object"&&typeof o=="object"?this.createByThreePoints(e,s,o):this.createByStartEndPointsAndBulge(e,s,o);else if(w==5){const A=e;this.center=new Bt(A.x,A.y),this.radius=s,this.startAngle=o,this.endAngle=c,this.clockwise=d}else throw se.AcCmErrors.ILLEGAL_PARAMETERS}createByThreePoints(e,s,o){const c=(ut,Ut)=>({x:(ut.x+Ut.x)/2,y:(ut.y+Ut.y)/2}),d=(ut,Ut)=>(Ut.y-ut.y)/(Ut.x-ut.x),w=ut=>-1/ut,A=c(e,s),z=c(s,o),p=d(e,s),S=d(s,o),y=w(p),N=w(S),k=(ut,Ut,jt,Rt)=>{const Kt=(Rt-Ut)/(ut-jt),Qt=ut*Kt+Ut;return{x:Kt,y:Qt}},V=A.y-y*A.x,W=z.y-N*z.x,J=k(y,V,N,W),Z=Math.sqrt(Math.pow(e.x-J.x,2)+Math.pow(e.y-J.y,2)),Mt=(ut,Ut)=>Math.atan2(ut.y-Ut.y,ut.x-Ut.x),zt=Mt(e,J),yt=Mt(s,J),X=Mt(o,J),ct=X>zt&&X<yt||zt>X&&zt<yt||yt>X&&yt<zt;this.center=J,this.radius=Z,this.startAngle=zt,this.endAngle=X,this.clockwise=!ct}createByStartEndPointsAndBulge(e,s,o){let c,d,w;o<0?(c=Math.atan(-o)*4,d=new Nt(e),w=new Nt(s)):(c=Math.atan(o)*4,d=new Nt(s),w=new Nt(e));const A=new Nt().subVectors(w,d),z=A.length(),p=new Nt().addVectors(d,A.multiplyScalar(.5)),S=Math.abs(z/2/Math.tan(c/2)),y=A.normalize();let N;if(c<Math.PI){const k=new Nt(y.x*Math.cos(Math.PI/2)-y.y*Math.sin(Math.PI/2),y.y*Math.cos(Math.PI/2)+y.x*Math.sin(Math.PI/2));N=p.add(k.multiplyScalar(-S))}else{const k=new Nt(y.x*Math.cos(Math.PI/2)-y.y*Math.sin(Math.PI/2),y.y*Math.cos(Math.PI/2)+y.x*Math.sin(Math.PI/2));N=p.add(k.multiplyScalar(S))}o<0?(this.startAngle=Math.atan2(d.y-N.y,d.x-N.x),this.endAngle=Math.atan2(w.y-N.y,w.x-N.x)):(this.startAngle=Math.atan2(w.y-N.y,w.x-N.x),this.endAngle=Math.atan2(d.y-N.y,d.x-N.x)),this.clockwise=o<0,this.center=N,this.radius=w.sub(N).length()}get center(){return this._center}set center(e){this._center=new Bt(e.x,e.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(e){this._radius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Ht?e:Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return this.clockwise?Tt.normalizeAngle(this.startAngle-this.endAngle):Tt.normalizeAngle(this.endAngle-this.startAngle)}get clockwise(){return this._clockwise}set clockwise(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const e=Tt.normalizeAngle((this.startAngle+this.endAngle)/2);return this.getPointAtAngle(e)}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}calculateBoundingBox(){const e=[this.startPoint,this.endPoint],s=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const d of s)Tt.isBetweenAngle(d,this.startAngle,this.endAngle,this.clockwise)&&e.push(this.getPointAtAngle(d));const o=e.map(d=>d.x),c=e.map(d=>d.y);return new de(new Bt(Math.min(...o),Math.min(...c)),new Bt(Math.max(...o),Math.max(...c)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}clone(){return new An(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.clockwise)}getPointAtAngle(e){const s=this.center.x+this.radius*Math.cos(e),o=this.center.y+this.radius*Math.sin(e);return new Bt(s,o)}getPoints(e=100){const s=[];let o=this.deltaAngle,c=this.startAngle;if(this.closed&&(o=Ht,c=0),this.clockwise)for(let d=0;d<=e;d++){const w=c-o*(d/e),A=this.getPointAtAngle(w);s.push(new Bt(A.x,A.y))}else for(let d=0;d<=e;d++){const w=c+o*(d/e),A=this.getPointAtAngle(w);s.push(new Bt(A.x,A.y))}return s}}class ki extends ii{translate(e){return this.transform(new sn().makeTranslation(e.x,e.y,e.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class $n extends ki{}class Pn extends $n{constructor(e,s){super(),this._start=new Dt(e),this._end=new Dt(s)}get startPoint(){return this._start}set startPoint(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0}get direction(){return new Y().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new Dt((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(e){return this.project(e).distanceTo(e)<1e-6}at(e,s){return this.delta(s).multiplyScalar(e).add(this._start)}atLength(e,s=!1){if(s){const o=this.delta(Qe).normalize();return new Dt(this._start).addScaledVector(o,e)}else{const o=this.delta(Qe).normalize();return new Dt(this._end).addScaledVector(o,e)}}extend(e,s=!1){if(s){const o=Qe.subVectors(this._start,this._end).normalize();this._start=new Dt(this._start).addScaledVector(o,e)}else{const o=this.delta(Qe).normalize();this._end=new Dt(this._end).addScaledVector(o,e)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(e,s){si.subVectors(e,this._start),tr.subVectors(this.endPoint,this.startPoint);const o=tr.dot(tr);let d=tr.dot(si)/o;return s&&(d=Tt.clamp(d,0,1)),d}closestPointToPoint(e,s,o){const c=this.closestPointToPointParameter(e,s);return this.delta(o).multiplyScalar(c).add(this._start)}delta(e){return e.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(e){const s=this.direction,c=Qe.subVectors(e,this.startPoint).dot(s);return new Dt().copy(s).multiplyScalar(c).add(this.startPoint)}perpPoint(e){const s=this.direction,o=this.startPoint,d=Qe.subVectors(e,o).dot(s),w=Qe.copy(s).multiplyScalar(d);return new Dt().addVectors(o,w)}calculateBoundingBox(){const e=new Dt(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),s=new Dt(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 De(e,s)}transform(e){return this._start.applyMatrix3d(e),this._end.applyMatrix3d(e),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Pn(this._start.clone(),this._end.clone())}}const Qe=new Y,si=new Y,tr=new Y;class zn extends $n{static computeCenterPoint(e,s,o){const c=new Y().addVectors(e,s).multiplyScalar(.5),d=new Y().addVectors(e,o).multiplyScalar(.5),w=new Y().subVectors(s,e),A=new Y().subVectors(o,e),z=new Y().crossVectors(w,A).normalize();if(z.lengthSq()===0)return console.error("Points are collinear and cannot form a valid arc."),null;const p=new Y().crossVectors(w,z).normalize(),S=new Y().crossVectors(A,z).normalize(),y=p.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),N=S.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),k=new Pn(c,c.clone().add(y)),V=new Pn(d,d.clone().add(N)),W=new Y;return k.closestPointToPoint(V.startPoint,!0,W)?W:(console.error("Cannot find a valid center for the arc."),null)}static createByThreePoints(e,s,o){const c=zn.computeCenterPoint(e,s,o);if(c){const d=c.distanceTo(e),w=new Y().subVectors(e,c),A=new Y().subVectors(s,c),z=Math.atan2(w.y,w.x),p=Math.atan2(A.y,A.x);return new zn(c,d,z,p,Y.Z_AXIS)}}constructor(e,s,o,c,d,w=Y.X_AXIS){super(),this.center=e,this.radius=s,this.startAngle=o,this.endAngle=c,this.normal=d,this.refVec=w,(c-o)%Ht==0?(this.startAngle=0,this.endAngle=Ht):(this.startAngle=o,this.endAngle=c)}get center(){return this._center}set center(e){this._center=new Dt(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(e){if(e<0)throw se.AcCmErrors.ILLEGAL_PARAMETERS;this._radius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Ht?e:Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Tt.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(e){this._normal=new Y(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(e){this._refVec=new Y(e.x,e.y,e.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get length(){return Math.abs(this.deltaAngle*this.radius)}calculateBoundingBox(){const e=[this.startAngle,this.endAngle];for(let z=0;z<2*Math.PI;z+=Math.PI/2)Tt.isBetweenAngle(z,this.startAngle,this.endAngle)&&e.push(z);let s=1/0,o=1/0,c=1/0,d=-1/0,w=-1/0,A=-1/0;for(const z of e){const p=this.getPointAtAngle(z);p.x<s&&(s=p.x),p.y<o&&(o=p.y),p.z<c&&(c=p.z),p.x>d&&(d=p.x),p.y>w&&(w=p.y),p.z>A&&(A=p.z)}return new De({x:s,y:o,z:c},{x:d,y:w,z:A})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(e){const s=[];let o=this.deltaAngle,c=this.startAngle;this.closed&&(o=Ht,c=0);for(let d=0;d<=e;d++){const w=c+o*(d/e),A=this.getPointAtAngle(w);s.push(A)}return s}transform(e){const s=gr.copy(this.refVec).applyAxisAngle(this.normal,this.startAngle).multiplyScalar(this.radius),o=gr.copy(this.refVec).applyAxisAngle(this.normal,this.endAngle).multiplyScalar(this.radius);return this.center.applyMatrix3d(e),s.applyMatrix3d(e),o.applyMatrix3d(e),this.normal.applyMatrix3d(e).normalize(),this.refVec.applyMatrix3d(e).normalize(),this.startAngle=this.getAngle(s),this.endAngle=this.getAngle(o),this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.radius=e.radius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.normal=e.normal,this.refVec=e.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new zn(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(e){return e.sub(this.center),Math.atan2(e.dot(gr.crossVectors(this.refVec,this.normal)),e.dot(this.refVec))}getPointAtAngle(e){const s=this.normal,o=this.refVec,c={x:s.y*o.z-s.z*o.y,y:s.z*o.x-s.x*o.z,z:s.x*o.y-s.y*o.x},d=this.center,w=this.radius;return new Dt(d.x+w*(o.x*Math.cos(e)+c.x*Math.sin(e)),d.y+w*(o.y*Math.cos(e)+c.y*Math.sin(e)),d.z+w*(o.z*Math.cos(e)+c.z*Math.sin(e)))}get plane(){const e=new Y(this.center).distanceTo(lr);return new Mn(this.normal,e)}}const gr=new Y;class pr extends on{constructor(e,s,o,c=0,d=Ht,w=!1,A=0){super(),this.center=e,this.majorAxisRadius=s,this.minorAxisRadius=o,(d-c)%Ht==0?(this.startAngle=0,this.endAngle=Ht):(this.startAngle=c,this.endAngle=d),this.clockwise=w,this.rotation=A}get center(){return this._center}set center(e){this._center=new Dt(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(e){if(e<0)throw se.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(e){if(e<0)throw se.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Ht?e:Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Tt.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let s=1/0,o=1/0,c=-1/0,d=-1/0;for(let w=0;w<=100;w++){const A=this.getPoint(w/100);s=Math.min(s,A.x),o=Math.min(o,A.y),c=Math.max(c,A.x),d=Math.max(d,A.y)}return new de({x:s,y:o},{x:c,y:d})}get closed(){return this.deltaAngle==0}getPoint(e){const s=Math.PI*2;let o=this.endAngle-this.startAngle;const c=Math.abs(o)<Number.EPSILON;for(;o<0;)o+=s;for(;o>s;)o-=s;o<Number.EPSILON&&(c?o=0:o=s),this.clockwise===!0&&!c&&(o===s?o=-s:o=o-s);const d=this.startAngle+e*o;let w=this.center.x+this.majorAxisRadius*Math.cos(d),A=this.center.y+this.minorAxisRadius*Math.sin(d);if(this.rotation!==0){const z=Math.cos(this.rotation),p=Math.sin(this.rotation),S=w-this.center.x,y=A-this.center.y;w=S*z-y*p+this.center.x,A=S*p+y*z+this.center.y}return new Bt(w,A)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.clockwise=e.clockwise,this.rotation=e.rotation,this}clone(){return new pr(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}}function Ii(L){return L&&L.__esModule&&Object.prototype.hasOwnProperty.call(L,"default")?L.default:L}var ai={exports:{}};(function(L,e){(function(s){L.exports=s()})(function(){var s={},o=this;new Function("try {return this===window;}catch(e){ return false;}");var c=new Function("try {return this===global;}catch(e){return false;}"),d=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(c()&&d(),c()||d()){var w=o;if(d()){var A=function(z,p){var S=o;return z.split(".").forEach(function(y){S&&(S=S[y])}),S?S[p]:null};onmessage=function(z){if(!(!z.data.className||!z.data.methodName)){var p=A(z.data.className,z.data.methodName);if(!p)return console.error("could not find "+z.data.className+"."+z.data.methodName);postMessage({result:p.apply(null,z.data.args),id:z.data.id})}}}}return function(z,p,S){p.geom=p.geom||{},p.exe=p.exe||{},p.eval=p.eval||{},p.core=p.core||{},p.promhx=p.promhx||{};var y={},N=function(){return wt.__string_rec(this,"")};function k(t,n){function r(){}r.prototype=t;var i=new r;for(var a in n)i[a]=n[a];return n.toString!==Object.prototype.toString&&(i.toString=n.toString),i}var V=function(){};y.HxOverrides=V,V.__name__=["HxOverrides"],V.strDate=function(t){var n=t.length;switch(n){case 8:var r=t.split(":"),i=new Date;return i.setTime(0),i.setUTCHours(r[0]),i.setUTCMinutes(r[1]),i.setUTCSeconds(r[2]),i;case 10:var a=t.split("-");return new Date(a[0],a[1]-1,a[2],0,0,0);case 19:var h=t.split(" "),l=h[0].split("-"),v=h[1].split(":");return new Date(l[0],l[1]-1,l[2],v[0],v[1],v[2]);default:throw new K("Invalid date format : "+t)}},V.cca=function(t,n){var r=t.charCodeAt(n);if(r==r)return r},V.substr=function(t,n,r){return n!=null&&n!=0&&r!=null&&r<0?"":(r==null&&(r=t.length),n<0?(n=t.length+n,n<0&&(n=0)):r<0&&(r=t.length+r-n),t.substr(n,r))},V.iter=function(t){return{cur:0,arr:t,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var W=function(){};y.Lambda=W,W.__name__=["Lambda"],W.fold=function(t,n,r){for(var i=be(t)();i.hasNext();){var a=i.next();r=n(a,r)}return r};var J=function(){this.length=0};y.List=J,J.__name__=["List"],J.prototype={add:function(t){var n=[t];this.h==null?this.h=n:this.q[1]=n,this.q=n,this.length++},pop:function(){if(this.h==null)return null;var t=this.h[0];return this.h=this.h[1],this.h==null&&(this.q=null),this.length--,t},isEmpty:function(){return this.h==null},__class__:J},Math.__name__=["Math"];var Z=function(){};y.Reflect=Z,Z.__name__=["Reflect"],Z.field=function(t,n){try{return t[n]}catch(r){return r instanceof K&&(r=r.val),null}},Z.callMethod=function(t,n,r){return n.apply(t,r)},Z.fields=function(t){var n=[];if(t!=null){var r=Object.prototype.hasOwnProperty;for(var i in t)i!="__id__"&&i!="hx__closures__"&&r.call(t,i)&&n.push(i)}return n},Z.isFunction=function(t){return typeof t=="function"&&!(t.__name__||t.__ename__)},Z.deleteField=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)?(delete t[n],!0):!1};var Mt=function(){};y.Std=Mt,Mt.__name__=["Std"],Mt.string=function(t){return wt.__string_rec(t,"")},Mt.parseFloat=function(t){return parseFloat(t)};var zt=function(){this.b=""};y.StringBuf=zt,zt.__name__=["StringBuf"],zt.prototype={add:function(t){this.b+=Mt.string(t)},__class__:zt};var yt=function(){};y.StringTools=yt,yt.__name__=["StringTools"],yt.fastCodeAt=function(t,n){return t.charCodeAt(n)};var X=y.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};X.TNull=["TNull",0],X.TNull.toString=N,X.TNull.__enum__=X,X.TInt=["TInt",1],X.TInt.toString=N,X.TInt.__enum__=X,X.TFloat=["TFloat",2],X.TFloat.toString=N,X.TFloat.__enum__=X,X.TBool=["TBool",3],X.TBool.toString=N,X.TBool.__enum__=X,X.TObject=["TObject",4],X.TObject.toString=N,X.TObject.__enum__=X,X.TFunction=["TFunction",5],X.TFunction.toString=N,X.TFunction.__enum__=X,X.TClass=function(t){var n=["TClass",6,t];return n.__enum__=X,n.toString=N,n},X.TEnum=function(t){var n=["TEnum",7,t];return n.__enum__=X,n.toString=N,n},X.TUnknown=["TUnknown",8],X.TUnknown.toString=N,X.TUnknown.__enum__=X;var ct=function(){};y.Type=ct,ct.__name__=["Type"],ct.getClassName=function(t){var n=t.__name__;return n==null?null:n.join(".")},ct.getEnumName=function(t){var n=t.__ename__;return n.join(".")},ct.resolveClass=function(t){var n=y[t];return n==null||!n.__name__?null:n},ct.resolveEnum=function(t){var n=y[t];return n==null||!n.__ename__?null:n},ct.createEmptyInstance=function(t){function n(){}return n.prototype=t.prototype,new n},ct.createEnum=function(t,n,r){var i=Z.field(t,n);if(i==null)throw new K("No such constructor "+n);if(Z.isFunction(i)){if(r==null)throw new K("Constructor "+n+" need parameters");return Z.callMethod(t,i,r)}if(r!=null&&r.length!=0)throw new K("Constructor "+n+" does not need parameters");return i},ct.getEnumConstructs=function(t){var n=t.__constructs__;return n.slice()},ct.typeof=function(t){var n=typeof t;switch(n){case"boolean":return X.TBool;case"string":return X.TClass(String);case"number":return Math.ceil(t)==t%2147483648?X.TInt:X.TFloat;case"object":if(t==null)return X.TNull;var r=t.__enum__;if(r!=null)return X.TEnum(r);var i=wt.getClass(t);return i!=null?X.TClass(i):X.TObject;case"function":return t.__name__||t.__ename__?X.TObject:X.TFunction;case"undefined":return X.TNull;default:return X.TUnknown}};var ut=function(){};y["haxe.IMap"]=ut,ut.__name__=["haxe","IMap"];var Ut=function(t,n){this.high=t,this.low=n};y["haxe._Int64.___Int64"]=Ut,Ut.__name__=["haxe","_Int64","___Int64"],Ut.prototype={__class__:Ut};var jt=function(){this.buf=new zt,this.cache=[],this.useCache=jt.USE_CACHE,this.useEnumIndex=jt.USE_ENUM_INDEX,this.shash=new he,this.scount=0};y["haxe.Serializer"]=jt,jt.__name__=["haxe","Serializer"],jt.prototype={toString:function(){return this.buf.b},serializeString:function(t){var n=this.shash.get(t);if(n!=null){this.buf.b+="R",n==null?this.buf.b+="null":this.buf.b+=""+n;return}this.shash.set(t,this.scount++),this.buf.b+="y",t=encodeURIComponent(t),t.length==null?this.buf.b+="null":this.buf.b+=""+t.length,this.buf.b+=":",t==null?this.buf.b+="null":this.buf.b+=""+t},serializeRef:function(t){for(var n=typeof t,r=0,i=this.cache.length;r<i;){var a=r++,h=this.cache[a];if(typeof h==n&&h==t)return this.buf.b+="r",a==null?this.buf.b+="null":this.buf.b+=""+a,!0}return this.cache.push(t),!1},serializeFields:function(t){for(var n=0,r=Z.fields(t);n<r.length;){var i=r[n];++n,this.serializeString(i),this.serialize(Z.field(t,i))}this.buf.b+="g"},serialize:function(t){{var n=ct.typeof(t);switch(n[1]){case 0:this.buf.b+="n";break;case 1:var r=t;if(r==0){this.buf.b+="z";return}this.buf.b+="i",r==null?this.buf.b+="null":this.buf.b+=""+r;break;case 2:var i=t;isNaN(i)?this.buf.b+="k":isFinite(i)?(this.buf.b+="d",i==null?this.buf.b+="null":this.buf.b+=""+i):i<0?this.buf.b+="m":this.buf.b+="p";break;case 3:t?this.buf.b+="t":this.buf.b+="f";break;case 6:var a=n[2];if(a==String){this.serializeString(t);return}if(this.useCache&&this.serializeRef(t))return;switch(a){case Array:var h=0;this.buf.b+="a";for(var l=t.length,v=0;v<l;){var _=v++;t[_]==null?h++:(h>0&&(h==1?this.buf.b+="n":(this.buf.b+="u",h==null?this.buf.b+="null":this.buf.b+=""+h),h=0),this.serialize(t[_]))}h>0&&(h==1?this.buf.b+="n":(this.buf.b+="u",h==null?this.buf.b+="null":this.buf.b+=""+h)),this.buf.b+="h";break;case J:this.buf.b+="l";for(var f=t,g=f.h,m=null;g!=null;){var b;m=g[0],g=g[1],b=m,this.serialize(b)}this.buf.b+="h";break;case Date:var x=t;this.buf.b+="v",this.buf.add(x.getTime());break;case he:this.buf.b+="b";for(var M=t,I=M.keys();I.hasNext();){var C=I.next();this.serializeString(C),this.serialize(Ar[C]!=null?M.getReserved(C):M.h[C])}this.buf.b+="h";break;case Kt:this.buf.b+="q";for(var B=t,E=B.keys();E.hasNext();){var T=E.next();this.buf.b+=":",T==null?this.buf.b+="null":this.buf.b+=""+T,this.serialize(B.h[T])}this.buf.b+="h";break;case Qt:this.buf.b+="M";for(var U=t,F=U.keys();F.hasNext();){var j=F.next(),D=Z.field(j,"__id__");Z.deleteField(j,"__id__"),this.serialize(j),j.__id__=D,this.serialize(U.h[j.__id__])}this.buf.b+="h";break;case ue:for(var R=t,q=0,H=R.length-2,$=new zt,nt=jt.BASE64;q<H;){var st=R.get(q++),rt=R.get(q++),at=R.get(q++);$.add(nt.charAt(st>>2)),$.add(nt.charAt((st<<4|rt>>4)&63)),$.add(nt.charAt((rt<<2|at>>6)&63)),$.add(nt.charAt(at&63))}if(q==H){var et=R.get(q++),ot=R.get(q++);$.add(nt.charAt(et>>2)),$.add(nt.charAt((et<<4|ot>>4)&63)),$.add(nt.charAt(ot<<2&63))}else if(q==H+1){var O=R.get(q++);$.add(nt.charAt(O>>2)),$.add(nt.charAt(O<<4&63))}var lt=$.b;this.buf.b+="s",lt.length==null?this.buf.b+="null":this.buf.b+=""+lt.length,this.buf.b+=":",lt==null?this.buf.b+="null":this.buf.b+=""+lt;break;default:this.useCache&&this.cache.pop(),t.hxSerialize!=null?(this.buf.b+="C",this.serializeString(ct.getClassName(a)),this.useCache&&this.cache.push(t),t.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(ct.getClassName(a)),this.useCache&&this.cache.push(t),this.serializeFields(t))}break;case 4:if(wt.__instanceof(t,ui)){var mt=ct.getClassName(t);this.buf.b+="A",this.serializeString(mt)}else if(wt.__instanceof(t,li))this.buf.b+="B",this.serializeString(ct.getEnumName(t));else{if(this.useCache&&this.serializeRef(t))return;this.buf.b+="o",this.serializeFields(t)}break;case 7:var kt=n[2];if(this.useCache){if(this.serializeRef(t))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(ct.getEnumName(kt)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=Mt.string(t[1])):this.serializeString(t[0]),this.buf.b+=":";var Et=t.length;this.buf.b+=Mt.string(Et-2);for(var St=2;St<Et;){var Lt=St++;this.serialize(t[Lt])}this.useCache&&this.cache.push(t);break;case 5:throw new K("Cannot serialize function");default:throw new K("Cannot serialize "+Mt.string(t))}}},__class__:jt};var Rt=function(t){this.buf=t,this.length=t.length,this.pos=0,this.scache=[],this.cache=[];var n=Rt.DEFAULT_RESOLVER;n==null&&(n=ct,Rt.DEFAULT_RESOLVER=n),this.setResolver(n)};y["haxe.Unserializer"]=Rt,Rt.__name__=["haxe","Unserializer"],Rt.initCodes=function(){for(var t=[],n=0,r=Rt.BASE64.length;n<r;){var i=n++;t[Rt.BASE64.charCodeAt(i)]=i}return t},Rt.prototype={setResolver:function(t){t==null?this.resolver={resolveClass:function(n){return null},resolveEnum:function(n){return null}}:this.resolver=t},get:function(t){return this.buf.charCodeAt(t)},readDigits:function(){for(var t=0,n=!1,r=this.pos;;){var i=this.buf.charCodeAt(this.pos);if(i!=i)break;if(i==45){if(this.pos!=r)break;n=!0,this.pos++;continue}if(i<48||i>57)break;t=t*10+(i-48),this.pos++}return n&&(t*=-1),t},readFloat:function(){for(var t=this.pos;;){var n=this.buf.charCodeAt(this.pos);if(n>=43&&n<58||n==101||n==69)this.pos++;else break}return Mt.parseFloat(V.substr(this.buf,t,this.pos-t))},unserializeObject:function(t){for(;;){if(this.pos>=this.length)throw new K("Invalid object");if(this.buf.charCodeAt(this.pos)==103)break;var n=this.unserialize();if(typeof n!="string")throw new K("Invalid object key");var r=this.unserialize();t[n]=r}this.pos++},unserializeEnum:function(t,n){if(this.get(this.pos++)!=58)throw new K("Invalid enum format");var r=this.readDigits();if(r==0)return ct.createEnum(t,n);for(var i=[];r-- >0;)i.push(this.unserialize());return ct.createEnum(t,n,i)},unserialize:function(){var t=this.get(this.pos++);switch(t){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var n=this.readDigits();if(this.get(this.pos++)!=58||this.length-this.pos<n)throw new K("Invalid string length");var r=V.substr(this.buf,this.pos,n);return this.pos+=n,r=decodeURIComponent(r.split("+").join(" ")),this.scache.push(r),r;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:this.buf;var i=[];for(this.cache.push(i);;){var a=this.buf.charCodeAt(this.pos);if(a==104){this.pos++;break}if(a==117){this.pos++;var h=this.readDigits();i[i.length+h-1]=null}else i.push(this.unserialize())}return i;case 111:var l={};return this.cache.push(l),this.unserializeObject(l),l;case 114:var v=this.readDigits();if(v<0||v>=this.cache.length)throw new K("Invalid reference");return this.cache[v];case 82:var _=this.readDigits();if(_<0||_>=this.scache.length)throw new K("Invalid string reference");return this.scache[_];case 120:throw new K(this.unserialize());case 99:var f=this.unserialize(),g=this.resolver.resolveClass(f);if(g==null)throw new K("Class not found "+f);var m=ct.createEmptyInstance(g);return this.cache.push(m),this.unserializeObject(m),m;case 119:var b=this.unserialize(),x=this.resolver.resolveEnum(b);if(x==null)throw new K("Enum not found "+b);var M=this.unserializeEnum(x,this.unserialize());return this.cache.push(M),M;case 106:var I=this.unserialize(),C=this.resolver.resolveEnum(I);if(C==null)throw new K("Enum not found "+I);this.pos++;var B=this.readDigits(),E=ct.getEnumConstructs(C)[B];if(E==null)throw new K("Unknown enum index "+I+"@"+B);var T=this.unserializeEnum(C,E);return this.cache.push(T),T;case 108:var U=new J;for(this.cache.push(U),this.buf;this.buf.charCodeAt(this.pos)!=104;)U.add(this.unserialize());return this.pos++,U;case 98:var F=new he;for(this.cache.push(F),this.buf;this.buf.charCodeAt(this.pos)!=104;){var j=this.unserialize();F.set(j,this.unserialize())}return this.pos++,F;case 113:var D=new Kt;this.cache.push(D),this.buf;for(var R=this.get(this.pos++);R==58;){var q=this.readDigits();D.set(q,this.unserialize()),R=this.get(this.pos++)}if(R!=104)throw new K("Invalid IntMap format");return D;case 77:var H=new Qt;for(this.cache.push(H),this.buf;this.buf.charCodeAt(this.pos)!=104;){var $=this.unserialize();H.set($,this.unserialize())}return this.pos++,H;case 118:var nt;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&this.buf.charCodeAt(this.pos+4)==45){var st=V.substr(this.buf,this.pos,19);nt=V.strDate(st),this.pos+=19}else{var rt=this.readFloat(),at=new Date;at.setTime(rt),nt=at}return this.cache.push(nt),nt;case 115:var et=this.readDigits(),ot=this.buf;if(this.get(this.pos++)!=58||this.length-this.pos<et)throw new K("Invalid bytes length");var O=Rt.CODES;O==null&&(O=Rt.initCodes(),Rt.CODES=O);var lt=this.pos,mt=et&3,kt;kt=(et>>2)*3+(mt>=2?mt-1:0);for(var Et=lt+(et-mt),St=ue.alloc(kt),Lt=0;lt<Et;){var re=O[yt.fastCodeAt(ot,lt++)],ge=O[yt.fastCodeAt(ot,lt++)];St.set(Lt++,re<<2|ge>>4);var ee=O[yt.fastCodeAt(ot,lt++)];St.set(Lt++,ge<<4|ee>>2);var $t=O[yt.fastCodeAt(ot,lt++)];St.set(Lt++,ee<<6|$t)}if(mt>=2){var ie=O[yt.fastCodeAt(ot,lt++)],_e=O[yt.fastCodeAt(ot,lt++)];if(St.set(Lt++,ie<<2|_e>>4),mt==3){var xe=O[yt.fastCodeAt(ot,lt++)];St.set(Lt++,_e<<4|xe>>2)}}return this.pos+=et,this.cache.push(St),St;case 67:var Ee=this.unserialize(),Me=this.resolver.resolveClass(Ee);if(Me==null)throw new K("Class not found "+Ee);var Ae=ct.createEmptyInstance(Me);if(this.cache.push(Ae),Ae.hxUnserialize(this),this.get(this.pos++)!=103)throw new K("Invalid custom data");return Ae;case 65:var Pe=this.unserialize(),Ue=this.resolver.resolveClass(Pe);if(Ue==null)throw new K("Class not found "+Pe);return Ue;case 66:var yn=this.unserialize(),tn=this.resolver.resolveEnum(yn);if(tn==null)throw new K("Enum not found "+yn);return tn}throw this.pos--,new K("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:Rt};var Kt=function(){this.h={}};y["haxe.ds.IntMap"]=Kt,Kt.__name__=["haxe","ds","IntMap"],Kt.__interfaces__=[ut],Kt.prototype={set:function(t,n){this.h[t]=n},remove:function(t){return this.h.hasOwnProperty(t)?(delete this.h[t],!0):!1},keys:function(){var t=[];for(var n in this.h)this.h.hasOwnProperty(n)&&t.push(n|0);return V.iter(t)},__class__:Kt};var Qt=function(){this.h={},this.h.__keys__={}};y["haxe.ds.ObjectMap"]=Qt,Qt.__name__=["haxe","ds","ObjectMap"],Qt.__interfaces__=[ut],Qt.prototype={set:function(t,n){var r=t.__id__||(t.__id__=++Qt.count);this.h[r]=n,this.h.__keys__[r]=t},keys:function(){var t=[];for(var n in this.h.__keys__)this.h.hasOwnProperty(n)&&t.push(this.h.__keys__[n]);return V.iter(t)},__class__:Qt};var oe=y["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};oe.Some=function(t){var n=["Some",0,t];return n.__enum__=oe,n.toString=N,n},oe.None=["None",1],oe.None.toString=N,oe.None.__enum__=oe;var he=function(){this.h={}};y["haxe.ds.StringMap"]=he,he.__name__=["haxe","ds","StringMap"],he.__interfaces__=[ut],he.prototype={set:function(t,n){Ar[t]!=null?this.setReserved(t,n):this.h[t]=n},get:function(t){return Ar[t]!=null?this.getReserved(t):this.h[t]},setReserved:function(t,n){this.rh==null&&(this.rh={}),this.rh["$"+t]=n},getReserved:function(t){return this.rh==null?null:this.rh["$"+t]},keys:function(){var t=this.arrayKeys();return V.iter(t)},arrayKeys:function(){var t=[];for(var n in this.h)this.h.hasOwnProperty(n)&&t.push(n);if(this.rh!=null)for(var n in this.rh)n.charCodeAt(0)==36&&t.push(n.substr(1));return t},__class__:he};var ue=function(t){this.length=t.byteLength,this.b=new Pr(t),this.b.bufferValue=t,t.hxBytes=this,t.bytes=this.b};y["haxe.io.Bytes"]=ue,ue.__name__=["haxe","io","Bytes"],ue.alloc=function(t){return new ue(new rr(t))},ue.prototype={get:function(t){return this.b[t]},set:function(t,n){this.b[t]=n&255},__class__:ue};var Ft=y["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};Ft.Blocked=["Blocked",0],Ft.Blocked.toString=N,Ft.Blocked.__enum__=Ft,Ft.Overflow=["Overflow",1],Ft.Overflow.toString=N,Ft.Overflow.__enum__=Ft,Ft.OutsideBounds=["OutsideBounds",2],Ft.OutsideBounds.toString=N,Ft.OutsideBounds.__enum__=Ft,Ft.Custom=function(t){var n=["Custom",3,t];return n.__enum__=Ft,n.toString=N,n};var Xt=function(){};y["haxe.io.FPHelper"]=Xt,Xt.__name__=["haxe","io","FPHelper"],Xt.i32ToFloat=function(t){var n=1-(t>>>31<<1),r=t>>>23&255,i=t&8388607;return i==0&&r==0?0:n*(1+Math.pow(2,-23)*i)*Math.pow(2,r-127)},Xt.floatToI32=function(t){if(t==0)return 0;var n;t<0?n=-t:n=t;var r=Math.floor(Math.log(n)/.6931471805599453);r<-127?r=-127:r>128&&(r=128);var i=Math.round((n/Math.pow(2,r)-1)*8388608)&8388607;return(t<0?-2147483648:0)|r+127<<23|i},Xt.i64ToDouble=function(t,n){var r=1-(n>>>31<<1),i=(n>>20&2047)-1023,a=(n&1048575)*4294967296+(t>>>31)*2147483648+(t&2147483647);return a==0&&i==-1023?0:r*(1+Math.pow(2,-52)*a)*Math.pow(2,i)},Xt.doubleToI64=function(t){var n=Xt.i64tmp;if(t==0)n.low=0,n.high=0;else{var r;t<0?r=-t:r=t;var i=Math.floor(Math.log(r)/.6931471805599453),a,h=(r/Math.pow(2,i)-1)*4503599627370496;a=Math.round(h);var l=a|0,v=a/4294967296|0;n.low=l,n.high=(t<0?-2147483648:0)|i+1023<<20|v}return n};var K=function(t){Error.call(this),this.val=t,this.message=String(t),Error.captureStackTrace&&Error.captureStackTrace(this,K)};y["js._Boot.HaxeError"]=K,K.__name__=["js","_Boot","HaxeError"],K.__super__=Error,K.prototype=k(Error.prototype,{__class__:K});var wt=function(){};y["js.Boot"]=wt,wt.__name__=["js","Boot"],wt.getClass=function(t){if(t instanceof Array&&t.__enum__==null)return Array;var n=t.__class__;if(n!=null)return n;var r=wt.__nativeClassName(t);return r!=null?wt.__resolveNativeClass(r):null},wt.__string_rec=function(t,n){if(t==null)return"null";if(n.length>=5)return"<...>";var r=typeof t;switch(r=="function"&&(t.__name__||t.__ename__)&&(r="object"),r){case"object":if(t instanceof Array){if(t.__enum__){if(t.length==2)return t[0];var i=t[0]+"(";n+=" ";for(var a=2,h=t.length;a<h;){var l=a++;l!=2?i+=","+wt.__string_rec(t[l],n):i+=wt.__string_rec(t[l],n)}return i+")"}var v=t.length,_="[";n+=" ";for(var f=0;f<v;){var g=f++;_+=(g>0?",":"")+wt.__string_rec(t[g],n)}return _+="]",_}var m;try{m=t.toString}catch(C){return C instanceof K&&(C=C.val),"???"}if(m!=null&&m!=Object.toString&&typeof m=="function"){var b=t.toString();if(b!="[object Object]")return b}var x=null,M=`{
|
2
|
+
`;n+=" ";var I=t.hasOwnProperty!=null;for(var x in t)I&&!t.hasOwnProperty(x)||x=="prototype"||x=="__class__"||x=="__super__"||x=="__interfaces__"||x=="__properties__"||(M.length!=2&&(M+=`,
|
3
|
+
`),M+=n+x+" : "+wt.__string_rec(t[x],n));return n=n.substring(1),M+=`
|
4
|
+
`+n+"}",M;case"function":return"<function>";case"string":return t;default:return String(t)}},wt.__interfLoop=function(t,n){if(t==null)return!1;if(t==n)return!0;var r=t.__interfaces__;if(r!=null)for(var i=0,a=r.length;i<a;){var h=i++,l=r[h];if(l==n||wt.__interfLoop(l,n))return!0}return wt.__interfLoop(t.__super__,n)},wt.__instanceof=function(t,n){if(n==null)return!1;switch(n){case Ui:return(t|0)===t;case oi:return typeof t=="number";case hi:return typeof t=="boolean";case String:return typeof t=="string";case Array:return t instanceof Array&&t.__enum__==null;case Ri:return!0;default:if(t!=null){if(typeof n=="function"){if(t instanceof n||wt.__interfLoop(wt.getClass(t),n))return!0}else if(typeof n=="object"&&wt.__isNativeObj(n)&&t instanceof n)return!0}else return!1;return n==ui&&t.__name__!=null||n==li&&t.__ename__!=null?!0:t.__enum__==n}},wt.__nativeClassName=function(t){var n=wt.__toStr.call(t).slice(8,-1);return n=="Object"||n=="Function"||n=="Math"||n=="JSON"?null:n},wt.__isNativeObj=function(t){return wt.__nativeClassName(t)!=null},wt.__resolveNativeClass=function(t){return S[t]};var Wt=function(t){if(t instanceof Array&&t.__enum__==null)this.a=t,this.byteLength=t.length;else{var n=t;this.a=[];for(var r=0;r<n;){var i=r++;this.a[i]=0}this.byteLength=n}};y["js.html.compat.ArrayBuffer"]=Wt,Wt.__name__=["js","html","compat","ArrayBuffer"],Wt.sliceImpl=function(t,n){var r=new Pr(this,t,n==null?null:n-t),i=new rr(r.byteLength),a=new Pr(i);return a.set(r),i},Wt.prototype={slice:function(t,n){return new Wt(this.a.slice(t,n))},__class__:Wt};var ze=function(t,n,r){if(this.buf=t,n==null?this.offset=0:this.offset=n,r==null?this.length=t.byteLength-this.offset:this.length=r,this.offset<0||this.length<0||this.offset+this.length>t.byteLength)throw new K(Ft.OutsideBounds)};y["js.html.compat.DataView"]=ze,ze.__name__=["js","html","compat","DataView"],ze.prototype={getInt8:function(t){var n=this.buf.a[this.offset+t];return n>=128?n-256:n},getUint8:function(t){return this.buf.a[this.offset+t]},getInt16:function(t,n){var r=this.getUint16(t,n);return r>=32768?r-65536:r},getUint16:function(t,n){return n?this.buf.a[this.offset+t]|this.buf.a[this.offset+t+1]<<8:this.buf.a[this.offset+t]<<8|this.buf.a[this.offset+t+1]},getInt32:function(t,n){var r=this.offset+t,i=this.buf.a[r++],a=this.buf.a[r++],h=this.buf.a[r++],l=this.buf.a[r++];return n?i|a<<8|h<<16|l<<24:l|h<<8|a<<16|i<<24},getUint32:function(t,n){var r=this.getInt32(t,n);return r<0?r+4294967296:r},getFloat32:function(t,n){return Xt.i32ToFloat(this.getInt32(t,n))},getFloat64:function(t,n){var r=this.getInt32(t,n),i=this.getInt32(t+4,n);return Xt.i64ToDouble(n?r:i,n?i:r)},setInt8:function(t,n){n<0?this.buf.a[t+this.offset]=n+128&255:this.buf.a[t+this.offset]=n&255},setUint8:function(t,n){this.buf.a[t+this.offset]=n&255},setInt16:function(t,n,r){this.setUint16(t,n<0?n+65536:n,r)},setUint16:function(t,n,r){var i=t+this.offset;r?(this.buf.a[i]=n&255,this.buf.a[i++]=n>>8&255):(this.buf.a[i++]=n>>8&255,this.buf.a[i]=n&255)},setInt32:function(t,n,r){this.setUint32(t,n,r)},setUint32:function(t,n,r){var i=t+this.offset;r?(this.buf.a[i++]=n&255,this.buf.a[i++]=n>>8&255,this.buf.a[i++]=n>>16&255,this.buf.a[i++]=n>>>24):(this.buf.a[i++]=n>>>24,this.buf.a[i++]=n>>16&255,this.buf.a[i++]=n>>8&255,this.buf.a[i++]=n&255)},setFloat32:function(t,n,r){this.setUint32(t,Xt.floatToI32(n),r)},setFloat64:function(t,n,r){var i=Xt.doubleToI64(n);r?(this.setUint32(t,i.low),this.setUint32(t,i.high)):(this.setUint32(t,i.high),this.setUint32(t,i.low))},__class__:ze};var Se=function(){};y["js.html.compat.Uint8Array"]=Se,Se.__name__=["js","html","compat","Uint8Array"],Se._new=function(t,n,r){var i;if(typeof t=="number"){i=[];for(var a=0;a<t;){var h=a++;i[h]=0}i.byteLength=i.length,i.byteOffset=0,i.buffer=new Wt(i)}else if(wt.__instanceof(t,Wt)){var l=t;n==null&&(n=0),r==null&&(r=l.byteLength-n),n==0?i=l.a:i=l.a.slice(n,n+r),i.byteLength=i.length,i.byteOffset=n,i.buffer=l}else if(t instanceof Array&&t.__enum__==null)i=t.slice(),i.byteLength=i.length,i.byteOffset=0,i.buffer=new Wt(i);else throw new K("TODO "+Mt.string(t));return i.subarray=Se._subarray,i.set=Se._set,i},Se._set=function(t,n){var r=this;if(wt.__instanceof(t.buffer,Wt)){var i=t;if(t.byteLength+n>r.byteLength)throw new K("set() outside of range");for(var a=0,h=t.byteLength;a<h;){var l=a++;r[l+n]=i[l]}}else if(t instanceof Array&&t.__enum__==null){var v=t;if(v.length+n>r.byteLength)throw new K("set() outside of range");for(var _=0,f=v.length;_<f;){var g=_++;r[g+n]=v[g]}}else throw new K("TODO")},Se._subarray=function(t,n){var r=this,i=Se._new(r.slice(t,n));return i.byteOffset=t,i};var pt=function(t){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,t!=null&&pt.link(t,this,function(n){return n})};y["promhx.base.AsyncBase"]=pt,pt.__name__=["promhx","base","AsyncBase"],pt.link=function(t,n,r){t._update.push({async:n,linkf:function(i){n.handleResolve(r(i))}}),pt.immediateLinkUpdate(t,n,r)},pt.immediateLinkUpdate=function(t,n,r){if(t._errored&&!t._errorPending&&!(t._error.length>0)&&n.handleError(t._errorVal),t._resolved&&!t._pending)try{n.handleResolve(r(t._val))}catch(i){i instanceof K&&(i=i.val),n.handleError(i)}},pt.linkAll=function(t,n){for(var r=function(h,l,v){if(h.length==0||pt.allFulfilled(h)){for(var _,f=[],g=be(t)();g.hasNext();){var m=g.next();f.push(m==l?v:m._val)}_=f,n.handleResolve(_)}},i=be(t)();i.hasNext();){var a=i.next();a._update.push({async:n,linkf:function(h,l,v){return function(_){h(l,v,_)}}(r,function(h){for(var l,v=[],_=be(t)();_.hasNext();){var f=_.next();f!=a&&v.push(f)}return l=v,l}(),a)})}pt.allFulfilled(t)&&n.handleResolve(function(h){for(var l,v=[],_=be(t)();_.hasNext();){var f=_.next();v.push(f._val)}return l=v,l}())},pt.pipeLink=function(t,n,r){var i=!1,a=function(h){if(!i){i=!0;var l=r(h);l._update.push({async:n,linkf:ve(n,n.handleResolve)}),pt.immediateLinkUpdate(l,n,function(v){return v})}};if(t._update.push({async:n,linkf:a}),t._resolved&&!t._pending)try{a(t._val)}catch(h){h instanceof K&&(h=h.val),n.handleError(h)}},pt.allResolved=function(t){for(var n=be(t)();n.hasNext();){var r=n.next();if(!r._resolved)return!1}return!0},pt.allFulfilled=function(t){for(var n=be(t)();n.hasNext();){var r=n.next();if(!r._fulfilled)return!1}return!0},pt.prototype={catchError:function(t){return this._error.push(t),this},errorThen:function(t){return this._errorMap=t,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(t){this._resolve(t)},_resolve:function(t){var n=this;this._pending?ft.enqueue(function(r,i){return function(){r(i)}}(ve(this,this._resolve),t)):(this._resolved=!0,this._pending=!0,ft.queue.add(function(){n._val=t;for(var r=0,i=n._update;r<i.length;){var a=i[r];++r;try{a.linkf(t)}catch(h){h instanceof K&&(h=h.val),a.async.handleError(h)}}n._fulfilled=!0,n._pending=!1}),ft.continueOnNextLoop())},handleError:function(t){this._handleError(t)},_handleError:function(t){var n=this,r=function(i){if(n._error.length>0)for(var a=0,h=n._error;a<h.length;){var l=h[a];++a,l(i)}else if(n._update.length>0)for(var v=0,_=n._update;v<_.length;){var f=_[v];++v,f.async.handleError(i)}else throw new K(i);n._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=t,ft.queue.add(function(){if(n._errorMap!=null)try{n._resolve(n._errorMap(t))}catch(i){i instanceof K&&(i=i.val),r(i)}else r(t)}),ft.continueOnNextLoop())},then:function(t){var n=new pt(null);return pt.link(this,n,t),n},unlink:function(t){var n=this;ft.queue.add(function(){n._update=n._update.filter(function(r){return r.async!=t})}),ft.continueOnNextLoop()},isLinked:function(t){for(var n=!1,r=0,i=this._update;r<i.length;){var a=i[r];if(++r,a.async==t)return!0}return n},__class__:pt};var hn=p.promhx.Deferred=function(){pt.call(this)};y["promhx.Deferred"]=hn,hn.__name__=["promhx","Deferred"],hn.__super__=pt,hn.prototype=k(pt.prototype,{resolve:function(t){this.handleResolve(t)},throwError:function(t){this.handleError(t)},promise:function(){return new Jt(this)},stream:function(){return new It(this)},publicStream:function(){return new Fe(this)},__class__:hn});var Jt=p.promhx.Promise=function(t){pt.call(this,t),this._rejected=!1};y["promhx.Promise"]=Jt,Jt.__name__=["promhx","Promise"],Jt.whenAll=function(t){var n=new Jt(null);return pt.linkAll(t,n),n},Jt.promise=function(t){var n=new Jt;return n.handleResolve(t),n},Jt.__super__=pt,Jt.prototype=k(pt.prototype,{isRejected:function(){return this._rejected},reject:function(t){this._rejected=!0,this.handleError(t)},handleResolve:function(t){if(this._resolved){var n="Promise has already been resolved";throw new K(un.AlreadyResolved(n))}this._resolve(t)},then:function(t){var n=new Jt(null);return pt.link(this,n,t),n},unlink:function(t){var n=this;ft.queue.add(function(){if(n._fulfilled)n._update=n._update.filter(function(i){return i.async!=t});else{var r="Downstream Promise is not fullfilled";n.handleError(un.DownstreamNotFullfilled(r))}}),ft.continueOnNextLoop()},handleError:function(t){this._rejected=!0,this._handleError(t)},pipe:function(t){var n=new Jt(null);return pt.pipeLink(this,n,t),n},errorPipe:function(t){var n=new Jt;return this.catchError(function(r){var i=t(r);i.then(ve(n,n._resolve))}),this.then(ve(n,n._resolve)),n},__class__:Jt});var It=p.promhx.Stream=function(t){pt.call(this,t),this._end_promise=new Jt};y["promhx.Stream"]=It,It.__name__=["promhx","Stream"],It.foreach=function(t){for(var n=new It(null),r=be(t)();r.hasNext();){var i=r.next();n.handleResolve(i)}return n.end(),n},It.wheneverAll=function(t){var n=new It(null);return pt.linkAll(t,n),n},It.concatAll=function(t){for(var n=new It(null),r=be(t)();r.hasNext();){var i=r.next();n.concat(i)}return n},It.mergeAll=function(t){for(var n=new It(null),r=be(t)();r.hasNext();){var i=r.next();n.merge(i)}return n},It.stream=function(t){var n=new It(null);return n.handleResolve(t),n},It.__super__=pt,It.prototype=k(pt.prototype,{then:function(t){var n=new It(null);return pt.link(this,n,t),this._end_promise._update.push({async:n._end_promise,linkf:function(r){n.end()}}),n},detachStream:function(t){for(var n=[],r=!1,i=0,a=this._update;i<a.length;){var h=a[i];++i,h.async==t?(this._end_promise._update=this._end_promise._update.filter(function(l){return l.async!=t._end_promise}),r=!0):n.push(h)}return this._update=n,r},first:function(){var t=new Jt(null);return this.then(function(n){t._resolved||t.handleResolve(n)}),t},handleResolve:function(t){!this._end&&!this._pause&&this._resolve(t)},pause:function(t){t==null&&(t=!this._pause),this._pause=t},pipe:function(t){var n=new It(null);return pt.pipeLink(this,n,t),this._end_promise.then(function(r){n.end()}),n},errorPipe:function(t){var n=new It(null);return this.catchError(function(r){var i=t(r);i.then(ve(n,n._resolve)),i._end_promise.then((Mr=n._end_promise,ve(Mr,Mr._resolve)))}),this.then(ve(n,n._resolve)),this._end_promise.then(function(r){n.end()}),n},handleEnd:function(){if(this._pending)ft.queue.add(ve(this,this.handleEnd)),ft.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var t;this._resolved?t=oe.Some(this._val):t=oe.None,this._end_promise.handleResolve(t),this._update=[],this._error=[]}},end:function(){return ft.queue.add(ve(this,this.handleEnd)),ft.continueOnNextLoop(),this},endThen:function(t){return this._end_promise.then(t)},filter:function(t){var n=new It(null);return this._update.push({async:n,linkf:function(r){t(r)&&n.handleResolve(r)}}),pt.immediateLinkUpdate(this,n,function(r){return r}),n},concat:function(t){var n=new It(null);return this._update.push({async:n,linkf:ve(n,n.handleResolve)}),pt.immediateLinkUpdate(this,n,function(r){return r}),this._end_promise.then(function(r){t.pipe(function(i){return n.handleResolve(i),n}),t._end_promise.then(function(i){n.end()})}),n},merge:function(t){var n=new It(null);return this._update.push({async:n,linkf:ve(n,n.handleResolve)}),t._update.push({async:n,linkf:ve(n,n.handleResolve)}),pt.immediateLinkUpdate(this,n,function(r){return r}),pt.immediateLinkUpdate(t,n,function(r){return r}),n},__class__:It});var Fe=p.promhx.PublicStream=function(t){It.call(this,t)};y["promhx.PublicStream"]=Fe,Fe.__name__=["promhx","PublicStream"],Fe.publicstream=function(t){var n=new Fe(null);return n.handleResolve(t),n},Fe.__super__=It,Fe.prototype=k(It.prototype,{resolve:function(t){this.handleResolve(t)},throwError:function(t){this.handleError(t)},update:function(t){this.handleResolve(t)},__class__:Fe});var ft=function(){};y["promhx.base.EventLoop"]=ft,ft.__name__=["promhx","base","EventLoop"],ft.enqueue=function(t){ft.queue.add(t),ft.continueOnNextLoop()},ft.set_nextLoop=function(t){if(ft.nextLoop!=null)throw new K("nextLoop has already been set");return ft.nextLoop=t,ft.nextLoop},ft.queueEmpty=function(){return ft.queue.isEmpty()},ft.finish=function(t){t==null&&(t=1e3);for(var n=null;t-- >0&&(n=ft.queue.pop())!=null;)n();return ft.queue.isEmpty()},ft.clear=function(){ft.queue=new J},ft.f=function(){var t=ft.queue.pop();t!=null&&t(),ft.queue.isEmpty()||ft.continueOnNextLoop()},ft.continueOnNextLoop=function(){ft.nextLoop!=null?ft.nextLoop(ft.f):setImmediate(ft.f)};var un=y["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};un.AlreadyResolved=function(t){var n=["AlreadyResolved",0,t];return n.__enum__=un,n.toString=N,n},un.DownstreamNotFullfilled=function(t){var n=["DownstreamNotFullfilled",1,t];return n.__enum__=un,n.toString=N,n};var er=function(){};y["verb.Verb"]=er,er.__name__=["verb","Verb"],er.main=function(){z.log("verb 2.1.0")};var G=function(){};y["verb.core.ArrayExtensions"]=G,G.__name__=["verb","core","ArrayExtensions"],G.alloc=function(t,n){if(!(n<0))for(;t.length<n;)t.push(null)},G.reversed=function(t){var n=t.slice();return n.reverse(),n},G.last=function(t){return t[t.length-1]},G.first=function(t){return t[0]},G.spliceAndInsert=function(t,n,r,i){t.splice(n,r),t.splice(n,0,i)},G.left=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(0,n)},G.right=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(n)},G.rightWithPivot=function(t){if(t.length==0)return[];var n=Math.ceil(t.length/2);return t.slice(n-1)},G.unique=function(t,n){if(t.length==0)return[];for(var r=[t.pop()];t.length>0;){for(var i=t.pop(),a=!0,h=0;h<r.length;){var l=r[h];if(++h,n(i,l)){a=!1;break}}a&&r.push(i)}return r};var Pt=function(){};y["verb.core.Binomial"]=Pt,Pt.__name__=["verb","core","Binomial"],Pt.get=function(t,n){if(n==0)return 1;if(t==0||n>t)return 0;if(n>t-n&&(n=t-n),Pt.memo_exists(t,n))return Pt.get_memo(t,n);for(var r=1,i=t,a=1,h=n+1;a<h;){var l=a++;if(Pt.memo_exists(i,l)){t--,r=Pt.get_memo(i,l);continue}r*=t--,r/=l,Pt.memoize(i,l,r)}return r},Pt.get_no_memo=function(t,n){if(n==0)return 1;if(t==0||n>t)return 0;n>t-n&&(n=t-n);for(var r=1,i=1,a=n+1;i<a;){var h=i++;r*=t--,r/=h}return r},Pt.memo_exists=function(t,n){return Pt.memo.h.hasOwnProperty(t)&&Pt.memo.h[t].h.hasOwnProperty(n)},Pt.get_memo=function(t,n){return Pt.memo.h[t].h[n]},Pt.memoize=function(t,n,r){Pt.memo.h.hasOwnProperty(t)||Pt.memo.set(t,new Kt),Pt.memo.h[t].h[n]=r};var le=p.core.BoundingBox=function(t){this.max=null,this.min=null,this.dim=3,this.initialized=!1,t!=null&&this.addRange(t)};y["verb.core.BoundingBox"]=le,le.__name__=["verb","core","BoundingBox"],le.intervalsOverlap=function(t,n,r,i,a){a==null&&(a=-1);var h;a<-.5?h=tt.TOLERANCE:h=a;var l=Math.min(t,n)-h,v=Math.max(t,n)+h,_=Math.min(r,i)-h,f=Math.max(r,i)+h;return l>=_&&l<=f||v>=_&&v<=f||_>=l&&_<=v||f>=l&&f<=v},le.prototype={fromPoint:function(t){return new le([t])},add:function(t){if(!this.initialized)return this.dim=t.length,this.min=t.slice(0),this.max=t.slice(0),this.initialized=!0,this;for(var n=0,r=this.dim;n<r;){var i=n++;t[i]>this.max[i]&&(this.max[i]=t[i]),t[i]<this.min[i]&&(this.min[i]=t[i])}return this},addRange:function(t){for(var n=t.length,r=0;r<n;){var i=r++;this.add(t[i])}return this},contains:function(t,n){return n==null&&(n=-1),this.initialized?this.intersects(new le([t]),n):!1},intersects:function(t,n){if(n==null&&(n=-1),!this.initialized||!t.initialized)return!1;for(var r=this.min,i=this.max,a=t.min,h=t.max,l=0,v=this.dim;l<v;){var _=l++;if(!le.intervalsOverlap(r[_],i[_],a[_],h[_],n))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var t=0,n=0,r=0,i=this.dim;r<i;){var a=r++,h=this.getAxisLength(a);h>t&&(t=h,n=a)}return n},getAxisLength:function(t){return t<0||t>this.dim-1?0:Math.abs(this.min[t]-this.max[t])},intersect:function(t,n){if(!this.initialized)return null;var r=this.min,i=this.max,a=t.min,h=t.max;if(!this.intersects(t,n))return null;for(var l=[],v=[],_=0,f=this.dim;_<f;){var g=_++;l.push(Math.min(i[g],h[g])),v.push(Math.max(r[g],a[g]))}return new le([v,l])},__class__:le};var tt=p.core.Constants=function(){};y["verb.core.Constants"]=tt,tt.__name__=["verb","core","Constants"];var Vt=p.core.SerializableBase=function(){};y["verb.core.SerializableBase"]=Vt,Vt.__name__=["verb","core","SerializableBase"],Vt.prototype={serialize:function(){var t=new jt;return t.serialize(this),t.toString()},__class__:Vt};var En=p.core.Plane=function(t,n){this.origin=t,this.normal=n};y["verb.core.Plane"]=En,En.__name__=["verb","core","Plane"],En.__super__=Vt,En.prototype=k(Vt.prototype,{__class__:En});var ln=p.core.Ray=function(t,n){this.origin=t,this.dir=n};y["verb.core.Ray"]=ln,ln.__name__=["verb","core","Ray"],ln.__super__=Vt,ln.prototype=k(Vt.prototype,{__class__:ln});var Ct=p.core.NurbsCurveData=function(t,n,r){this.degree=t,this.controlPoints=r,this.knots=n};y["verb.core.NurbsCurveData"]=Ct,Ct.__name__=["verb","core","NurbsCurveData"],Ct.__super__=Vt,Ct.prototype=k(Vt.prototype,{__class__:Ct});var Ot=p.core.NurbsSurfaceData=function(t,n,r,i,a){this.degreeU=t,this.degreeV=n,this.knotsU=r,this.knotsV=i,this.controlPoints=a};y["verb.core.NurbsSurfaceData"]=Ot,Ot.__name__=["verb","core","NurbsSurfaceData"],Ot.__super__=Vt,Ot.prototype=k(Vt.prototype,{__class__:Ot});var ye=p.core.MeshData=function(t,n,r,i){this.faces=t,this.points=n,this.normals=r,this.uvs=i};y["verb.core.MeshData"]=ye,ye.__name__=["verb","core","MeshData"],ye.empty=function(){return new ye([],[],[],[])},ye.__super__=Vt,ye.prototype=k(Vt.prototype,{__class__:ye});var Nn=p.core.PolylineData=function(t,n){this.points=t,this.params=n};y["verb.core.PolylineData"]=Nn,Nn.__name__=["verb","core","PolylineData"],Nn.__super__=Vt,Nn.prototype=k(Vt.prototype,{__class__:Nn});var Bn=p.core.VolumeData=function(t,n,r,i,a,h,l){this.degreeU=t,this.degreeV=n,this.degreeW=r,this.knotsU=i,this.knotsV=a,this.knotsW=h,this.controlPoints=l};y["verb.core.VolumeData"]=Bn,Bn.__name__=["verb","core","VolumeData"],Bn.__super__=Vt,Bn.prototype=k(Vt.prototype,{__class__:Bn});var qt=p.core.Pair=function(t,n){this.item0=t,this.item1=n};y["verb.core.Pair"]=qt,qt.__name__=["verb","core","Pair"],qt.prototype={__class__:qt};var ne=p.core.Interval=function(t,n){this.min=t,this.max=n};y["verb.core.Interval"]=ne,ne.__name__=["verb","core","Interval"],ne.prototype={__class__:ne};var Je=p.core.CurveCurveIntersection=function(t,n,r,i){this.point0=t,this.point1=n,this.u0=r,this.u1=i};y["verb.core.CurveCurveIntersection"]=Je,Je.__name__=["verb","core","CurveCurveIntersection"],Je.prototype={__class__:Je};var Ln=p.core.CurveSurfaceIntersection=function(t,n,r,i){this.u=t,this.uv=n,this.curvePoint=r,this.surfacePoint=i};y["verb.core.CurveSurfaceIntersection"]=Ln,Ln.__name__=["verb","core","CurveSurfaceIntersection"],Ln.prototype={__class__:Ln};var Oe=p.core.MeshIntersectionPoint=function(t,n,r,i,a){this.visited=!1,this.adj=null,this.opp=null,this.uv0=t,this.uv1=n,this.point=r,this.faceIndex0,this.faceIndex1};y["verb.core.MeshIntersectionPoint"]=Oe,Oe.__name__=["verb","core","MeshIntersectionPoint"],Oe.prototype={__class__:Oe};var Tn=p.core.PolylineMeshIntersection=function(t,n,r,i,a){this.point=t,this.u=n,this.uv=r,this.polylineIndex=i,this.faceIndex=a};y["verb.core.PolylineMeshIntersection"]=Tn,Tn.__name__=["verb","core","PolylineMeshIntersection"],Tn.prototype={__class__:Tn};var Un=p.core.SurfaceSurfaceIntersectionPoint=function(t,n,r,i){this.uv0=t,this.uv1=n,this.point=r,this.dist=i};y["verb.core.SurfaceSurfaceIntersectionPoint"]=Un,Un.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],Un.prototype={__class__:Un};var Rn=p.core.TriSegmentIntersection=function(t,n,r,i){this.point=t,this.s=n,this.t=r,this.p=i};y["verb.core.TriSegmentIntersection"]=Rn,Rn.__name__=["verb","core","TriSegmentIntersection"],Rn.prototype={__class__:Rn};var cn=p.core.CurveTriPoint=function(t,n,r){this.u=t,this.point=n,this.uv=r};y["verb.core.CurveTriPoint"]=cn,cn.__name__=["verb","core","CurveTriPoint"],cn.prototype={__class__:cn};var fe=function(t,n,r,i,a){a==null&&(a=!1),i==null&&(i=-1),this.uv=r,this.point=t,this.normal=n,this.id=i,this.degen=a};y["verb.core.SurfacePoint"]=fe,fe.__name__=["verb","core","SurfacePoint"],fe.fromUv=function(t,n){return new fe(null,null,[t,n])},fe.prototype={__class__:fe};var nr=p.core.CurvePoint=function(t,n){this.u=t,this.pt=n};y["verb.core.CurvePoint"]=nr,nr.__name__=["verb","core","CurvePoint"],nr.prototype={__class__:nr};var Vn=p.core.KdTree=function(t,n){this.dim=3,this.points=t,this.distanceFunction=n,this.dim=t[0].point.length,this.root=this.buildTree(t,0,null)};y["verb.core.KdTree"]=Vn,Vn.__name__=["verb","core","KdTree"],Vn.prototype={buildTree:function(t,n,r){var i=n%this.dim,a,h;return t.length==0?null:t.length==1?new _n(t[0],i,r):(t.sort(function(l,v){var _=l.point[i]-v.point[i];return _==0?0:_>0?1:-1}),a=Math.floor(t.length/2),h=new _n(t[a],i,r),h.left=this.buildTree(t.slice(0,a),n+1,h),h.right=this.buildTree(t.slice(a+1),n+1,h),h)},nearest:function(t,n,r){var i=this,a=new Dn(function(m){return-m.item1}),h,l=null;l=function(m){for(var b,x=m.dimension,M=i.distanceFunction(t,m.kdPoint.point),I,C=[],B=0,E=i.dim;B<E;)B++,C.push(0);I=C;for(var T,U,F=function(q,H){a.push(new qt(q,H)),a.size()>n&&a.pop()},j=0,D=i.dim;j<D;){var R=j++;R==m.dimension?I[R]=t[R]:I[R]=m.kdPoint.point[R]}if(T=i.distanceFunction(I,m.kdPoint.point),m.right==null&&m.left==null){(a.size()<n||M<a.peek().item1)&&F(m,M);return}m.right==null?b=m.left:m.left==null?b=m.right:t[x]<m.kdPoint.point[x]?b=m.left:b=m.right,l(b),(a.size()<n||M<a.peek().item1)&&F(m,M),(a.size()<n||Math.abs(T)<a.peek().item1)&&(b==m.left?U=m.right:U=m.left,U!=null&&l(U))},h=l;for(var v=0;v<n;)v++,a.push(new qt(null,r));h(this.root);for(var _=[],f=0;f<n;){var g=f++;a.content[g].item0!=null&&_.push(new qt(a.content[g].item0.kdPoint,a.content[g].item1))}return _},__class__:Vn};var Dn=function(t){this.content=[],this.scoreFunction=t};y["verb.core.BinaryHeap"]=Dn,Dn.__name__=["verb","core","BinaryHeap"],Dn.prototype={push:function(t){this.content.push(t),this.bubbleUp(this.content.length-1)},pop:function(){var t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.sinkDown(0)),t},peek:function(){return this.content[0]},remove:function(t){for(var n=this.content.length,r=0;r<n;){var i=r++;if(this.content[i]==t){var a=this.content.pop();i!=n-1&&(this.content[i]=a,this.scoreFunction(a)<this.scoreFunction(t)?this.bubbleUp(i):this.sinkDown(i));return}}throw new K("Node not found.")},size:function(){return this.content.length},bubbleUp:function(t){for(var n=this.content[t];t>0;){var r=Math.floor((t+1)/2)-1,i=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(i))this.content[r]=n,this.content[t]=i,t=r;else break}},sinkDown:function(t){for(var n=this.content.length,r=this.content[t],i=this.scoreFunction(r);;){var a=(t+1)*2,h=a-1,l=-1,v=0;if(h<n){var _=this.content[h];v=this.scoreFunction(_),v<i&&(l=h)}if(a<n){var f=this.content[a],g=this.scoreFunction(f);g<(l==-1?i:v)&&(l=a)}if(l!=-1)this.content[t]=this.content[l],this.content[l]=r,t=l;else break}},__class__:Dn};var vn=p.core.KdPoint=function(t,n){this.point=t,this.obj=n};y["verb.core.KdPoint"]=vn,vn.__name__=["verb","core","KdPoint"],vn.prototype={__class__:vn};var _n=p.core.KdNode=function(t,n,r){this.kdPoint=t,this.left=null,this.right=null,this.parent=r,this.dimension=n};y["verb.core.KdNode"]=_n,_n.__name__=["verb","core","KdNode"],_n.prototype={__class__:_n};var Le=function(){};y["verb.eval.IBoundingBoxTree"]=Le,Le.__name__=["verb","eval","IBoundingBoxTree"],Le.prototype={__class__:Le};var Ce=function(t,n){this._boundingBox=null,this._curve=t,n==null&&(n=u.domain(this._curve.knots)/64),this._knotTol=n};y["verb.core.LazyCurveBoundingBoxTree"]=Ce,Ce.__name__=["verb","core","LazyCurveBoundingBoxTree"],Ce.__interfaces__=[Le],Ce.prototype={split:function(){var t=G.first(this._curve.knots),n=G.last(this._curve.knots),r=n-t,i=Zt.curveSplit(this._curve,(n+t)/2+r*.1*Math.random());return new qt(new Ce(i[0],this._knotTol),new Ce(i[1],this._knotTol))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new le(P.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(t){return u.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:Ce};var ke=function(t,n){if(this._boundingBox=null,this._mesh=t,n==null){for(var r=[],i=0,a=t.faces.length;i<a;){var h=i++;r.push(h)}n=r}this._faceIndices=n};y["verb.core.LazyMeshBoundingBoxTree"]=ke,ke.__name__=["verb","core","LazyMeshBoundingBoxTree"],ke.__interfaces__=[Le],ke.prototype={split:function(){var t=Gt.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),n=G.left(t),r=G.right(t);return new qt(new ke(this._mesh,n),new ke(this._mesh,r))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=Gt.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(t){return this._faceIndices.length==1},empty:function(){return this._faceIndices.length==0},__class__:ke};var Ie=function(t,n){this._boundingBox=null,this._polyline=t,n==null&&(n=new ne(0,t.points.length!=0?t.points.length-1:0)),this._interval=n};y["verb.core.LazyPolylineBoundingBoxTree"]=Ie,Ie.__name__=["verb","core","LazyPolylineBoundingBoxTree"],Ie.__interfaces__=[Le],Ie.prototype={split:function(){var t=this._interval.min,n=this._interval.max,r=t+Math.ceil((n-t)/2),i=new ne(t,r),a=new ne(r,n);return new qt(new Ie(this._polyline,i),new Ie(this._polyline,a))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new le(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(t){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:Ie};var qe=function(t,n,r,i){n==null&&(n=!1),this._boundingBox=null,this._surface=t,this._splitV=n,r==null&&(r=u.domain(t.knotsU)/16),i==null&&(i=u.domain(t.knotsV)/16),this._knotTolU=r,this._knotTolV=i};y["verb.core.LazySurfaceBoundingBoxTree"]=qe,qe.__name__=["verb","core","LazySurfaceBoundingBoxTree"],qe.__interfaces__=[Le],qe.prototype={split:function(){var t,n;this._splitV?(t=G.first(this._surface.knotsV),n=G.last(this._surface.knotsV)):(t=G.first(this._surface.knotsU),n=G.last(this._surface.knotsU));var r=(t+n)/2,i=Zt.surfaceSplit(this._surface,r,this._splitV);return new qt(new qe(i[0],!this._splitV,this._knotTolU,this._knotTolV),new qe(i[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(this._boundingBox==null){this._boundingBox=new le;for(var t=0,n=this._surface.controlPoints;t<n.length;){var r=n[t];++t,this._boundingBox.addRange(P.dehomogenize1d(r))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(t){return u.domain(this._surface.knotsV)<this._knotTolV&&u.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:qe};var xt=p.core.Mat=function(){};y["verb.core.Mat"]=xt,xt.__name__=["verb","core","Mat"],xt.mul=function(t,n){for(var r=[],i=0,a=n.length;i<a;){var h=i++;r.push(u.mul(t,n[h]))}return r},xt.mult=function(t,n){var r,i,a,h,l,v,_,f;r=t.length,i=n.length,a=n[0].length,h=[];for(var g=r-1,m=0,b=0;g>=0;){for(l=[],v=t[g],b=a-1;b>=0;){for(_=v[i-1]*n[i-1][b],m=i-2;m>=1;)f=m-1,_+=v[m]*n[m][b]+v[f]*n[f][b],m-=2;m==0&&(_+=v[0]*n[0][b]),l[b]=_,b--}h[g]=l,g--}return h},xt.add=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(u.add(t[h],n[h]))}return r},xt.div=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(u.div(t[h],n))}return r},xt.sub=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(u.sub(t[h],n[h]))}return r},xt.dot=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(u.dot(t[h],n))}return r},xt.identity=function(t){for(var n=u.zeros2d(t,t),r=0;r<t;){var i=r++;n[i][i]=1}return n},xt.transpose=function(t){if(t.length==0)return[];for(var n=[],r=0,i=t[0].length;r<i;){var a=r++;n.push(function(h){for(var l,v=[],_=0,f=t.length;_<f;){var g=_++;v.push(t[g][a])}return l=v,l}())}return n},xt.solve=function(t,n){return xt.LUsolve(xt.LU(t),n)},xt.LUsolve=function(t,n){var r,i,a=t.LU,h=a.length,l=n.slice(),v=t.P,_,f,g;for(r=h-1;r!=-1;)l[r]=n[r],--r;for(r=0;r<h;){for(_=v[r],v[r]!=r&&(g=l[r],l[r]=l[_],l[_]=g),f=a[r],i=0;i<r;)l[r]-=l[i]*f[i],++i;++r}for(r=h-1;r>=0;){for(f=a[r],i=r+1;i<h;)l[r]-=l[i]*f[i],++i;l[r]/=f[r],--r}return l},xt.LU=function(t){for(var n,r,i,a,h,l,v,_,f,g=[],m=0,b=t.length;m<b;){var x=m++;g.push(t[x].slice())}t=g;var M=t.length,I=M-1,C=[];for(i=0;i<M;){for(v=i,l=t[i],f=Math.abs(l[i]),r=i+1;r<M;)a=Math.abs(t[r][i]),f<a&&(f=a,v=r),++r;for(C[i]=v,v!=i&&(t[i]=t[v],t[v]=l,l=t[i]),h=l[i],n=i+1;n<M;)t[n][i]/=h,++n;for(n=i+1;n<M;){for(_=t[n],r=i+1;r<I;)_[r]-=_[i]*l[r],++r,_[r]-=_[i]*l[r],++r;r==I&&(_[r]-=_[i]*l[r]),++n}++i}return new Fn(t,C)};var Fn=function(t,n){this.LU=t,this.P=n};y["verb.core._Mat.LUDecomp"]=Fn,Fn.__name__=["verb","core","_Mat","LUDecomp"],Fn.prototype={__class__:Fn};var Gt=p.core.Mesh=function(){};y["verb.core.Mesh"]=Gt,Gt.__name__=["verb","core","Mesh"],Gt.getTriangleNorm=function(t,n){var r=t[n[0]],i=t[n[1]],a=t[n[2]],h=u.sub(i,r),l=u.sub(a,r),v=u.cross(h,l);return u.mul(1/u.norm(v),v)},Gt.makeMeshAabb=function(t,n){for(var r=new le,i=0;i<n.length;){var a=n[i];++i,r.add(t.points[t.faces[a][0]]),r.add(t.points[t.faces[a][1]]),r.add(t.points[t.faces[a][2]])}return r},Gt.sortTrianglesOnLongestAxis=function(t,n,r){for(var i=t.getLongestAxis(),a=[],h=0;h<r.length;){var l=r[h];++h;var v=Gt.getMinCoordOnAxis(n.points,n.faces[l],i);a.push(new qt(v,l))}a.sort(function(b,x){var M=b.item0,I=x.item0;return M==I?0:M>I?1:-1});for(var _=[],f=0,g=a.length;f<g;){var m=f++;_.push(a[m].item1)}return _},Gt.getMinCoordOnAxis=function(t,n,r){for(var i=1/0,a=0;a<3;){var h=a++,l=t[n[h]][r];l<i&&(i=l)}return i},Gt.getTriangleCentroid=function(t,n){for(var r=[0,0,0],i=0;i<3;)for(var a=i++,h=0;h<3;){var l=h++;r[l]+=t[n[a]][l]}for(var v=0;v<3;){var _=v++;r[_]/=3}return r},Gt.triangleUVFromPoint=function(t,n,r){var i=t.faces[n],a=t.points[i[0]],h=t.points[i[1]],l=t.points[i[2]],v=t.uvs[i[0]],_=t.uvs[i[1]],f=t.uvs[i[2]],g=u.sub(a,r),m=u.sub(h,r),b=u.sub(l,r),x=u.norm(u.cross(u.sub(a,h),u.sub(a,l))),M=u.norm(u.cross(m,b))/x,I=u.norm(u.cross(b,g))/x,C=u.norm(u.cross(g,m))/x;return u.add(u.mul(M,v),u.add(u.mul(I,_),u.mul(C,f)))};var Ge=function(t,n){if(this._empty=!1,this._face=-1,n==null){for(var r=[],i=0,a=t.faces.length;i<a;){var h=i++;r.push(h)}n=r}if(this._boundingBox=Gt.makeMeshAabb(t,n),n.length<1){this._empty=!0;return}else if(n.length<2){this._face=n[0];return}var l=Gt.sortTrianglesOnLongestAxis(this._boundingBox,t,n),v=G.left(l),_=G.right(l);this._children=new qt(new Ge(t,v),new Ge(t,_))};y["verb.core.MeshBoundingBoxTree"]=Ge,Ge.__name__=["verb","core","MeshBoundingBoxTree"],Ge.__interfaces__=[Le],Ge.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(t){return this._children==null},empty:function(){return this._empty},__class__:Ge};var we=p.core.Minimizer=function(){};y["verb.core.Minimizer"]=we,we.__name__=["verb","core","Minimizer"],we.uncmin=function(t,n,r,i,a){r==null&&(r=1e-8),i==null&&(i=function(j){return we.numericalGradient(t,j)}),a==null&&(a=1e3),n=n.slice(0);var h=n.length,l=t(n),v=l,_;if(isNaN(l))throw new K("uncmin: f(x0) is a NaN!");r=Math.max(r,tt.EPSILON);var f,g,m,b=xt.identity(h),x=0,M=[],I,C,B,E,T,U,F="";for(g=i(n);x<a;){if(!u.all(u.finite(g))){F="Gradient has Infinity or NaN";break}if(f=u.neg(xt.dot(b,g)),!u.all(u.finite(f))){F="Search direction has Infinity or NaN";break}if(U=u.norm(f),U<r){F="Newton step smaller than tol";break}for(T=1,_=u.dot(g,f),I=n;x<a&&!(T*U<r);){if(M=u.mul(T,f),I=u.add(n,M),v=t(I),v-l>=.1*T*_||isNaN(v)){T*=.5,++x;continue}break}if(T*U<r){F="Line search step size smaller than tol";break}if(x==a){F="maxit reached during line search";break}m=i(I),C=u.sub(m,g),E=u.dot(C,M),B=xt.dot(b,C),b=xt.sub(xt.add(b,xt.mul((E+u.dot(C,B))/(E*E),we.tensor(M,M))),xt.div(xt.add(we.tensor(B,M),we.tensor(M,B)),E)),n=I,l=v,g=m,++x}return new On(n,l,g,b,x,F)},we.numericalGradient=function(t,n){var r=n.length,i=t(n);if(i==NaN)throw new K("gradient: f(x) is a NaN!");for(var a=n.slice(0),h,l,v=[],_,f=.001,g,m,b,x=0,M,I,C,B=0;B<r;)for(var E=B++,T=Math.max(1e-6*i,1e-8);;){if(++x,x>20)throw new K("Numerical gradient fails");if(a[E]=n[E]+T,h=t(a),a[E]=n[E]-T,l=t(a),a[E]=n[E],isNaN(h)||isNaN(l)){T/=16;continue}if(v[E]=(h-l)/(2*T),g=n[E]-T,m=n[E],b=n[E]+T,M=(h-i)/T,I=(i-l)/T,C=u.max([Math.abs(v[E]),Math.abs(i),Math.abs(h),Math.abs(l),Math.abs(g),Math.abs(m),Math.abs(b),1e-8]),_=Math.min(u.max([Math.abs(M-v[E]),Math.abs(I-v[E]),Math.abs(M-I)])/C,T/C),_>f)T/=16;else break}return v},we.tensor=function(t,n){for(var r=t.length,i=n.length,a=[],h,l,v=r-1;v>=0;){h=[],l=t[v];for(var _=i-1;_>=3;)h[_]=l*n[_],--_,h[_]=l*n[_],--_,h[_]=l*n[_],--_,h[_]=l*n[_],--_;for(;_>=0;)h[_]=l*n[_],--_;a[v]=h,v--}return a};var On=function(t,n,r,i,a,h){this.solution=t,this.value=n,this.gradient=r,this.invHessian=i,this.iterations=a,this.message=h};y["verb.core.MinimizationResult"]=On,On.__name__=["verb","core","MinimizationResult"],On.prototype={__class__:On};var dn=function(){};y["verb.core.ISerializable"]=dn,dn.__name__=["verb","core","ISerializable"],dn.prototype={__class__:dn};var xr=p.core.Deserializer=function(){};y["verb.core.Deserializer"]=xr,xr.__name__=["verb","core","Deserializer"],xr.deserialize=function(t){var n=new Rt(t),r=n.unserialize();return r};var ce=p.core.Trig=function(){};y["verb.core.Trig"]=ce,ce.__name__=["verb","core","Trig"],ce.isPointInPlane=function(t,n,r){return Math.abs(u.dot(u.sub(t,n.origin),n.normal))<r},ce.distToSegment=function(t,n,r){var i=ce.segmentClosestPoint(n,t,r,0,1);return u.dist(n,i.pt)},ce.rayClosestPoint=function(t,n,r){var i=u.sub(t,n),a=u.dot(i,r),h=u.add(n,u.mul(a,r));return h},ce.distToRay=function(t,n,r){var i=ce.rayClosestPoint(t,n,r),a=u.sub(i,t);return u.norm(a)},ce.threePointsAreFlat=function(t,n,r,i){var a=u.sub(n,t),h=u.sub(r,t),l=u.cross(a,h),v=u.dot(l,l);return v<i},ce.segmentClosestPoint=function(t,n,r,i,a){var h=u.sub(r,n),l=u.norm(h);if(l<tt.EPSILON)return{u:i,pt:n};var v=n,_=u.mul(1/l,h),f=u.sub(t,v),g=u.dot(f,_);return g<0?{u:i,pt:n}:g>l?{u:a,pt:r}:{u:i+(a-i)*g/l,pt:u.add(v,u.mul(g,_))}};var u=p.core.Vec=function(){};y["verb.core.Vec"]=u,u.__name__=["verb","core","Vec"],u.angleBetween=function(t,n){return Math.acos(u.dot(t,n)/(u.norm(t)*u.norm(n)))},u.positiveAngleBetween=function(t,n,r){var i=u.cross(t,n),a=u.norm(t),h=u.norm(n),l=a*h,v=u.dot(t,n),_=u.norm(i)/l,f=v/l,g=Math.atan2(_,f),m=u.dot(r,i);return Math.abs(m)<tt.EPSILON||m>0?g:-g},u.signedAngleBetween=function(t,n,r){var i=u.cross(t,n),a=u.norm(t),h=u.norm(n),l=a*h,v=u.dot(t,n),_=u.norm(i)/l,f=v/l,g=Math.atan2(_,f),m=u.dot(r,i);return m>0?g:2*Math.PI-g},u.angleBetweenNormalized2d=function(t,n){var r=t[0]*n[1]-t[1]*n[0];return Math.atan2(r,u.dot(t,n))},u.domain=function(t){return G.last(t)-G.first(t)},u.range=function(t){for(var n=[],r=0,i=0;i<t;)i++,n.push(r),r+=1;return n},u.span=function(t,n,r){if(r==null)return[];if(r<tt.EPSILON)return[];if(t>n&&r>0)return[];if(n>t&&r<0)return[];for(var i=[],a=t;a<=n;)i.push(a),a+=r;return i},u.neg=function(t){return t.map(function(n){return-n})},u.min=function(t){return W.fold(t,function(n,r){return Math.min(n,r)},1/0)},u.max=function(t){return W.fold(t,function(n,r){return Math.max(n,r)},-1/0)},u.all=function(t){return W.fold(t,function(n,r){return r&&n},!0)},u.finite=function(t){return t.map(function(n){return isFinite(n)})},u.onRay=function(t,n,r){return u.add(t,u.mul(r,n))},u.lerp=function(t,n,r){return u.add(u.mul(t,n),u.mul(1-t,r))},u.normalized=function(t){return u.div(t,u.norm(t))},u.cross=function(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]},u.dist=function(t,n){return u.norm(u.sub(t,n))},u.distSquared=function(t,n){return u.normSquared(u.sub(t,n))},u.sum=function(t){return W.fold(t,function(n,r){return r+n},0)},u.addAll=function(t){var n=be(t)();if(!n.hasNext())return null;var r=n.next().length;return W.fold(t,function(i,a){return u.add(a,i)},u.rep(r,0))},u.addAllMutate=function(t){for(var n=t[0],r=1,i=t.length;r<i;){var a=r++;u.addMutate(n,t[a])}},u.addMulMutate=function(t,n,r){for(var i=0,a=t.length;i<a;){var h=i++;t[h]=t[h]+n*r[h]}},u.subMulMutate=function(t,n,r){for(var i=0,a=t.length;i<a;){var h=i++;t[h]=t[h]-n*r[h]}},u.addMutate=function(t,n){for(var r=0,i=t.length;r<i;){var a=r++;t[a]=t[a]+n[a]}},u.subMutate=function(t,n){for(var r=0,i=t.length;r<i;){var a=r++;t[a]=t[a]-n[a]}},u.mulMutate=function(t,n){for(var r=0,i=n.length;r<i;){var a=r++;n[a]=n[a]*t}},u.norm=function(t){var n=u.normSquared(t);return n!=0?Math.sqrt(n):n},u.normSquared=function(t){return W.fold(t,function(n,r){return r+n*n},0)},u.rep=function(t,n){for(var r=[],i=0;i<t;)i++,r.push(n);return r},u.zeros1d=function(t){for(var n=[],r=0;r<t;)r++,n.push(0);return n},u.zeros2d=function(t,n){for(var r=[],i=0;i<t;)i++,r.push(u.zeros1d(n));return r},u.zeros3d=function(t,n,r){for(var i=[],a=0;a<t;)a++,i.push(u.zeros2d(n,r));return i},u.dot=function(t,n){for(var r=0,i=0,a=t.length;i<a;){var h=i++;r+=t[h]*n[h]}return r},u.add=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(t[h]+n[h])}return r},u.mul=function(t,n){for(var r=[],i=0,a=n.length;i<a;){var h=i++;r.push(t*n[h])}return r},u.div=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(t[h]/n)}return r},u.sub=function(t,n){for(var r=[],i=0,a=t.length;i<a;){var h=i++;r.push(t[h]-n[h])}return r},u.isZero=function(t){for(var n=0,r=t.length;n<r;){var i=n++;if(Math.abs(t[i])>tt.TOLERANCE)return!1}return!0},u.sortedSetUnion=function(t,n){for(var r=[],i=0,a=0;i<t.length||a<n.length;){if(i>=t.length){r.push(n[a]),a++;continue}else if(a>=n.length){r.push(t[i]),i++;continue}var h=t[i]-n[a];if(Math.abs(h)<tt.EPSILON){r.push(t[i]),i++,a++;continue}if(h>0){r.push(n[a]),a++;continue}r.push(t[i]),i++}return r},u.sortedSetSub=function(t,n){for(var r=[],i=0,a=0;i<t.length;){if(a>=n.length){r.push(t[i]),i++;continue}if(Math.abs(t[i]-n[a])<tt.EPSILON){i++,a++;continue}r.push(t[i]),i++}return r};var _t=p.eval.Analyze=function(){};y["verb.eval.Analyze"]=_t,_t.__name__=["verb","eval","Analyze"],_t.knotMultiplicities=function(t){for(var n=[new fn(t[0],0)],r=n[0],i=0;i<t.length;){var a=t[i];++i,Math.abs(a-r.knot)>tt.EPSILON&&(r=new fn(a,0),n.push(r)),r.inc()}return n},_t.isRationalSurfaceClosed=function(t,n){n==null&&(n=!0);var r;n?r=t.controlPoints:r=xt.transpose(t.controlPoints);for(var i=0,a=r[0].length;i<a;){var h=i++,l=u.dist(G.first(r)[h],G.last(r)[h])<tt.EPSILON;if(!l)return!1}return!0},_t.rationalSurfaceClosestPoint=function(t,n){var r=_t.rationalSurfaceClosestParam(t,n);return P.rationalSurfacePoint(t,r[0],r[1])},_t.rationalSurfaceClosestParam=function(t,n){for(var r=5,i=0,a,h=1e-4,l=5e-4,v,_=t.knotsU[0],f=G.last(t.knotsU),g=t.knotsV[0],m=G.last(t.knotsV),b=_t.isRationalSurfaceClosed(t),x=_t.isRationalSurfaceClosed(t,!1),M,I=At.rationalSurfaceAdaptive(t,new Ke),C=1/0,B=0,E=I.points.length;B<E;){var T=B++,U=I.points[T],F=u.normSquared(u.sub(n,U));F<C&&(C=F,M=I.uvs[T])}for(var j=function(kt){return P.rationalSurfaceDerivatives(t,kt[0],kt[1],2)},D=function(kt,Et,St){var Lt=Et[1][0],re=Et[0][1],ge=Et[2][0],ee=Et[0][2],$t=Et[1][1],ie=Et[1][1],_e=u.dot(Lt,St),xe=u.dot(re,St),Ee=[-_e,-xe],Me=u.dot(Lt,Lt)+u.dot(ge,St),Ae=u.dot(Lt,re)+u.dot($t,St),Pe=u.dot(Lt,re)+u.dot(ie,St),Ue=u.dot(re,re)+u.dot(ee,St),yn=[[Me,Ae],[Pe,Ue]],tn=xt.solve(yn,Ee);return u.add(tn,kt)};i<r;){a=j(M),v=u.sub(a[0][0],n);var R=u.norm(v),q=u.dot(a[1][0],v),H=u.norm(a[1][0])*R,$=u.dot(a[0][1],v),nt=u.norm(a[0][1])*R,st=q/H,rt=$/nt,at=R<h,et=st<l,ot=rt<l;if(at&&et&&ot)return M;var O=D(M,a,v);O[0]<_?b?O=[f-(O[0]-_),O[1]]:O=[_+tt.EPSILON,O[1]]:O[0]>f&&(b?O=[_+(O[0]-f),O[1]]:O=[f-tt.EPSILON,O[1]]),O[1]<g?x?O=[O[0],m-(O[1]-g)]:O=[O[0],g+tt.EPSILON]:O[1]>m&&(x?O=[O[0],g+(O[0]-m)]:O=[O[0],m-tt.EPSILON]);var lt=u.norm(u.mul(O[0]-M[0],a[1][0])),mt=u.norm(u.mul(O[1]-M[1],a[0][1]));if(lt+mt<h)return M;M=O,i++}return M},_t.rationalCurveClosestPoint=function(t,n){return P.rationalCurvePoint(t,_t.rationalCurveClosestParam(t,n))},_t.rationalCurveClosestParam=function(t,n){for(var r=1/0,i=0,a=At.rationalCurveRegularSample(t,t.controlPoints.length*t.degree,!0),h=0,l=a.length-1;h<l;){var v=h++,_=a[v][0],f=a[v+1][0],g=a[v].slice(1),m=a[v+1].slice(1),b=ce.segmentClosestPoint(n,g,m,_,f),x=u.norm(u.sub(n,b.pt));x<r&&(r=x,i=b.u)}for(var M=5,I=0,C,B=1e-4,E=5e-4,T,U=t.knots[0],F=G.last(t.knots),j=u.normSquared(u.sub(t.controlPoints[0],G.last(t.controlPoints)))<tt.EPSILON,D=i,R=function(O){return P.rationalCurveDerivatives(t,O,2)},q=function(O,lt,mt){var kt=u.dot(lt[1],mt),Et=u.dot(lt[2],mt),St=u.dot(lt[1],lt[1]),Lt=Et+St;return O-kt/Lt};I<M;){C=R(D),T=u.sub(C[0],n);var H=u.norm(T),$=u.dot(C[1],T),nt=u.norm(C[1])*H,st=$/nt,rt=H<B,at=Math.abs(st)<E;if(rt&&at)return D;var et=q(D,C,T);et<U?j?et=F-(et-U):et=U:et>F&&(j?et=U+(et-F):et=F);var ot=u.norm(u.mul(et-D,C[1]));if(ot<B)return D;D=et,I++}return D},_t.rationalCurveParamAtArcLength=function(t,n,r,i,a){if(r==null&&(r=.001),n<tt.EPSILON)return t.knots[0];var h;i!=null?h=i:h=vt.decomposeCurveIntoBeziers(t);var l=0;h[l];var v=-tt.EPSILON,_;for(a!=null?_=a:_=[];v<n&&l<h.length;){if(l<_.length?_[l]=_[l]:_[l]=_t.rationalBezierCurveArcLength(t),v+=_[l],n<v+tt.EPSILON)return _t.rationalBezierCurveParamAtArcLength(t,n,r,_[l]);l++}return-1},_t.rationalBezierCurveParamAtArcLength=function(t,n,r,i){if(n<0)return t.knots[0];var a;if(i!=null?a=i:a=_t.rationalBezierCurveArcLength(t),n>a)return G.last(t.knots);var h=t.knots[0],l=0,v=G.last(t.knots),_=a,f=0,g=0,m;for(r!=null?m=r:m=tt.TOLERANCE*2;_-l>m;)f=(h+v)/2,g=_t.rationalBezierCurveArcLength(t,f),g>n?(v=f,_=g):(h=f,l=g);return(h+v)/2},_t.rationalCurveArcLength=function(t,n,r){r==null&&(r=16),n==null?n=G.last(t.knots):n=n;for(var i=vt.decomposeCurveIntoBeziers(t),a=0,h=i[0],l=0;a<i.length&&h.knots[0]+tt.EPSILON<n;){var v=Math.min(G.last(h.knots),n);l+=_t.rationalBezierCurveArcLength(h,v,r),h=i[++a]}return l},_t.rationalBezierCurveArcLength=function(t,n,r){r==null&&(r=16);var i;n==null?i=G.last(t.knots):i=n;for(var a=(i-t.knots[0])/2,h=0,l=t.degree+r,v,_,f=0;f<l;){var g=f++;v=a*_t.Tvalues[l][g]+a+t.knots[0],_=P.rationalCurveDerivatives(t,v,1),h+=_t.Cvalues[l][g]*u.norm(_[1])}return a*h};var fn=p.eval.KnotMultiplicity=function(t,n){this.knot=t,this.mult=n};y["verb.eval.KnotMultiplicity"]=fn,fn.__name__=["verb","eval","KnotMultiplicity"],fn.prototype={inc:function(){this.mult++},__class__:fn};var me=p.eval.Check=function(){};y["verb.eval.Check"]=me,me.__name__=["verb","eval","Check"],me.isValidKnotVector=function(t,n){if(t.length==0||t.length<(n+1)*2)return!1;for(var r=G.first(t),i=0,a=n+1;i<a;){var h=i++;if(Math.abs(t[h]-r)>tt.EPSILON)return!1}r=G.last(t);for(var l=t.length-n-1,v=t.length;l<v;){var _=l++;if(Math.abs(t[_]-r)>tt.EPSILON)return!1}return me.isNonDecreasing(t)},me.isNonDecreasing=function(t){for(var n=G.first(t),r=0,i=t.length;r<i;){var a=r++;if(t[a]<n-tt.EPSILON)return!1;n=t[a]}return!0},me.isValidNurbsCurveData=function(t){if(t.controlPoints==null)throw new K("Control points array cannot be null!");if(t.degree==null)throw new K("Degree cannot be null!");if(t.degree<1)throw new K("Degree must be greater than 1!");if(t.knots==null)throw new K("Knots cannot be null!");if(t.knots.length!=t.controlPoints.length+t.degree+1)throw new K("controlPoints.length + degree + 1 must equal knots.length!");if(!me.isValidKnotVector(t.knots,t.degree))throw new K("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return t},me.isValidNurbsSurfaceData=function(t){if(t.controlPoints==null)throw new K("Control points array cannot be null!");if(t.degreeU==null)throw new K("DegreeU cannot be null!");if(t.degreeV==null)throw new K("DegreeV cannot be null!");if(t.degreeU<1)throw new K("DegreeU must be greater than 1!");if(t.degreeV<1)throw new K("DegreeV must be greater than 1!");if(t.knotsU==null)throw new K("KnotsU cannot be null!");if(t.knotsV==null)throw new K("KnotsV cannot be null!");if(t.knotsU.length!=t.controlPoints.length+t.degreeU+1)throw new K("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(t.knotsV.length!=t.controlPoints[0].length+t.degreeV+1)throw new K("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!me.isValidKnotVector(t.knotsU,t.degreeU)||!me.isValidKnotVector(t.knotsV,t.degreeV))throw new K("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return t};var Zt=p.eval.Divide=function(){};y["verb.eval.Divide"]=Zt,Zt.__name__=["verb","eval","Divide"],Zt.surfaceSplit=function(t,n,r){r==null&&(r=!1);var i,a,h;r?(h=t.controlPoints,i=t.knotsV,a=t.degreeV):(h=xt.transpose(t.controlPoints),i=t.knotsU,a=t.degreeU);for(var l,v=[],_=0,f=a+1;_<f;)_++,v.push(n);l=v;for(var g=[],m=[],b=P.knotSpan(a,n,i),x=null,M=0;M<h.length;){var I=h[M];++M,x=vt.curveKnotRefine(new Ct(a,i,I),l),g.push(x.controlPoints.slice(0,b+1)),m.push(x.controlPoints.slice(b+1))}var C=x.knots.slice(0,b+a+2),B=x.knots.slice(b+1);return r?[new Ot(t.degreeU,a,t.knotsU.slice(),C,g),new Ot(t.degreeU,a,t.knotsU.slice(),B,m)]:(g=xt.transpose(g),m=xt.transpose(m),[new Ot(a,t.degreeV,C,t.knotsV.slice(),g),new Ot(a,t.degreeV,B,t.knotsV.slice(),m)])},Zt.curveSplit=function(t,n){var r=t.degree;t.controlPoints;for(var i=t.knots,a,h=[],l=0,v=r+1;l<v;)l++,h.push(n);a=h;var _=vt.curveKnotRefine(t,a),f=P.knotSpan(r,n,i),g=_.knots.slice(0,f+r+2),m=_.knots.slice(f+1),b=_.controlPoints.slice(0,f+1),x=_.controlPoints.slice(f+1);return[new Ct(r,g,b),new Ct(r,m,x)]},Zt.rationalCurveByEqualArcLength=function(t,n){var r=_t.rationalCurveArcLength(t),i=r/n;return Zt.rationalCurveByArcLength(t,i)},Zt.rationalCurveByArcLength=function(t,n){var r=vt.decomposeCurveIntoBeziers(t),i=r.map(function(b){return _t.rationalBezierCurveArcLength(b)}),a=u.sum(i),h=[new mn(t.knots[0],0)];if(n>a)return h;for(var l=n,v=0,_=l,f=0,g=0,m;v<r.length;){for(f+=i[v];_<f+tt.EPSILON;)m=_t.rationalBezierCurveParamAtArcLength(r[v],_-g,tt.TOLERANCE,i[v]),h.push(new mn(m,_)),_+=l;g+=i[v],v++}return h};var mn=p.eval.CurveLengthSample=function(t,n){this.u=t,this.len=n};y["verb.eval.CurveLengthSample"]=mn,mn.__name__=["verb","eval","CurveLengthSample"],mn.prototype={__class__:mn};var P=p.eval.Eval=function(){};y["verb.eval.Eval"]=P,P.__name__=["verb","eval","Eval"],P.rationalCurveTangent=function(t,n){var r=P.rationalCurveDerivatives(t,n,1);return r[1]},P.rationalSurfaceNormal=function(t,n,r){var i=P.rationalSurfaceDerivatives(t,n,r,1);return u.cross(i[1][0],i[0][1])},P.rationalSurfaceDerivatives=function(t,n,r,i){i==null&&(i=1);for(var a=P.surfaceDerivatives(t,n,r,i),h=P.rational2d(a),l=P.weight2d(a),v=[],_=h[0][0].length,f=0,g=i+1;f<g;){var m=f++;v.push([]);for(var b=0,x=i-m+1;b<x;){for(var M=b++,I=h[m][M],C=1,B=M+1;C<B;){var E=C++;u.subMulMutate(I,Pt.get(M,E)*l[0][E],v[m][M-E])}for(var T=1,U=m+1;T<U;){var F=T++;u.subMulMutate(I,Pt.get(m,F)*l[F][0],v[m-F][M]);for(var j=u.zeros1d(_),D=1,R=M+1;D<R;){var q=D++;u.addMulMutate(j,Pt.get(M,q)*l[F][q],v[m-F][M-q])}u.subMulMutate(I,Pt.get(m,F),j)}u.mulMutate(1/l[0][0],I),v[m].push(I)}}return v},P.rationalSurfacePoint=function(t,n,r){return P.dehomogenize(P.surfacePoint(t,n,r))},P.rationalCurveDerivatives=function(t,n,r){r==null&&(r=1);for(var i=P.curveDerivatives(t,n,r),a=P.rational1d(i),h=P.weight1d(i),l=[],v=0,_=r+1;v<_;){for(var f=v++,g=a[f],m=1,b=f+1;m<b;){var x=m++;u.subMulMutate(g,Pt.get(f,x)*h[x],l[f-x])}u.mulMutate(1/h[0],g),l.push(g)}return l},P.rationalCurvePoint=function(t,n){return P.dehomogenize(P.curvePoint(t,n))},P.surfaceDerivatives=function(t,n,r,i){var a=t.knotsU.length-t.degreeU-2,h=t.knotsV.length-t.degreeV-2;return P.surfaceDerivativesGivenNM(a,h,t,n,r,i)},P.surfaceDerivativesGivenNM=function(t,n,r,i,a,h){var l=r.degreeU,v=r.degreeV,_=r.controlPoints,f=r.knotsU,g=r.knotsV;if(!P.areValidRelations(l,_.length,f.length)||!P.areValidRelations(v,_[0].length,g.length))throw new K("Invalid relations between control points, knot vector, and n");var m=_[0][0].length,b;h<l?b=h:b=l;var x;h<v?x=h:x=v;for(var M=u.zeros3d(h+1,h+1,m),I=P.knotSpanGivenN(t,l,i,f),C=P.knotSpanGivenN(n,v,a,g),B=P.derivativeBasisFunctionsGivenNI(I,i,l,t,f),E=P.derivativeBasisFunctionsGivenNI(C,a,v,n,g),T=u.zeros2d(v+1,m),U=0,F=0,j=b+1;F<j;){for(var D=F++,R=0,q=v+1;R<q;){var H=R++;T[H]=u.zeros1d(m);for(var $=0,nt=l+1;$<nt;){var st=$++;u.addMulMutate(T[H],B[D][st],_[I-l+st][C-v+H])}}var rt=h-D;rt<x?U=rt:U=x;for(var at=0,et=U+1;at<et;){var ot=at++;M[D][ot]=u.zeros1d(m);for(var O=0,lt=v+1;O<lt;){var mt=O++;u.addMulMutate(M[D][ot],E[ot][mt],T[mt])}}}return M},P.surfacePoint=function(t,n,r){var i=t.knotsU.length-t.degreeU-2,a=t.knotsV.length-t.degreeV-2;return P.surfacePointGivenNM(i,a,t,n,r)},P.surfacePointGivenNM=function(t,n,r,i,a){var h=r.degreeU,l=r.degreeV,v=r.controlPoints,_=r.knotsU,f=r.knotsV;if(!P.areValidRelations(h,v.length,_.length)||!P.areValidRelations(l,v[0].length,f.length))throw new K("Invalid relations between control points, knot vector, and n");for(var g=v[0][0].length,m=P.knotSpanGivenN(t,h,i,_),b=P.knotSpanGivenN(n,l,a,f),x=P.basisFunctionsGivenKnotSpanIndex(m,i,h,_),M=P.basisFunctionsGivenKnotSpanIndex(b,a,l,f),I=m-h,C=b,B=u.zeros1d(g),E=u.zeros1d(g),T=0,U=l+1;T<U;){var F=T++;E=u.zeros1d(g),C=b-l+F;for(var j=0,D=h+1;j<D;){var R=j++;u.addMulMutate(E,x[R],v[I+R][C])}u.addMulMutate(B,M[F],E)}return B},P.curveRegularSamplePoints=function(t,n){for(var r=P.curveDerivatives(t,t.knots[0],t.degree),i=1/n,a=i*i,h=r[0],l=u.mul(i,r[1]),v=u.mul(a*.5,r[2]),_=u.mul(a*i*.5,r[3]),f=u.add(v,v),g=u.add(_,_),m=u.mul(.3333333333333333,_),b=[],x=0,M=n+1;x<M;)x++,b.push(P.dehomogenize(h)),u.addAllMutate([h,l,v,m]),u.addAllMutate([l,f,_]),u.addAllMutate([f,g]),u.addAllMutate([v,_]);return b},P.curveRegularSamplePoints2=function(t,n){for(var r=P.curveDerivatives(t,t.knots[0],t.degree),i=1/n,a=i*i,h=r[0],l=u.mul(i,r[1]),v=u.mul(a*.5,r[2]),_=u.mul(a*i*.5,r[3]),f=u.add(v,v),g=u.add(_,_),m=u.mul(.3333333333333333,_),b=[],x=0,M=n+1;x<M;)x++,b.push(P.dehomogenize(h)),u.addAllMutate([h,l,v,m]),u.addAllMutate([l,f,_]),u.addAllMutate([f,g]),u.addAllMutate([v,_]);return b},P.rationalSurfaceRegularSampleDerivatives=function(t,n,r,i){for(var a=P.surfaceRegularSampleDerivatives(t,n,r,i),h=[],l=n+1,v=r+1,_=i+1,f=0;f<l;){var g=f++,m=[];h.push(m);for(var b=0;b<v;){for(var x=b++,M=a[g][x],I=P.rational2d(M),C=P.weight2d(M),B=[],E=I[0][0].length,T=0;T<_;){var U=T++;B.push([]);for(var F=0,j=_-U;F<j;){for(var D=F++,R=I[U][D],q=1,H=D+1;q<H;){var $=q++;u.subMulMutate(R,Pt.get(D,$)*C[0][$],B[U][D-$])}for(var nt=1,st=U+1;nt<st;){var rt=nt++;u.subMulMutate(R,Pt.get(U,rt)*C[rt][0],B[U-rt][D]);for(var at=u.zeros1d(E),et=1,ot=D+1;et<ot;){var O=et++;u.addMulMutate(at,Pt.get(D,O)*C[rt][O],B[U-rt][D-O])}u.subMulMutate(R,Pt.get(U,rt),at)}u.mulMutate(1/C[0][0],R),B[U].push(R)}}m.push(B)}}return h},P.surfaceRegularSampleDerivatives=function(t,n,r,i){var a=t.degreeU,h=t.degreeV,l=t.controlPoints,v=t.knotsU,_=t.knotsV,f=l[0][0].length;(G.last(v)-v[0])/n,(G.last(_)-_[0])/r;for(var g=P.regularlySpacedDerivativeBasisFunctions(a,v,n),m=g.item0,b=g.item1,x=P.regularlySpacedDerivativeBasisFunctions(h,_,r),M=x.item0,I=x.item1,C=[],B=n+1,E=r+1,T=0;T<B;){var U=T++,F=[];C.push(F);for(var j=0;j<E;){var D=j++;F.push(P.surfaceDerivativesGivenBasesKnotSpans(a,h,l,m[U],M[D],b[U],I[D],f,i))}}return C},P.rationalSurfaceRegularSamplePoints=function(t,n,r){return P.dehomogenize2d(P.surfaceRegularSamplePoints(t,n,r))},P.surfaceRegularSamplePoints=function(t,n,r){var i=t.degreeU,a=t.degreeV,h=t.controlPoints,l=t.knotsU,v=t.knotsV,_=h[0][0].length;(G.last(l)-l[0])/n,(G.last(v)-v[0])/r;for(var f=P.regularlySpacedBasisFunctions(i,l,n),g=f.item0,m=f.item1,b=P.regularlySpacedBasisFunctions(a,v,r),x=b.item0,M=b.item1,I=[],C=n+1,B=r+1,E=0;E<C;){var T=E++,U=[];I.push(U);for(var F=0;F<B;){var j=F++;U.push(P.surfacePointGivenBasesKnotSpans(i,a,h,g[T],x[j],m[T],M[j],_))}}return I},P.regularlySpacedBasisFunctions=function(t,n,r){for(var i=n.length-t-2,a=(G.last(n)-n[0])/r,h=[],l=[],v=n[0],_=P.knotSpanGivenN(i,t,v,n),f=r+1,g=0;g<f;){for(g++;v>=n[_+1];)_++;l.push(_),h.push(P.basisFunctionsGivenKnotSpanIndex(_,v,t,n)),v+=a}return new qt(l,h)},P.regularlySpacedDerivativeBasisFunctions=function(t,n,r){for(var i=n.length-t-2,a=(G.last(n)-n[0])/r,h=[],l=[],v=n[0],_=P.knotSpanGivenN(i,t,v,n),f=r+1,g=0;g<f;){for(g++;v>=n[_+1];)_++;l.push(_),h.push(P.derivativeBasisFunctionsGivenNI(_,v,t,i,n)),v+=a}return new qt(l,h)},P.surfacePointGivenBasesKnotSpans=function(t,n,r,i,a,h,l,v){for(var _=u.zeros1d(v),f,g=i-t,m=a-n,b=0,x=n+1;b<x;){var M=b++;f=u.zeros1d(v);for(var I=0,C=t+1;I<C;){var B=I++;u.addMulMutate(f,h[B],r[g+B][m])}m++,u.addMulMutate(_,l[M],f)}return _},P.surfaceDerivativesGivenBasesKnotSpans=function(t,n,r,i,a,h,l,v,_){var f=r[0][0].length,g;_<t?g=_:g=t;var m;_<n?m=_:m=n;for(var b=u.zeros3d(g+1,m+1,f),x=u.zeros2d(n+1,f),M=0,I=0,C=g+1;I<C;){for(var B=I++,E=0,T=n+1;E<T;){var U=E++;x[U]=u.zeros1d(f);for(var F=0,j=t+1;F<j;){var D=F++;u.addMulMutate(x[U],h[B][D],r[i-t+D][a-n+U])}}var R=_-B;R<m?M=R:M=m;for(var q=0,H=M+1;q<H;){var $=q++;b[B][$]=u.zeros1d(f);for(var nt=0,st=n+1;nt<st;){var rt=nt++;u.addMulMutate(b[B][$],l[$][rt],x[rt])}}}return b},P.curveDerivatives=function(t,n,r){var i=t.knots.length-t.degree-2;return P.curveDerivativesGivenN(i,t,n,r)},P.curveDerivativesGivenN=function(t,n,r,i){var a=n.degree,h=n.controlPoints,l=n.knots;if(!P.areValidRelations(a,h.length,l.length))throw new K("Invalid relations between control points, knot vector, and n");var v=h[0].length,_;i<a?_=i:_=a;for(var f=u.zeros2d(i+1,v),g=P.knotSpanGivenN(t,a,r,l),m=P.derivativeBasisFunctionsGivenNI(g,r,a,_,l),b=0,x=_+1;b<x;)for(var M=b++,I=0,C=a+1;I<C;){var B=I++;u.addMulMutate(f[M],m[M][B],h[g-a+B])}return f},P.curvePoint=function(t,n){var r=t.knots.length-t.degree-2;return P.curvePointGivenN(r,t,n)},P.areValidRelations=function(t,n,r){return n+t+1-r==0},P.curvePointGivenN=function(t,n,r){var i=n.degree,a=n.controlPoints,h=n.knots;if(!P.areValidRelations(i,a.length,h.length))throw new K("Invalid relations between control points, knot Array, and n");for(var l=P.knotSpanGivenN(t,i,r,h),v=P.basisFunctionsGivenKnotSpanIndex(l,r,i,h),_=u.zeros1d(a[0].length),f=0,g=i+1;f<g;){var m=f++;u.addMulMutate(_,v[m],a[l-i+m])}return _},P.volumePoint=function(t,n,r,i){var a=t.knotsU.length-t.degreeU-2,h=t.knotsV.length-t.degreeV-2,l=t.knotsW.length-t.degreeW-2;return P.volumePointGivenNML(t,a,h,l,n,r,i)},P.volumePointGivenNML=function(t,n,r,i,a,h,l){if(!P.areValidRelations(t.degreeU,t.controlPoints.length,t.knotsU.length)||!P.areValidRelations(t.degreeV,t.controlPoints[0].length,t.knotsV.length)||!P.areValidRelations(t.degreeW,t.controlPoints[0][0].length,t.knotsW.length))throw new K("Invalid relations between control points and knot vector");for(var v=t.controlPoints,_=t.degreeU,f=t.degreeV,g=t.degreeW,m=t.knotsU,b=t.knotsV,x=t.knotsW,M=v[0][0][0].length,I=P.knotSpanGivenN(n,_,a,m),C=P.knotSpanGivenN(r,f,h,b),B=P.knotSpanGivenN(i,g,l,x),E=P.basisFunctionsGivenKnotSpanIndex(I,a,_,m),T=P.basisFunctionsGivenKnotSpanIndex(C,h,f,b),U=P.basisFunctionsGivenKnotSpanIndex(B,l,g,x),F=I-_,j=u.zeros1d(M),D=u.zeros1d(M),R=u.zeros1d(M),q=0,H=g+1;q<H;){var $=q++;R=u.zeros1d(M);for(var nt=B-g+$,st=0,rt=f+1;st<rt;){var at=st++;D=u.zeros1d(M);for(var et=C-f+at,ot=0,O=_+1;ot<O;){var lt=ot++;u.addMulMutate(D,E[lt],v[F+lt][et][nt])}u.addMulMutate(R,T[at],D)}u.addMulMutate(j,U[$],R)}return j},P.derivativeBasisFunctions=function(t,n,r){var i=P.knotSpan(n,t,r),a=r.length-1,h=a-n-1;return P.derivativeBasisFunctionsGivenNI(i,t,n,h,r)},P.derivativeBasisFunctionsGivenNI=function(t,n,r,i,a){var h=u.zeros2d(r+1,r+1),l=u.zeros1d(r+1),v=u.zeros1d(r+1),_=0,f=0;h[0][0]=1;for(var g=1,m=r+1;g<m;){var b=g++;l[b]=n-a[t+1-b],v[b]=a[t+b]-n,_=0;for(var x=0;x<b;){var M=x++;h[b][M]=v[M+1]+l[b-M],f=h[M][b-1]/h[b][M],h[M][b]=_+v[M+1]*f,_=l[b-M]*f}h[b][b]=_}for(var I=u.zeros2d(i+1,r+1),C=u.zeros2d(2,r+1),B=0,E=1,T=0,U=0,F=0,j=0,D=0,R=0,q=r+1;R<q;){var H=R++;I[0][H]=h[H][r]}for(var $=0,nt=r+1;$<nt;){var st=$++;B=0,E=1,C[0][0]=1;for(var rt=1,at=i+1;rt<at;){var et=rt++;T=0,U=st-et,F=r-et,st>=et&&(C[E][0]=C[B][0]/h[F+1][U],T=C[E][0]*h[U][F]),U>=-1?j=1:j=-U,st-1<=F?D=et-1:D=r-st;for(var ot=j,O=D+1;ot<O;){var lt=ot++;C[E][lt]=(C[B][lt]-C[B][lt-1])/h[F+1][U+lt],T+=C[E][lt]*h[U+lt][F]}st<=F&&(C[E][et]=-C[B][et-1]/h[F+1][st],T+=C[E][et]*h[st][F]),I[et][st]=T;var mt=B;B=E,E=mt}}for(var kt=r,Et=1,St=i+1;Et<St;){for(var Lt=Et++,re=0,ge=r+1;re<ge;){var ee=re++;I[Lt][ee]*=kt}kt*=r-Lt}return I},P.basisFunctions=function(t,n,r){var i=P.knotSpan(n,t,r);return P.basisFunctionsGivenKnotSpanIndex(i,t,n,r)},P.basisFunctionsGivenKnotSpanIndex=function(t,n,r,i){var a=u.zeros1d(r+1),h=u.zeros1d(r+1),l=u.zeros1d(r+1),v=0,_=0;a[0]=1;for(var f=1,g=r+1;f<g;){var m=f++;h[m]=n-i[t+1-m],l[m]=i[t+m]-n,v=0;for(var b=0;b<m;){var x=b++;_=a[x]/(l[x+1]+h[m-x]),a[x]=v+l[x+1]*_,v=h[m-x]*_}a[m]=v}return a},P.knotSpan=function(t,n,r){return P.knotSpanGivenN(r.length-t-2,t,n,r)},P.knotSpanGivenN=function(t,n,r,i){if(r>i[t+1]-tt.EPSILON)return t;if(r<i[n]+tt.EPSILON)return n;for(var a=n,h=t+1,l=Math.floor((a+h)/2);r<i[l]||r>=i[l+1];)r<i[l]?h=l:a=l,l=Math.floor((a+h)/2);return l},P.dehomogenize=function(t){for(var n=t.length,r=[],i=t[n-1],a=t.length-1,h=0;h<a;){var l=h++;r.push(t[l]/i)}return r},P.rational1d=function(t){var n=t[0].length-1;return t.map(function(r){return r.slice(0,n)})},P.rational2d=function(t){return t.map(P.rational1d)},P.weight1d=function(t){var n=t[0].length-1;return t.map(function(r){return r[n]})},P.weight2d=function(t){return t.map(P.weight1d)},P.dehomogenize1d=function(t){return t.map(P.dehomogenize)},P.dehomogenize2d=function(t){return t.map(P.dehomogenize1d)},P.homogenize1d=function(t,n){var r=t.length,i=t[0].length,a=[],h=0,l=[],v;n!=null?v=n:v=u.rep(t.length,1);for(var _=0;_<r;){var f=_++,g=[];l=t[f],h=v[f];for(var m=0;m<i;){var b=m++;g.push(l[b]*h)}g.push(h),a.push(g)}return a},P.homogenize2d=function(t,n){var r=t.length,i=[],a;if(n!=null)a=n;else{for(var h=[],l=0;l<r;)l++,h.push(u.rep(t[0].length,1));a=h}for(var v=0;v<r;){var _=v++;i.push(P.homogenize1d(t[_],a[_]))}return i};var it=p.eval.Intersect=function(){};y["verb.eval.Intersect"]=it,it.__name__=["verb","eval","Intersect"],it.surfaces=function(t,n,r){var i=At.rationalSurfaceAdaptive(t),a=At.rationalSurfaceAdaptive(n),h=it.meshes(i,a),l=h.map(function(v){return v.map(function(_){return it.surfacesAtPointWithEstimate(t,n,_.uv0,_.uv1,r)})});return l.map(function(v){return ht.rationalInterpCurve(v.map(function(_){return _.point}),3)})},it.surfacesAtPointWithEstimate=function(t,n,r,i,a){var h,l,v,_,f,g,m,b,x,M,I,C,B,E=5,T=0;do{if(h=P.rationalSurfaceDerivatives(t,r[0],r[1],1),l=h[0][0],_=h[1][0],f=h[0][1],v=u.normalized(u.cross(_,f)),g=u.dot(v,l),m=P.rationalSurfaceDerivatives(n,i[0],i[1],1),b=m[0][0],M=m[1][0],I=m[0][1],x=u.normalized(u.cross(M,I)),C=u.dot(x,b),B=u.distSquared(l,b),B<a*a)break;var U=u.normalized(u.cross(v,x)),F=u.dot(U,l),j=it.threePlanes(v,g,x,C,U,F);if(j==null)throw new K("panic!");var D=u.sub(j,l),R=u.sub(j,b),q=u.cross(_,v),H=u.cross(f,v),$=u.cross(M,x),nt=u.cross(I,x),st=u.dot(H,D)/u.dot(H,_),rt=u.dot(q,D)/u.dot(q,f),at=u.dot(nt,R)/u.dot(nt,M),et=u.dot($,R)/u.dot($,I);r=u.add([st,rt],r),i=u.add([at,et],i),T++}while(T<E);return new Un(r,i,l,B)},it.meshes=function(t,n,r,i){r==null&&(r=new ke(t)),i==null&&(i=new ke(n));var a=it.boundingBoxTrees(r,i,0),h=G.unique(a.map(function(l){return it.triangles(t,l.item0,n,l.item1)}).filter(function(l){return l!=null}).filter(function(l){return u.distSquared(l.min.point,l.max.point)>tt.EPSILON}),function(l,v){var _=u.sub(l.min.uv0,v.min.uv0),f=u.dot(_,_),g=u.sub(l.max.uv0,v.max.uv0),m=u.dot(g,g),b=u.sub(l.min.uv0,v.max.uv0),x=u.dot(b,b),M=u.sub(l.max.uv0,v.min.uv0),I=u.dot(M,M);return f<tt.EPSILON&&m<tt.EPSILON||x<tt.EPSILON&&I<tt.EPSILON});return it.makeMeshIntersectionPolylines(h)},it.meshSlices=function(t,n,r,i){for(var a=new Ge(t),h=a.boundingBox(),l=h.min[0],v=h.min[1],_=h.max[0],f=h.max[1],g=u.span(n,r,i),m=[],b=0;b<g.length;){var x=g[b];++b;var M=[[l,v,x],[_,v,x],[_,f,x],[l,f,x]],I=[[0,0],[1,0],[1,1],[0,1]],C=[[0,1,2],[0,2,3]],B=new ye(C,M,null,I);m.push(it.meshes(t,B,a))}return m},it.makeMeshIntersectionPolylines=function(t){if(t.length==0)return[];for(var n=0;n<t.length;){var r=t[n];++n,r.max.opp=r.min,r.min.opp=r.max}for(var i=it.kdTreeFromSegments(t),a=[],h=0;h<t.length;){var l=t[h];++h,a.push(l.min),a.push(l.max)}for(var v=0;v<a.length;){var _=a[v];if(++v,_.adj==null){var f=it.lookupAdjacentSegment(_,i,t.length);f!=null&&f.adj==null&&(_.adj=f,f.adj=_)}}var g=a.filter(function(E){return E.adj==null});g.length==0&&(g=a);for(var m=[],b=0,x=!1;g.length!=0;){var M=g.pop();if(!M.visited){for(var I=[],C=M;C!=null&&!(C.visited||(C.visited=!0,C.opp.visited=!0,I.push(C),b+=2,C=C.opp.adj,C==M)););I.length>0&&(I.push(I[I.length-1].opp),m.push(I))}if(g.length==0&&a.length>0&&(x||b<a.length)){x=!0;var B=a.pop();g.push(B)}}return m},it.kdTreeFromSegments=function(t){for(var n=[],r=0;r<t.length;){var i=t[r];++r,n.push(new vn(i.min.point,i.min)),n.push(new vn(i.max.point,i.max))}return new Vn(n,u.distSquared)},it.lookupAdjacentSegment=function(t,n,r){var i=n.nearest(t.point,r,tt.EPSILON).filter(function(a){return t!=a.item0.obj}).map(function(a){return a.item0.obj});return i.length==1?i[0]:null},it.curveAndSurface=function(t,n,r,i,a){r==null&&(r=.001),i!=null?i=i:i=new Ce(t),a!=null?a=a:a=new qe(n);var h=it.boundingBoxTrees(i,a,r);return G.unique(h.map(function(l){var v=l.item0,_=l.item1,f=G.first(v.knots),g=G.last(v.knots),m=(f+g)/2,b=G.first(_.knotsU),x=G.last(_.knotsU),M=G.first(_.knotsV),I=G.last(_.knotsV),C=[(b+x)/2,(M+I)/2];return it.curveAndSurfaceWithEstimate(v,_,[m].concat(C),r)}).filter(function(l){return u.distSquared(l.curvePoint,l.surfacePoint)<r*r}),function(l,v){return Math.abs(l.u-v.u)<.5*r})},it.curveAndSurfaceWithEstimate=function(t,n,r,i){i==null&&(i=.001);var a=function(_){var f=P.rationalCurvePoint(t,_[0]),g=P.rationalSurfacePoint(n,_[1],_[2]),m=u.sub(f,g);return u.dot(m,m)},h=function(_){var f=P.rationalCurveDerivatives(t,_[0],1),g=P.rationalSurfaceDerivatives(n,_[1],_[2],1),m=u.sub(g[0][0],f[0]),b=u.mul(-1,f[1]),x=g[1][0],M=g[0][1];return[2*u.dot(b,m),2*u.dot(x,m),2*u.dot(M,m)]},l=we.uncmin(a,r,i*i,h),v=l.solution;return new Ln(v[0],[v[1],v[2]],P.rationalCurvePoint(t,v[0]),P.rationalSurfacePoint(n,v[1],v[2]))},it.polylineAndMesh=function(t,n,r){for(var i=it.boundingBoxTrees(new Ie(t),new ke(n),r),a=[],h=0;h<i.length;){var l=i[h];++h;var v=l.item0,_=l.item1,f=it.segmentWithTriangle(t.points[v],t.points[v+1],n.points,n.faces[_]);if(f!=null){var g=f.point,m=u.lerp(f.p,[t.params[v]],[t.params[v+1]])[0],b=Gt.triangleUVFromPoint(n,_,g);a.push(new Tn(g,m,b,v,_))}}return a},it.boundingBoxTrees=function(t,n,r){r==null&&(r=1e-9);var i=[],a=[];i.push(t),a.push(n);for(var h=[];i.length>0;){var l=i.pop(),v=a.pop();if(!(l.empty()||v.empty())&&l.boundingBox().intersects(v.boundingBox(),r)){var _=l.indivisible(r),f=v.indivisible(r);if(_&&f){h.push(new qt(l.yield(),v.yield()));continue}else if(_&&!f){var g=v.split();i.push(l),a.push(g.item1),i.push(l),a.push(g.item0);continue}else if(!_&&f){var m=l.split();i.push(m.item1),a.push(v),i.push(m.item0),a.push(v);continue}var b=l.split(),x=v.split();i.push(b.item1),a.push(x.item1),i.push(b.item1),a.push(x.item0),i.push(b.item0),a.push(x.item1),i.push(b.item0),a.push(x.item0)}}return h},it.curves=function(t,n,r){var i=it.boundingBoxTrees(new Ce(t),new Ce(n),0);return G.unique(i.map(function(a){return it.curvesWithEstimate(t,n,G.first(a.item0.knots),G.first(a.item1.knots),r)}).filter(function(a){return u.distSquared(a.point0,a.point1)<r}),function(a,h){return Math.abs(a.u0-h.u0)<r*5})},it.curvesWithEstimate=function(t,n,r,i,a){var h=function(b){var x=P.rationalCurvePoint(t,b[0]),M=P.rationalCurvePoint(n,b[1]),I=u.sub(x,M);return u.dot(I,I)},l=function(b){var x=P.rationalCurveDerivatives(t,b[0],1),M=P.rationalCurveDerivatives(n,b[1],1),I=u.sub(x[0],M[0]),C=x[1],B=u.mul(-1,M[1]);return[2*u.dot(C,I),2*u.dot(B,I)]},v=we.uncmin(h,[r,i],a*a,l),_=v.solution[0],f=v.solution[1],g=P.rationalCurvePoint(t,_),m=P.rationalCurvePoint(n,f);return new Je(g,m,_,f)},it.triangles=function(t,n,r,i){var a=t.faces[n],h=r.faces[i],l=Gt.getTriangleNorm(t.points,a),v=Gt.getTriangleNorm(r.points,h),_=t.points[a[0]],f=r.points[h[0]],g=it.planes(_,l,f,v);if(g==null)return null;var m=it.clipRayInCoplanarTriangle(g,t,n);if(m==null)return null;var b=it.clipRayInCoplanarTriangle(g,r,i);if(b==null)return null;var x=it.mergeTriangleClipIntervals(m,b,t,n,r,i);return x==null?null:new ne(new Oe(x.min.uv0,x.min.uv1,x.min.point,n,i),new Oe(x.max.uv0,x.max.uv1,x.max.point,n,i))},it.clipRayInCoplanarTriangle=function(t,n,r){for(var i=n.faces[r],a=[n.points[i[0]],n.points[i[1]],n.points[i[2]]],h=[n.uvs[i[0]],n.uvs[i[1]],n.uvs[i[2]]],l=[u.sub(h[1],h[0]),u.sub(h[2],h[1]),u.sub(h[0],h[2])],v=[u.sub(a[1],a[0]),u.sub(a[2],a[1]),u.sub(a[0],a[2])],_=v.map(u.normalized),f=v.map(u.norm),g=null,m=null,b=0;b<3;){var x=b++,M=a[x],I=_[x],C=it.rays(M,I,t.origin,t.dir);if(C!=null){var B=C.u0,E=C.u1;B<-tt.EPSILON||B>f[x]+tt.EPSILON||((g==null||E<g.u)&&(g=new cn(E,u.onRay(t.origin,t.dir,E),u.onRay(h[x],l[x],B/f[x]))),(m==null||E>m.u)&&(m=new cn(E,u.onRay(t.origin,t.dir,E),u.onRay(h[x],l[x],B/f[x]))))}}return m==null||g==null?null:new ne(g,m)},it.mergeTriangleClipIntervals=function(t,n,r,i,a,h){if(n.min.u>t.max.u+tt.EPSILON||t.min.u>n.max.u+tt.EPSILON)return null;var l;t.min.u>n.min.u?l=new qt(t.min,0):l=new qt(n.min,1);var v;t.max.u<n.max.u?v=new qt(t.max,0):v=new qt(n.max,1);var _=new ne(new Oe(null,null,l.item0.point,i,h),new Oe(null,null,v.item0.point,i,h));return l.item1==0?(_.min.uv0=l.item0.uv,_.min.uv1=Gt.triangleUVFromPoint(a,h,l.item0.point)):(_.min.uv0=Gt.triangleUVFromPoint(r,i,l.item0.point),_.min.uv1=l.item0.uv),v.item1==0?(_.max.uv0=v.item0.uv,_.max.uv1=Gt.triangleUVFromPoint(a,h,v.item0.point)):(_.max.uv0=Gt.triangleUVFromPoint(r,i,v.item0.point),_.max.uv1=v.item0.uv),_},it.planes=function(t,n,r,i){var a=u.cross(n,i);if(u.dot(a,a)<tt.EPSILON)return null;var h=0,l=Math.abs(a[0]),v=Math.abs(a[1]),_=Math.abs(a[2]);v>l&&(h=1,l=v),_>l&&(h=2,l=_);var f,g,m,b;h==0?(f=n[1],g=n[2],m=i[1],b=i[2]):h==1?(f=n[0],g=n[2],m=i[0],b=i[2]):(f=n[0],g=n[1],m=i[0],b=i[1]);var x=-u.dot(t,n),M=-u.dot(r,i),I=f*b-g*m,C=(g*M-x*b)/I,B=(x*m-f*M)/I,E;return h==0?E=[0,C,B]:h==1?E=[C,0,B]:E=[C,B,0],new ln(E,u.normalized(a))},it.threePlanes=function(t,n,r,i,a,h){var l=u.cross(r,a),v=u.dot(t,l);if(Math.abs(v)<tt.EPSILON)return null;var _=u.sub(u.mul(h,r),u.mul(i,a)),f=u.add(u.mul(n,l),u.cross(t,_));return u.mul(1/v,f)},it.polylines=function(t,n,r){for(var i=it.boundingBoxTrees(new Ie(t),new Ie(n),r),a=[],h=0;h<i.length;){var l=i[h];++h;var v=l.item0,_=l.item1,f=it.segments(t.points[v],t.points[v+1],n.points[_],n.points[_+1],r);f!=null&&(f.u0=u.lerp(f.u0,[t.params[v]],[t.params[v+1]])[0],f.u1=u.lerp(f.u1,[n.params[_]],[n.params[_+1]])[0],a.push(f))}return a},it.segments=function(t,n,r,i,a){var h=u.sub(n,t),l=Math.sqrt(u.dot(h,h)),v=u.mul(1/l,h),_=u.sub(i,r),f=Math.sqrt(u.dot(_,_)),g=u.mul(1/f,_),m=it.rays(t,v,r,g);if(m!=null){var b=Math.min(Math.max(0,m.u0/l),1),x=Math.min(Math.max(0,m.u1/f),1),M=u.onRay(t,h,b),I=u.onRay(r,_,x),C=u.distSquared(M,I);if(C<a*a)return new Je(M,I,b,x)}return null},it.rays=function(t,n,r,i){var a=u.dot(n,i),h=u.dot(n,r),l=u.dot(n,t),v=u.dot(i,r),_=u.dot(i,t),f=u.dot(n,n),g=u.dot(i,i),m=f*g-a*a;if(Math.abs(m)<tt.EPSILON)return null;var b=a*(h-l)-f*(v-_),x=b/m,M=(h-l+x*a)/f,I=u.onRay(t,n,M),C=u.onRay(r,i,x);return new Je(I,C,M,x)},it.segmentWithTriangle=function(t,n,r,i){var a=r[i[0]],h=r[i[1]],l=r[i[2]],v=u.sub(h,a),_=u.sub(l,a),f=u.cross(v,_),g=u.sub(n,t),m=u.sub(t,a),b=-u.dot(f,m),x=u.dot(f,g);if(Math.abs(x)<tt.EPSILON)return null;var M=b/x;if(M<0||M>1)return null;var I=u.add(t,u.mul(M,g)),C=u.dot(v,_),B=u.dot(v,v),E=u.dot(_,_),T=u.sub(I,a),U=u.dot(T,v),F=u.dot(T,_),j=C*C-B*E;if(Math.abs(j)<tt.EPSILON)return null;var D=(C*F-E*U)/j,R=(C*U-B*F)/j;return D>1+tt.EPSILON||R>1+tt.EPSILON||R<-tt.EPSILON||D<-tt.EPSILON||D+R>1+tt.EPSILON?null:new Rn(I,D,R,M)},it.segmentAndPlane=function(t,n,r,i){var a=u.dot(i,u.sub(n,t));if(Math.abs(a)<tt.EPSILON)return null;var h=u.dot(i,u.sub(r,t)),l=h/a;return l>1+tt.EPSILON||l<-tt.EPSILON?null:{p:l}};var ht=p.eval.Make=function(){};y["verb.eval.Make"]=ht,ht.__name__=["verb","eval","Make"],ht.rationalTranslationalSurface=function(t,n){for(var r=P.rationalCurvePoint(n,G.first(n.knots)),i=G.first(n.knots),a=G.last(n.knots),h=2*n.controlPoints.length,l=(a-i)/(h-1),v=[],_=0;_<h;){var f=_++,g=u.sub(P.rationalCurvePoint(n,i+f*l),r),m=vt.rationalCurveTransform(t,[[1,0,0,g[0]],[0,1,0,g[1]],[0,0,1,g[2]],[0,0,0,1]]);v.push(m)}return ht.loftedSurface(v)},ht.surfaceBoundaryCurves=function(t){var n=ht.surfaceIsocurve(t,G.first(t.knotsU),!1),r=ht.surfaceIsocurve(t,G.last(t.knotsU),!1),i=ht.surfaceIsocurve(t,G.first(t.knotsV),!0),a=ht.surfaceIsocurve(t,G.last(t.knotsV),!0);return[n,r,i,a]},ht.surfaceIsocurve=function(t,n,r){r==null&&(r=!1);var i;r?i=t.knotsV:i=t.knotsU;var a;r?a=t.degreeV:a=t.degreeU;for(var h=_t.knotMultiplicities(i),l=-1,v=0,_=h.length;v<_;){var f=v++;if(Math.abs(n-h[f].knot)<tt.EPSILON){l=f;break}}var g=a+1;l>=0&&(g=g-h[l].mult);var m;g>0?m=vt.surfaceKnotRefine(t,u.rep(g,n),r):m=t;var b=P.knotSpan(a,n,i);return Math.abs(n-G.first(i))<tt.EPSILON?b=0:Math.abs(n-G.last(i))<tt.EPSILON&&(b=(r?m.controlPoints[0].length:m.controlPoints.length)-1),r?new Ct(m.degreeU,m.knotsU,function(x){for(var M,I=[],C=0,B=m.controlPoints;C<B.length;){var E=B[C];++C,I.push(E[b])}return M=I,M}()):new Ct(m.degreeV,m.knotsV,m.controlPoints[b])},ht.loftedSurface=function(t,n){t=vt.unifyCurveKnotVectors(t);var r=t[0].degree;n==null&&(n=3),n>t.length-1&&(n=t.length-1);for(var i=t[0].knots,a=[],h=[],l=0,v=t[0].controlPoints.length;l<v;){var _=[l++],f=t.map(function(m){return function(b){return b.controlPoints[m[0]]}}(_)),g=ht.rationalInterpCurve(f,n,!0);h.push(g.controlPoints),a=g.knots}return new Ot(r,n,i,a,h)},ht.clonedCurve=function(t){return new Ct(t.degree,t.knots.slice(),t.controlPoints.map(function(n){return n.slice()}))},ht.rationalBezierCurve=function(t,n){for(var r=t.length-1,i=[],a=0,h=r+1;a<h;)a++,i.push(0);for(var l=0,v=r+1;l<v;)l++,i.push(1);return n==null&&(n=u.rep(t.length,1)),new Ct(r,i,P.homogenize1d(t,n))},ht.fourPointSurface=function(t,n,r,i,a){a==null&&(a=3);for(var h=a,l=[],v=0,_=a+1;v<_;){for(var f=v++,g=[],m=0,b=a+1;m<b;){var x=m++,M=1-f/h,I=u.lerp(M,t,n),C=u.lerp(M,i,r),B=u.lerp(1-x/h,I,C);B.push(1),g.push(B)}l.push(g)}var E=u.rep(a+1,0),T=u.rep(a+1,1);return new Ot(a,a,E.concat(T),E.concat(T),l)},ht.ellipseArc=function(t,n,r,i,a){var h=u.norm(n),l=u.norm(r);n=u.normalized(n),r=u.normalized(r),a<i&&(a=2*Math.PI+i);var v=a-i,_=0;v<=Math.PI/2?_=1:v<=Math.PI?_=2:v<=3*Math.PI/2?_=3:_=4;var f=v/_,g=Math.cos(f/2),m=u.add(t,u.add(u.mul(h*Math.cos(i),n),u.mul(l*Math.sin(i),r))),b=u.sub(u.mul(Math.cos(i),r),u.mul(Math.sin(i),n)),x=[],M=u.zeros1d(2*_+3),I=0,C=i,B=u.zeros1d(_*2);x[0]=m,B[0]=1;for(var E=1,T=_+1;E<T;){var U=E++;C+=f;var F=u.add(t,u.add(u.mul(h*Math.cos(C),n),u.mul(l*Math.sin(C),r)));B[I+2]=1,x[I+2]=F;var j=u.sub(u.mul(Math.cos(C),r),u.mul(Math.sin(C),n)),D=it.rays(m,u.mul(1/u.norm(b),b),F,u.mul(1/u.norm(j),j)),R=u.add(m,u.mul(D.u0,b));B[I+1]=g,x[I+1]=R,I+=2,U<_&&(m=F,b=j)}for(var q=2*_+1,H=0;H<3;){var $=H++;M[$]=0,M[$+q]=1}switch(_){case 2:M[3]=M[4]=.5;break;case 3:M[3]=M[4]=.3333333333333333,M[5]=M[6]=.6666666666666666;break;case 4:M[3]=M[4]=.25,M[5]=M[6]=.5,M[7]=M[8]=.75;break}return new Ct(2,M,P.homogenize1d(x,B))},ht.arc=function(t,n,r,i,a,h){return ht.ellipseArc(t,u.mul(i,u.normalized(n)),u.mul(i,u.normalized(r)),a,h)},ht.polyline=function(t){for(var n=[0,0],r=0,i=0,a=t.length-1;i<a;){var h=i++;r+=u.dist(t[h],t[h+1]),n.push(r)}n.push(r),n=u.mul(1/r,n);for(var l,v=[],_=0,f=t.length;_<f;)_++,v.push(1);return l=v,new Ct(1,n,P.homogenize1d(t.slice(0),l))},ht.extrudedSurface=function(t,n,r){for(var i=[[],[],[]],a=[[],[],[]],h=P.dehomogenize1d(r.controlPoints),l=P.weight1d(r.controlPoints),v=u.mul(n,t),_=u.mul(.5*n,t),f=0,g=h.length;f<g;){var m=f++;i[2][m]=h[m],i[1][m]=u.add(_,h[m]),i[0][m]=u.add(v,h[m]),a[0][m]=l[m],a[1][m]=l[m],a[2][m]=l[m]}return new Ot(2,r.degree,[0,0,0,1,1,1],r.knots,P.homogenize2d(i,a))},ht.cylindricalSurface=function(t,n,r,i,a){var h=u.cross(t,n),l=ht.arc(r,n,h,a,0,2*Math.PI);return ht.extrudedSurface(t,i,l)},ht.revolvedSurface=function(t,n,r,i){var a=P.dehomogenize1d(t.controlPoints),h=P.weight1d(t.controlPoints),l,v;i<=Math.PI/2?(l=1,v=u.zeros1d(6+2*(l-1))):i<=Math.PI?(l=2,v=u.zeros1d(6+2*(l-1)),v[3]=v[4]=.5):i<=3*Math.PI/2?(l=3,v=u.zeros1d(6+2*(l-1)),v[3]=v[4]=.3333333333333333,v[5]=v[6]=.6666666666666666):(l=4,v=u.zeros1d(6+2*(l-1)),v[3]=v[4]=.25,v[5]=v[6]=.5,v[7]=v[8]=.75);for(var _=i/l,f=3+2*(l-1),g=0;g<3;){var m=g++;v[m]=0,v[f+m]=1}for(var b=Math.cos(_/2),x=0,M=u.zeros1d(l+1),I=u.zeros1d(l+1),C=u.zeros3d(2*l+1,a.length,3),B=u.zeros2d(2*l+1,a.length),E=1,T=l+1;E<T;){var U=E++;x+=_,I[U]=Math.cos(x),M[U]=Math.sin(x)}for(var F=0,j=a.length;F<j;){var D=F++,R=ce.rayClosestPoint(a[D],n,r),q=u.sub(a[D],R),H=u.norm(q),$=u.cross(r,q);H>tt.EPSILON&&(q=u.mul(1/H,q),$=u.mul(1/H,$)),C[0][D]=a[D];var nt=a[D];B[0][D]=h[D];for(var st=$,rt=0,at=1,et=l+1;at<et;){var ot=at++,O;H==0?O=R:O=u.add(R,u.add(u.mul(H*I[ot],q),u.mul(H*M[ot],$))),C[rt+2][D]=O,B[rt+2][D]=h[D];var lt=u.sub(u.mul(I[ot],$),u.mul(M[ot],q));if(H==0)C[rt+1][D]=R;else{var mt=it.rays(nt,u.mul(1/u.norm(st),st),O,u.mul(1/u.norm(lt),lt)),kt=u.add(nt,u.mul(mt.u0,st));C[rt+1][D]=kt}B[rt+1][D]=b*h[D],rt+=2,ot<l&&(nt=O,st=lt)}}return new Ot(2,t.degree,v,t.knots,P.homogenize2d(C,B))},ht.sphericalSurface=function(t,n,r,i){var a=ht.arc(t,u.mul(-1,n),r,i,0,Math.PI);return ht.revolvedSurface(a,t,n,2*Math.PI)},ht.conicalSurface=function(t,n,r,i,a){var h=2*Math.PI,l=1,v=[u.add(r,u.mul(i,t)),u.add(r,u.mul(a,n))],_=[0,0,1,1],f=[1,1],g=new Ct(l,_,P.homogenize1d(v,f));return ht.revolvedSurface(g,r,t,h)},ht.rationalInterpCurve=function(t,n,r,i,a){if(r==null&&(r=!1),n==null&&(n=3),t.length<n+1)throw new K("You need to supply at least degree + 1 points! You only supplied "+t.length+" points.");for(var h=[0],l=1,v=t.length;l<v;){var _=l++,f=u.norm(u.sub(t[_],t[_-1])),g=h[h.length-1];h.push(g+f)}for(var m=h[h.length-1],b=0,x=h.length;b<x;){var M=b++;h[M]=h[M]/m}var I=u.rep(n+1,0),C=i!=null&&a!=null,B;C?B=0:B=1;var E;C?E=h.length-n+1:E=h.length-n;for(var T=B;T<E;){for(var U=T++,F=0,j=0;j<n;){var D=j++;F+=h[U+D]}I.push(1/n*F)}var R=I.concat(u.rep(n+1,1)),q=[],H;C?H=t.length+1:H=t.length-1;var $;C?$=t.length-(n-1):$=t.length-(n+1);for(var nt=0;nt<h.length;){var st=h[nt];++nt;var rt=P.knotSpanGivenN(H,n,st,R),at=P.basisFunctionsGivenKnotSpanIndex(rt,st,n,R),et=rt-n,ot=u.zeros1d(et),O=u.zeros1d($-et);q.push(ot.concat(at).concat(O))}if(C){var lt=q[0].length-2,mt=[-1,1].concat(u.zeros1d(lt)),kt=u.zeros1d(lt).concat([-1,1]);G.spliceAndInsert(q,1,0,mt),G.spliceAndInsert(q,q.length-1,0,kt)}for(var Et=t[0].length,St=[],Lt=(1-R[R.length-n-2])/n,re=R[n+1]/n,ge=0;ge<Et;){var ee=[ge++],$t;if(!C)$t=t.map(function(Pe){return function(Ue){return Ue[Pe[0]]}}(ee));else{$t=[t[0][ee[0]]],$t.push(re*i[ee[0]]);for(var ie=1,_e=t.length-1;ie<_e;){var xe=ie++;$t.push(t[xe][ee[0]])}$t.push(Lt*a[ee[0]]),$t.push(G.last(t)[ee[0]])}var Ee=xt.solve(q,$t);St.push(Ee)}var Me=xt.transpose(St);if(!r){var Ae=u.rep(Me.length,1);Me=P.homogenize1d(Me,Ae)}return new Ct(n,R,Me)};var vt=p.eval.Modify=function(){};y["verb.eval.Modify"]=vt,vt.__name__=["verb","eval","Modify"],vt.curveReverse=function(t){return new Ct(t.degree,vt.knotsReverse(t.knots),G.reversed(t.controlPoints))},vt.surfaceReverse=function(t,n){return n==null&&(n=!1),n?new Ot(t.degreeU,t.degreeV,t.knotsU,vt.knotsReverse(t.knotsV),function(r){for(var i,a=[],h=0,l=t.controlPoints;h<l.length;){var v=l[h];++h,a.push(G.reversed(v))}return i=a,i}()):new Ot(t.degreeU,t.degreeV,vt.knotsReverse(t.knotsU),t.knotsV,G.reversed(t.controlPoints))},vt.knotsReverse=function(t){var n=G.first(t);G.last(t);for(var r=[n],i=t.length,a=1;a<i;){var h=a++;r.push(r[h-1]+(t[i-h]-t[i-h-1]))}return r},vt.unifyCurveKnotVectors=function(t){t=t.map(ht.clonedCurve);for(var n=W.fold(t,function(R,q){return vt.imax(R.degree,q)},0),r=0,i=t.length;r<i;){var a=r++;t[a].degree<n&&(t[a]=vt.curveElevateDegree(t[a],n))}for(var h,l=[],v=0;v<t.length;){var _=t[v];++v,l.push(new ne(G.first(_.knots),G.last(_.knots)))}h=l;for(var f=0,g=t.length;f<g;){var m=f++,b=[h[m].min];t[m].knots=t[m].knots.map(function(R){return function(q){return q-R[0]}}(b))}for(var x=h.map(function(R){return R.max-R.min}),M=W.fold(x,function(R,q){return Math.max(R,q)},0),I=0,C=t.length;I<C;){var B=I++,E=[M/x[B]];t[B].knots=t[B].knots.map(function(R){return function(q){return q*R[0]}}(E))}for(var T=W.fold(t,function(R,q){return u.sortedSetUnion(R.knots,q)},[]),U=0,F=t.length;U<F;){var j=U++,D=u.sortedSetSub(T,t[j].knots);D.length==0&&(t[j]=t[j]),t[j]=vt.curveKnotRefine(t[j],D)}return t},vt.imin=function(t,n){return t<n?t:n},vt.imax=function(t,n){return t>n?t:n},vt.curveElevateDegree=function(t,n){if(n<=t.degree)return t;var r=t.knots.length-t.degree-2,i=t.degree,a=t.knots,h=t.controlPoints,l=n-t.degree,v=t.controlPoints[0].length,_=u.zeros2d(i+l+1,i+1),f=[],g=[],m=[],b=r+i+1,x=n,M=Math.floor(x/2),I=[],C=[];_[0][0]=1,_[x][i]=1;for(var B=1,E=M+1;B<E;)for(var T=B++,U=1/Pt.get(x,T),F=vt.imin(i,T),j=vt.imax(0,T-l),D=F+1;j<D;){var R=j++;_[T][R]=U*Pt.get(i,R)*Pt.get(l,T-R)}for(var q=M+1;q<x;)for(var H=q++,$=vt.imin(i,H),nt=vt.imax(0,H-l),st=$+1;nt<st;){var rt=nt++;_[H][rt]=_[x-H][i-rt]}var at=x+1,et=-1,ot=i,O=i+1,lt=1,mt=a[0];I[0]=h[0];for(var kt=0,Et=x+1;kt<Et;){var St=kt++;C[St]=mt}for(var Lt=0,re=i+1;Lt<re;){var ge=Lt++;f[ge]=h[ge]}for(;O<b;){for(var ee=O;O<b&&a[O]==a[O+1];)O=O+1;var $t=O-ee+1,ie=a[O],_e=et;et=i-$t;var xe;_e>0?xe=Math.floor((_e+2)/2):xe=1;var Ee;if(et>0?Ee=Math.floor(x-(et+1)/2):Ee=x,et>0){for(var Me=ie-mt,Ae=[],Pe=i;Pe>$t;)Ae[Pe-$t-1]=Me/(a[ot+Pe]-mt),Pe--;for(var Ue=1,yn=et+1;Ue<yn;){for(var tn=Ue++,Vi=et-tn,zr=$t+tn,en=i;en>=zr;)f[en]=u.add(u.mul(Ae[en-zr],f[en]),u.mul(1-Ae[en-zr],f[en-1])),en--;m[Vi]=f[i]}}for(var ci=xe,Di=x+1;ci<Di;){var wn=ci++;g[wn]=u.zeros1d(v);for(var Fi=vt.imin(i,wn),vi=vt.imax(0,wn-l),Oi=Fi+1;vi<Oi;){var _i=vi++;g[wn]=u.add(g[wn],u.mul(_[wn][_i],f[_i]))}}if(_e>1)for(var Sr=at-2,Cr=at,di=ie-mt,qi=(ie-C[at-1])/di,fi=1;fi<_e;){for(var kr=fi++,Re=Sr,nn=Cr,Ye=nn-at+1;nn-Re>kr;){if(Re<lt){var Gi=(ie-C[Re])/(mt-C[Re]);I[Re]=u.lerp(Gi,I[Re],I[Re-1])}if(nn>=xe){if(nn-kr<=at-x+_e){var Ki=(ie-C[nn-kr])/di;g[Ye]=u.lerp(Ki,g[Ye],g[Ye+1])}}else g[Ye]=u.lerp(qi,g[Ye],g[Ye+1]);Re=Re+1,nn=nn-1,Ye=Ye-1}Sr=Sr-1,Cr=Cr+1}if(ot!=i)for(var mi=0,ji=x-_e;mi<ji;)mi++,C[at]=mt,at=at+1;for(var gi=xe,Xi=Ee+1;gi<Xi;){var Wi=gi++;I[lt]=g[Wi],lt=lt+1}if(O<b){for(var pi=0;pi<et;){var yi=pi++;f[yi]=m[yi]}for(var wi=et,Zi=i+1;wi<Zi;){var bi=wi++;f[bi]=h[O-i+bi]}ot=O,O=O+1,mt=ie}else for(var xi=0,Yi=x+1;xi<Yi;){var Hi=xi++;C[at+Hi]=ie}}return new Ct(n,C,I)},vt.rationalSurfaceTransform=function(t,n){for(var r=P.dehomogenize2d(t.controlPoints),i=0,a=r.length;i<a;)for(var h=i++,l=0,v=r[h].length;l<v;){var _=l++,f=r[h][_];f.push(1),r[h][_]=xt.dot(n,f).slice(0,f.length-1)}return new Ot(t.degreeU,t.degreeV,t.knotsU.slice(),t.knotsV.slice(),P.homogenize2d(r,P.weight2d(t.controlPoints)))},vt.rationalCurveTransform=function(t,n){for(var r=P.dehomogenize1d(t.controlPoints),i=0,a=r.length;i<a;){var h=i++,l=r[h];l.push(1),r[h]=xt.dot(n,l).slice(0,l.length-1)}return new Ct(t.degree,t.knots.slice(),P.homogenize1d(r,P.weight1d(t.controlPoints)))},vt.surfaceKnotRefine=function(t,n,r){var i=[],a,h,l;r?(l=t.controlPoints,a=t.knotsV,h=t.degreeV):(l=xt.transpose(t.controlPoints),a=t.knotsU,h=t.degreeU);for(var v=null,_=0;_<l.length;){var f=l[_];++_,v=vt.curveKnotRefine(new Ct(h,a,f),n),i.push(v.controlPoints)}var g=v.knots;return r?new Ot(t.degreeU,t.degreeV,t.knotsU.slice(),g,i):(i=xt.transpose(i),new Ot(t.degreeU,t.degreeV,g,t.knotsV.slice(),i))},vt.decomposeCurveIntoBeziers=function(t){for(var n=t.degree,r=t.controlPoints,i=t.knots,a=_t.knotMultiplicities(i),h=n+1,l=0;l<a.length;){var v=a[l];if(++l,v.mult<h){var _=u.rep(h-v.mult,v.knot),f=vt.curveKnotRefine(new Ct(n,i,r),_);i=f.knots,r=f.controlPoints}}i.length/h-1;for(var g=h*2,m=[],b=0;b<r.length;){var x=i.slice(b,b+g),M=r.slice(b,b+h);m.push(new Ct(n,x,M)),b+=h}return m},vt.curveKnotRefine=function(t,n){if(n.length==0)return ht.clonedCurve(t);for(var r=t.degree,i=t.controlPoints,a=t.knots,h=i.length-1,l=h+r+1,v=n.length-1,_=P.knotSpan(r,n[0],a),f=P.knotSpan(r,n[v],a),g=[],m=[],b=0,x=_-r+1;b<x;){var M=b++;g[M]=i[M]}for(var I=f-1,C=h+1;I<C;){var B=I++;g[B+v+1]=i[B]}for(var E=0,T=_+1;E<T;){var U=E++;m[U]=a[U]}for(var F=f+r,j=l+1;F<j;){var D=F++;m[D+v+1]=a[D]}for(var R=f+r-1,q=f+r+v,H=v;H>=0;){for(;n[H]<=a[R]&&R>_;)g[q-r-1]=i[R-r-1],m[q]=a[R],q=q-1,R=R-1;g[q-r-1]=g[q-r];for(var $=1,nt=r+1;$<nt;){var st=$++,rt=q-r+st,at=m[q+st]-n[H];Math.abs(at)<tt.EPSILON?g[rt-1]=g[rt]:(at=at/(m[q+st]-a[R-r+st]),g[rt-1]=u.add(u.mul(at,g[rt-1]),u.mul(1-at,g[rt])))}m[q]=n[H],q=q-1,H--}return new Ct(r,m,g)},vt.curveKnotInsert=function(t,n,r){for(var i=t.degree,a=t.controlPoints,h=t.knots,l=0,v=a.length,_=P.knotSpan(i,n,h),f=[],g=[],m=[],b=1,x=_+1;b<x;){var M=b++;g[M]=h[M]}for(var I=1,C=r+1;I<C;){var B=I++;g[_+B]=n}for(var E=_+1,T=h.length;E<T;){var U=E++;g[U+r]=h[U]}for(var F=0,j=_-i+1;F<j;){var D=F++;m[D]=a[D]}for(var R=_-l;R<v;){var q=R++;m[q+r]=a[q]}for(var H=0,$=i-l+1;H<$;){var nt=H++;f[nt]=a[_-i+nt]}for(var st=0,rt=0,at=1,et=r+1;at<et;){var ot=at++;st=_-i+ot;for(var O=0,lt=i-ot-l+1;O<lt;){var mt=O++;rt=(n-h[st+mt])/(h[mt+_+1]-h[st+mt]),f[mt]=u.add(u.mul(rt,f[mt+1]),u.mul(1-rt,f[mt]))}m[st]=f[0],m[_+r-ot-l]=f[i-ot-l]}for(var kt=st+1,Et=_-l;kt<Et;){var St=kt++;m[St]=f[St-st]}return new Ct(i,g,m)};var At=p.eval.Tess=function(){};y["verb.eval.Tess"]=At,At.__name__=["verb","eval","Tess"],At.rationalCurveRegularSample=function(t,n,r){return At.rationalCurveRegularSampleRange(t,t.knots[0],G.last(t.knots),n,r)},At.rationalCurveRegularSampleRange=function(t,n,r,i,a){i<1&&(i=2);for(var h=[],l=(r-n)/(i-1),v=0,_=0;_<i;){var f=_++;v=n+l*f,a?h.push([v].concat(P.rationalCurvePoint(t,v))):h.push(P.rationalCurvePoint(t,v))}return h},At.rationalCurveAdaptiveSample=function(t,n,r){if(r==null&&(r=!1),n==null&&(n=1e-6),t.degree==1)if(r){for(var i=[],a=0,h=t.controlPoints.length;a<h;){var l=a++;i.push([t.knots[l+1]].concat(P.dehomogenize(t.controlPoints[l])))}return i}else return t.controlPoints.map(P.dehomogenize);return At.rationalCurveAdaptiveSampleRange(t,t.knots[0],G.last(t.knots),n,r)},At.rationalCurveAdaptiveSampleRange=function(t,n,r,i,a){var h=P.rationalCurvePoint(t,n),l=P.rationalCurvePoint(t,r),v=.5+.2*Math.random(),_=n+(r-n)*v,f=P.rationalCurvePoint(t,_),g=u.sub(h,l),m=u.sub(h,f);if(u.dot(g,g)<i&&u.dot(m,m)>i||!ce.threePointsAreFlat(h,f,l,i)){var b=n+(r-n)*.5,x=At.rationalCurveAdaptiveSampleRange(t,n,b,i,a),M=At.rationalCurveAdaptiveSampleRange(t,b,r,i,a);return x.slice(0,-1).concat(M)}else return a?[[n].concat(h),[r].concat(l)]:[h,l]},At.rationalSurfaceNaive=function(t,n,r){n<1&&(n=1),r<1&&(r=1),t.degreeU,t.degreeV,t.controlPoints;for(var i=t.knotsU,a=t.knotsV,h=G.last(i)-i[0],l=G.last(a)-a[0],v=h/n,_=l/r,f=[],g=[],m=[],b=0,x=n+1;b<x;)for(var M=b++,I=0,C=r+1;I<C;){var B=I++,E=M*v,T=B*_;g.push([E,T]);var U=P.rationalSurfaceDerivatives(t,E,T,1),F=U[0][0];f.push(F);var j=u.normalized(u.cross(U[1][0],U[0][1]));m.push(j)}for(var D=[],R=0;R<n;)for(var q=R++,H=0;H<r;){var $=H++,nt=q*(r+1)+$,st=(q+1)*(r+1)+$,rt=st+1,at=nt+1,et=[nt,st,rt],ot=[nt,rt,at];D.push(et),D.push(ot)}return new ye(D,f,m,g)},At.divideRationalSurfaceAdaptive=function(t,n){n==null&&(n=new Ke),n.minDivsU!=null?n.minDivsU=n.minDivsU:n.minDivsU=1,n.minDivsV!=null?n.minDivsU=n.minDivsV:n.minDivsU=1,n.refine!=null?n.refine=n.refine:n.refine=!0;var r=(t.controlPoints.length-1)*2,i=(t.controlPoints[0].length-1)*2,a;n.minDivsU>r?a=n.minDivsU=n.minDivsU:a=n.minDivsU=r;var h;n.minDivsV>i?h=n.minDivsV=n.minDivsV:h=n.minDivsV=i;for(var l=G.last(t.knotsU),v=t.knotsU[0],_=G.last(t.knotsV),f=t.knotsV[0],g=(l-v)/a,m=(_-f)/h,b=[],x=[],M=0,I=h+1;M<I;){for(var C=M++,B=[],E=0,T=a+1;E<T;){var U=E++,F=v+g*U,j=f+m*C,D=P.rationalSurfaceDerivatives(t,F,j,1),R=u.normalized(u.cross(D[0][1],D[1][0]));B.push(new fe(D[0][0],R,[F,j],-1,u.isZero(R)))}x.push(B)}for(var q=0;q<h;)for(var H=q++,$=0;$<a;){var nt=$++,st=[x[h-H-1][nt],x[h-H-1][nt+1],x[h-H][nt+1],x[h-H][nt]];b.push(new Te(t,st))}if(!n.refine)return b;for(var rt=0;rt<h;)for(var at=rt++,et=0;et<a;){var ot=et++,O=at*a+ot,lt=At.north(O,at,ot,a,h,b),mt=At.east(O,at,ot,a,h,b),kt=At.south(O,at,ot,a,h,b),Et=At.west(O,at,ot,a,h,b);b[O].neighbors=[kt,mt,lt,Et],b[O].divide(n)}return b},At.north=function(t,n,r,i,a,h){return n==0?null:h[t-i]},At.south=function(t,n,r,i,a,h){return n==a-1?null:h[t+i]},At.east=function(t,n,r,i,a,h){return r==i-1?null:h[t+1]},At.west=function(t,n,r,i,a,h){return r==0?null:h[t-1]},At.triangulateAdaptiveRefinementNodeTree=function(t){for(var n=ye.empty(),r=0;r<t.length;){var i=t[r];++r,i.triangulate(n)}return n},At.rationalSurfaceAdaptive=function(t,n){n!=null?n=n:n=new Ke;var r=At.divideRationalSurfaceAdaptive(t,n);return At.triangulateAdaptiveRefinementNodeTree(r)};var Ke=p.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};y["verb.eval.AdaptiveRefinementOptions"]=Ke,Ke.__name__=["verb","eval","AdaptiveRefinementOptions"],Ke.prototype={__class__:Ke};var Te=p.core.AdaptiveRefinementNode=function(t,n,r){if(this.srf=t,r==null?this.neighbors=[null,null,null,null]:this.neighbors=r,this.corners=n,this.corners==null){var i=t.knotsU[0],a=G.last(t.knotsU),h=t.knotsV[0],l=G.last(t.knotsV);this.corners=[fe.fromUv(i,h),fe.fromUv(a,h),fe.fromUv(a,l),fe.fromUv(i,l)]}};y["verb.eval.AdaptiveRefinementNode"]=Te,Te.__name__=["verb","eval","AdaptiveRefinementNode"],Te.prototype={isLeaf:function(){return this.children==null},center:function(){return this.centerPoint!=null?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var t=0;t<4;){var n=t++;if(this.corners[n].point==null){var r=this.corners[n];this.evalSrf(r.uv[0],r.uv[1],r)}}},evalSrf:function(t,n,r){var i=P.rationalSurfaceDerivatives(this.srf,t,n,1),a=i[0][0],h=u.cross(i[0][1],i[1][0]),l=u.isZero(h);return l||(h=u.normalized(h)),r!=null?(r.degen=l,r.point=a,r.normal=h,r):new fe(a,h,[t,n],-1,l)},getEdgeCorners:function(t){if(this.isLeaf())return[this.corners[t]];if(this.horizontal)switch(t){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(t){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(t){var n=[this.corners[t]];if(this.neighbors[t]==null)return n;var r=this.neighbors[t].getEdgeCorners((t+2)%4),i=t%2,a=tt.EPSILON,h=this,l=[function(_){return _.uv[0]>h.corners[0].uv[0]+a&&_.uv[0]<h.corners[2].uv[0]-a},function(_){return _.uv[1]>h.corners[0].uv[1]+a&&_.uv[1]<h.corners[2].uv[1]-a}],v=r.filter(l[i]);return v.reverse(),n.concat(v)},midpoint:function(t){if(this.midPoints==null&&(this.midPoints=[null,null,null,null]),this.midPoints[t]!=null)return this.midPoints[t];switch(t){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05);break}return this.midPoints[t]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var t=this.corners.length,n=0;n<t;){var r=n++;if(this.corners[r],this.corners[r].degen){var i=this.corners[(r+1)%t],a=this.corners[(r+3)%t];i.degen?this.corners[r].normal=a.normal:this.corners[r].normal=i.normal}}},shouldDivide:function(t,n){if(n<t.minDepth)return!0;if(n>=t.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=u.normSquared(u.sub(this.corners[0].normal,this.corners[1].normal))>t.normTol||u.normSquared(u.sub(this.corners[2].normal,this.corners[3].normal))>t.normTol,this.splitHoriz=u.normSquared(u.sub(this.corners[1].normal,this.corners[2].normal))>t.normTol||u.normSquared(u.sub(this.corners[3].normal,this.corners[0].normal))>t.normTol,this.splitVert||this.splitHoriz)return!0;var r=this.center();return u.normSquared(u.sub(r.normal,this.corners[0].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[1].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[2].normal))>t.normTol||u.normSquared(u.sub(r.normal,this.corners[3].normal))>t.normTol},divide:function(t){t==null&&(t=new Ke),t.normTol==null&&(t.normTol=.085),t.minDepth==null&&(t.minDepth=0),t.maxDepth==null&&(t.maxDepth=10),this._divide(t,0,!0)},_divide:function(t,n,r){if(this.evalCorners(),!!this.shouldDivide(t,n)){if(n++,this.splitVert&&!this.splitHoriz?r=!1:!this.splitVert&&this.splitHoriz&&(r=!0),this.horizontal=r,this.horizontal){var i=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],a=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new Te(this.srf,i),new Te(this.srf,a)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var h=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],l=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new Te(this.srf,h),new Te(this.srf,l)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var v=0,_=this.children;v<_.length;){var f=_[v];++v,f._divide(t,n,!r)}}},triangulate:function(t){if(t==null&&(t=ye.empty()),this.isLeaf())return this.triangulateLeaf(t);for(var n=0,r=this.children;n<r.length;){var i=r[n];if(++n,i==null)break;i.triangulate(t)}return t},triangulateLeaf:function(t){for(var n=t.points.length,r=[],i=[],a=0,h=0;h<4;){var l=h++,v=this.getAllCorners(l);v.length==2&&(a=l+1);for(var _=0,f=v.length;_<f;){var g=_++;r.push(v[g])}}for(var m=0;m<r.length;){var b=r[m];if(++m,b.id!=-1){i.push(b.id);continue}t.uvs.push(b.uv),t.points.push(b.point),t.normals.push(b.normal),b.id=n,i.push(n),n++}if(r.length==4)return t.faces.push([i[0],i[3],i[1]]),t.faces.push([i[3],i[2],i[1]]),t;if(r.length==5){var x=i.length;return t.faces.push([i[a],i[(a+2)%x],i[(a+1)%x]]),t.faces.push([i[(a+4)%x],i[(a+3)%x],i[a]]),t.faces.push([i[a],i[(a+3)%x],i[(a+2)%x]]),t}var M=this.center();t.uvs.push(M.uv),t.points.push(M.point),t.normals.push(M.normal);for(var I=t.points.length-1,C=0,B=r.length-1;C<r.length;)t.faces.push([I,i[C],i[B]]),B=C++;return t},__class__:Te};var dt=p.exe.Dispatcher=function(){};y["verb.exe.Dispatcher"]=dt,dt.__name__=["verb","exe","Dispatcher"],dt.init=function(){dt._init||(dt._workerPool=new je(dt.THREADS),dt._init=!0)},dt.dispatchMethod=function(t,n,r){dt.init();var i=new hn,a=function(h){i.resolve(h)};return dt._workerPool.addWork(ct.getClassName(t),n,r,a),new Jt(i)};var je=p.exe.WorkerPool=function(t,n){n==null&&(n="verb.js"),t==null&&(t=1),this._callbacks=new Kt,this._working=new Kt,this._pool=[],this._queue=[];for(var r=0;r<t;){r++;var i;try{i=new Worker(je.basePath+n)}catch(a){a instanceof K&&(a=a.val),i=new Worker(je.basePath+n.substring(0,-3)+".min.js")}this._pool.push(i)}};y["verb.exe.WorkerPool"]=je,je.__name__=["verb","exe","WorkerPool"],je.prototype={addWork:function(t,n,r,i){var a=new $e(t,n,r);this._callbacks.set(a.id,i),this._queue.push(a),this.processQueue()},processQueue:function(){for(var t=this;this._queue.length>0&&this._pool.length>0;){var n=this._queue.shift(),r=[n.id],i=[this._pool.shift()];this._working.h[r[0]]=i[0],i[0].onmessage=function(a,h){return function(l){t._working.remove(h[0]),t._pool.push(a[0]);try{t._callbacks.h.hasOwnProperty(h[0])&&(t._callbacks.h[h[0]](l.data.result),t._callbacks.remove(h[0]))}catch(v){v instanceof K&&(v=v.val),z.log(v)}t.processQueue()}}(i,r),i[0].postMessage(n)}},__class__:je};var $e=function(t,n,r){this.className=t,this.methodName=n,this.args=r,this.id=$e.uuid++};y["verb.exe._WorkerPool.Work"]=$e,$e.__name__=["verb","exe","_WorkerPool","Work"],$e.prototype={__class__:$e};var gn=function(){};y["verb.geom.ICurve"]=gn,gn.__name__=["verb","geom","ICurve"],gn.__interfaces__=[dn],gn.prototype={__class__:gn};var bt=p.geom.NurbsCurve=function(t){this._data=me.isValidNurbsCurveData(t)};y["verb.geom.NurbsCurve"]=bt,bt.__name__=["verb","geom","NurbsCurve"],bt.__interfaces__=[gn],bt.byKnotsControlPointsWeights=function(t,n,r,i){return new bt(new Ct(t,n.slice(),P.homogenize1d(r,i)))},bt.byPoints=function(t,n){return n==null&&(n=3),new bt(ht.rationalInterpCurve(t,n))},bt.__super__=Vt,bt.prototype=k(Vt.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return P.dehomogenize1d(this._data.controlPoints)},weights:function(){return P.weight1d(this._data.controlPoints)},asNurbs:function(){return new Ct(this.degree(),this.knots(),P.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new bt(this._data)},domain:function(){return new ne(G.first(this._data.knots),G.last(this._data.knots))},transform:function(t){return new bt(vt.rationalCurveTransform(this._data,t))},transformAsync:function(t){return dt.dispatchMethod(vt,"rationalCurveTransform",[this._data,t]).then(function(n){return new bt(n)})},point:function(t){return P.rationalCurvePoint(this._data,t)},pointAsync:function(t){return dt.dispatchMethod(P,"rationalCurvePoint",[this._data,t])},tangent:function(t){return P.rationalCurveTangent(this._data,t)},tangentAsync:function(t){return dt.dispatchMethod(P,"rationalCurveTangent",[this._data,t])},derivatives:function(t,n){return n==null&&(n=1),P.rationalCurveDerivatives(this._data,t,n)},derivativesAsync:function(t,n){return n==null&&(n=1),dt.dispatchMethod(P,"rationalCurveDerivatives",[this._data,t,n])},closestPoint:function(t){return _t.rationalCurveClosestPoint(this._data,t)},closestPointAsync:function(t){return dt.dispatchMethod(_t,"rationalCurveClosestPoint",[this._data,t])},closestParam:function(t){return _t.rationalCurveClosestParam(this._data,t)},closestParamAsync:function(t){return dt.dispatchMethod(_t,"rationalCurveClosestParam",[this._data,t])},length:function(){return _t.rationalCurveArcLength(this._data)},lengthAsync:function(){return dt.dispatchMethod(_t,"rationalCurveArcLength",[this._data])},lengthAtParam:function(t){return _t.rationalCurveArcLength(this._data,t)},lengthAtParamAsync:function(){return dt.dispatchMethod(_t,"rationalCurveArcLength",[this._data])},paramAtLength:function(t,n){return _t.rationalCurveParamAtArcLength(this._data,t,n)},paramAtLengthAsync:function(t,n){return dt.dispatchMethod(_t,"rationalCurveParamAtArcLength",[this._data,t,n])},divideByEqualArcLength:function(t){return Zt.rationalCurveByEqualArcLength(this._data,t)},divideByEqualArcLengthAsync:function(t){return dt.dispatchMethod(Zt,"rationalCurveByEqualArcLength",[this._data,t])},divideByArcLength:function(t){return Zt.rationalCurveByArcLength(this._data,t)},divideByArcLengthAsync:function(t){return dt.dispatchMethod(Zt,"rationalCurveByArcLength",[this._data,t])},split:function(t){return Zt.curveSplit(this._data,t).map(function(n){return new bt(n)})},splitAsync:function(t){return dt.dispatchMethod(Zt,"curveSplit",[this._data,t]).then(function(n){return n.map(function(r){return new bt(r)})})},reverse:function(){return new bt(vt.curveReverse(this._data))},reverseAsync:function(){return dt.dispatchMethod(vt,"curveReverse",[this._data]).then(function(t){return new bt(t)})},tessellate:function(t){return At.rationalCurveAdaptiveSample(this._data,t,!1)},tessellateAsync:function(t){return dt.dispatchMethod(At,"rationalCurveAdaptiveSample",[this._data,t,!1])},__class__:bt});var Xe=p.geom.Arc=function(t,n,r,i,a,h){bt.call(this,ht.arc(t,n,r,i,a,h)),this._center=t,this._xaxis=n,this._yaxis=r,this._radius=i,this._minAngle=a,this._maxAngle=h};y["verb.geom.Arc"]=Xe,Xe.__name__=["verb","geom","Arc"],Xe.__super__=bt,Xe.prototype=k(bt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Xe});var qn=p.geom.BezierCurve=function(t,n){bt.call(this,ht.rationalBezierCurve(t,n))};y["verb.geom.BezierCurve"]=qn,qn.__name__=["verb","geom","BezierCurve"],qn.__super__=bt,qn.prototype=k(bt.prototype,{__class__:qn});var Gn=p.geom.Circle=function(t,n,r,i){Xe.call(this,t,n,r,i,0,Math.PI*2)};y["verb.geom.Circle"]=Gn,Gn.__name__=["verb","geom","Circle"],Gn.__super__=Xe,Gn.prototype=k(Xe.prototype,{__class__:Gn});var pn=function(){};y["verb.geom.ISurface"]=pn,pn.__name__=["verb","geom","ISurface"],pn.__interfaces__=[dn],pn.prototype={__class__:pn};var gt=p.geom.NurbsSurface=function(t){this._data=me.isValidNurbsSurfaceData(t)};y["verb.geom.NurbsSurface"]=gt,gt.__name__=["verb","geom","NurbsSurface"],gt.__interfaces__=[pn],gt.byKnotsControlPointsWeights=function(t,n,r,i,a,h){return new gt(new Ot(t,n,r,i,P.homogenize2d(a,h)))},gt.byCorners=function(t,n,r,i){return new gt(ht.fourPointSurface(t,n,r,i))},gt.byLoftingCurves=function(t,n){return new gt(ht.loftedSurface(function(r){for(var i,a=[],h=0;h<t.length;){var l=t[h];++h,a.push(l.asNurbs())}return i=a,i}(),n))},gt.__super__=Vt,gt.prototype=k(Vt.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return P.dehomogenize2d(this._data.controlPoints)},weights:function(){return P.weight2d(this._data.controlPoints)},asNurbs:function(){return new Ot(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),P.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new gt(this.asNurbs())},domainU:function(){return new ne(G.first(this._data.knotsU),G.last(this._data.knotsU))},domainV:function(){return new ne(G.first(this._data.knotsV),G.last(this._data.knotsV))},point:function(t,n){return P.rationalSurfacePoint(this._data,t,n)},pointAsync:function(t,n){return dt.dispatchMethod(P,"rationalSurfacePoint",[this._data,t,n])},normal:function(t,n){return P.rationalSurfaceNormal(this._data,t,n)},normalAsync:function(t,n){return dt.dispatchMethod(P,"rationalSurfaceNormal",[this._data,t,n])},derivatives:function(t,n,r){return r==null&&(r=1),P.rationalSurfaceDerivatives(this._data,t,n,r)},derivativesAsync:function(t,n,r){return r==null&&(r=1),dt.dispatchMethod(P,"rationalSurfaceDerivatives",[this._data,t,n,r])},closestParam:function(t){return _t.rationalSurfaceClosestParam(this._data,t)},closestParamAsync:function(t){return dt.dispatchMethod(_t,"rationalSurfaceClosestParam",[this._data,t])},closestPoint:function(t){return _t.rationalSurfaceClosestPoint(this._data,t)},closestPointAsync:function(t){return dt.dispatchMethod(_t,"rationalSurfaceClosestPoint",[this._data,t])},split:function(t,n){return n==null&&(n=!1),Zt.surfaceSplit(this._data,t,n).map(function(r){return new gt(r)})},splitAsync:function(t,n){return n==null&&(n=!1),dt.dispatchMethod(Zt,"surfaceSplit",[this._data,t,n]).then(function(r){return r.map(function(i){return new gt(i)})})},reverse:function(t){return t==null&&(t=!1),new gt(vt.surfaceReverse(this._data,t))},reverseAsync:function(t){return t==null&&(t=!1),dt.dispatchMethod(vt,"surfaceReverse",[this._data,t]).then(function(n){return new gt(n)})},isocurve:function(t,n){return n==null&&(n=!1),new bt(ht.surfaceIsocurve(this._data,t,n))},isocurveAsync:function(t,n){return n==null&&(n=!1),dt.dispatchMethod(ht,"surfaceIsocurve",[this._data,t,n]).then(function(r){return new bt(r)})},boundaries:function(t){return ht.surfaceBoundaryCurves(this._data).map(function(n){return new bt(n)})},boundariesAsync:function(t){return dt.dispatchMethod(ht,"surfaceBoundaryCurves",[this._data]).then(function(n){return n.map(function(r){return new bt(r)})})},tessellate:function(t){return At.rationalSurfaceAdaptive(this._data,t)},tessellateAsync:function(t){return dt.dispatchMethod(At,"rationalSurfaceAdaptive",[this._data,t])},transform:function(t){return new gt(vt.rationalSurfaceTransform(this._data,t))},transformAsync:function(t){return dt.dispatchMethod(vt,"rationalSurfaceTransform",[this._data,t]).then(function(n){return new gt(n)})},__class__:gt});var Kn=p.geom.ConicalSurface=function(t,n,r,i,a){gt.call(this,ht.conicalSurface(t,n,r,i,a)),this._axis=t,this._xaxis=n,this._base=r,this._height=i,this._radius=a};y["verb.geom.ConicalSurface"]=Kn,Kn.__name__=["verb","geom","ConicalSurface"],Kn.__super__=gt,Kn.prototype=k(gt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:Kn});var jn=p.geom.CylindricalSurface=function(t,n,r,i,a){gt.call(this,ht.cylindricalSurface(t,n,r,i,a)),this._axis=t,this._xaxis=n,this._base=r,this._height=i,this._radius=a};y["verb.geom.CylindricalSurface"]=jn,jn.__name__=["verb","geom","CylindricalSurface"],jn.__super__=gt,jn.prototype=k(gt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:jn});var We=p.geom.EllipseArc=function(t,n,r,i,a){bt.call(this,ht.ellipseArc(t,n,r,i,a)),this._center=t,this._xaxis=n,this._yaxis=r,this._minAngle=i,this._maxAngle=a};y["verb.geom.EllipseArc"]=We,We.__name__=["verb","geom","EllipseArc"],We.__super__=bt,We.prototype=k(bt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:We});var Xn=p.geom.Ellipse=function(t,n,r){We.call(this,t,n,r,0,Math.PI*2)};y["verb.geom.Ellipse"]=Xn,Xn.__name__=["verb","geom","Ellipse"],Xn.__super__=We,Xn.prototype=k(We.prototype,{__class__:Xn});var Wn=p.geom.ExtrudedSurface=function(t,n){gt.call(this,ht.extrudedSurface(u.normalized(n),u.norm(n),t.asNurbs())),this._profile=t,this._direction=n};y["verb.geom.ExtrudedSurface"]=Wn,Wn.__name__=["verb","geom","ExtrudedSurface"],Wn.__super__=gt,Wn.prototype=k(gt.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:Wn});var Ze=p.geom.Intersect=function(){};y["verb.geom.Intersect"]=Ze,Ze.__name__=["verb","geom","Intersect"],Ze.curves=function(t,n,r){return r==null&&(r=.001),it.curves(t.asNurbs(),n.asNurbs(),r)},Ze.curvesAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"curves",[t.asNurbs(),n.asNurbs(),r])},Ze.curveAndSurface=function(t,n,r){return r==null&&(r=.001),it.curveAndSurface(t.asNurbs(),n.asNurbs(),r)},Ze.curveAndSurfaceAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"curveAndSurface",[t.asNurbs(),n.asNurbs(),r])},Ze.surfaces=function(t,n,r){return r==null&&(r=.001),it.surfaces(t.asNurbs(),n.asNurbs(),r).map(function(i){return new bt(i)})},Ze.surfacesAsync=function(t,n,r){return r==null&&(r=.001),dt.dispatchMethod(it,"surfaces",[t.asNurbs(),n.asNurbs(),r]).then(function(i){return i.map(function(a){return new bt(a)})})};var Zn=p.geom.Line=function(t,n){bt.call(this,ht.polyline([t,n])),this._start=t,this._end=n};y["verb.geom.Line"]=Zn,Zn.__name__=["verb","geom","Line"],Zn.__super__=bt,Zn.prototype=k(bt.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:Zn});var Yn=p.geom.RevolvedSurface=function(t,n,r,i){gt.call(this,ht.revolvedSurface(t.asNurbs(),n,r,i)),this._profile=t,this._center=n,this._axis=r,this._angle=i};y["verb.geom.RevolvedSurface"]=Yn,Yn.__name__=["verb","geom","RevolvedSurface"],Yn.__super__=gt,Yn.prototype=k(gt.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:Yn});var Hn=p.geom.SphericalSurface=function(t,n){gt.call(this,ht.sphericalSurface(t,[0,0,1],[1,0,0],n)),this._center=t,this._radius=n};y["verb.geom.SphericalSurface"]=Hn,Hn.__name__=["verb","geom","SphericalSurface"],Hn.__super__=gt,Hn.prototype=k(gt.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:Hn});var Qn=p.geom.SweptSurface=function(t,n){gt.call(this,ht.rationalTranslationalSurface(t.asNurbs(),n.asNurbs())),this._profile=t,this._rail=n};y["verb.geom.SweptSurface"]=Qn,Qn.__name__=["verb","geom","SweptSurface"],Qn.__super__=gt,Qn.prototype=k(gt.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:Qn});function be(t){return t instanceof Array?function(){return V.iter(t)}:typeof t.iterator=="function"?ve(t,t.iterator):t.iterator}var Mr,Ti=0;function ve(t,n){if(n==null)return null;n.__id__==null&&(n.__id__=Ti++);var r;return t.hx__closures__==null?t.hx__closures__={}:r=t.hx__closures__[n.__id__],r==null&&(r=function(){return r.method.apply(r.scope,arguments)},r.scope=t,r.method=n,t.hx__closures__[n.__id__]=r),r}y.Math=Math,String.prototype.__class__=y.String=String,String.__name__=["String"],y.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=y.Date=Date,Date.__name__=["Date"];var Ui=y.Int={__name__:["Int"]},Ri=y.Dynamic={__name__:["Dynamic"]},oi=y.Float=Number;oi.__name__=["Float"];var hi=y.Bool=Boolean;hi.__ename__=["Bool"];var ui=y.Class={__name__:["Class"]},li={};Array.prototype.map==null&&(Array.prototype.map=function(t){for(var n=[],r=0,i=this.length;r<i;){var a=r++;n[a]=t(this[a])}return n}),Array.prototype.filter==null&&(Array.prototype.filter=function(t){for(var n=[],r=0,i=this.length;r<i;){var a=r++,h=this[a];t(h)&&n.push(h)}return n});var Ar={},rr=S.ArrayBuffer||Wt;rr.prototype.slice==null&&(rr.prototype.slice=Wt.sliceImpl),S.DataView;var Pr=S.Uint8Array||Se._new;(function(t,n){if(t.setImmediate)return;var r=1,i={},a=!1,h=t.document,l;function v(E){return i[r]=_.apply(n,E),r++}function _(E){var T=[].slice.call(arguments,1);return function(){typeof E=="function"?E.apply(n,T):new Function(""+E)()}}function f(E){if(a)setTimeout(_(f,E),0);else{var T=i[E];if(T){a=!0;try{T()}finally{g(E),a=!1}}}}function g(E){delete i[E]}function m(){l=function(){var E=v(arguments);return process.nextTick(_(f,E)),E}}function b(){if(t.postMessage&&!t.importScripts){var E=!0,T=t.onmessage;return t.onmessage=function(){E=!1},t.postMessage("","*"),t.onmessage=T,E}}function x(){var E="setImmediate$"+Math.random()+"$",T=function(U){U.source===t&&typeof U.data=="string"&&U.data.indexOf(E)===0&&f(+U.data.slice(E.length))};t.addEventListener?t.addEventListener("message",T,!1):t.attachEvent("onmessage",T),l=function(){var U=v(arguments);return t.postMessage(E+U,"*"),U}}function M(){var E=new MessageChannel;E.port1.onmessage=function(T){var U=T.data;f(U)},l=function(){var T=v(arguments);return E.port2.postMessage(T),T}}function I(){var E=h.documentElement;l=function(){var T=v(arguments),U=h.createElement("script");return U.onreadystatechange=function(){f(T),U.onreadystatechange=null,E.removeChild(U),U=null},E.appendChild(U),T}}function C(){l=function(){var E=v(arguments);return setTimeout(_(f,E),0),E}}var B=Object.getPrototypeOf&&Object.getPrototypeOf(t);B=B&&B.setTimeout?B:t,{}.toString.call(t.process)==="[object process]"?m():b()?x():t.MessageChannel?M():h&&"onreadystatechange"in h.createElement("script")?I():C(),B.setImmediate=l,B.clearImmediate=g})(new Function("return this")()),jt.USE_CACHE=!1,jt.USE_ENUM_INDEX=!1,jt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Rt.DEFAULT_RESOLVER=ct,Rt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Qt.count=0,Xt.i64tmp=function(t){var n,r=new Ut(0,0);return n=r,n}(),wt.__toStr={}.toString,Se.BYTES_PER_ELEMENT=1,ft.queue=new J,Pt.memo=new Kt,tt.TOLERANCE=1e-6,tt.EPSILON=1e-10,tt.VERSION="2.0.0",_t.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],_t.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],dt.THREADS=1,dt._init=!1,je.basePath="",$e.uuid=0,er.main()}(typeof console<"u"?console:{log:function(){}},s,typeof w<"u"?w:typeof o<"u"?o:typeof self<"u"?self:this),s})})(ai);var Ei=ai.exports;const yr=Ii(Ei);class wr extends $n{constructor(e,s,o,c,d,w=0,A=Ht){super(),this.center=e,this.normal=s,this.majorAxis=o,this.majorAxisRadius=c,this.minorAxisRadius=d,(A-w)%Ht==0?(this.startAngle=0,this.endAngle=Ht):(this.startAngle=w,this.endAngle=A)}get center(){return this._center}set center(e){this._center=new Dt(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(e){if(e<0)throw se.AcCmErrors.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(e){if(e<0)throw se.AcCmErrors.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(e){this._startAngle=Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(e){this._endAngle=this.startAngle==0&&e==Ht?e:Tt.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Tt.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(e){this._normal=new Y(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(e){this._majorAxis=new Y(e.x,e.y,e.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new Y().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get length(){return this.toVerbEllipseArc().length()}calculateBoundingBox(){if(this.majorAxis.equals(Y.X_AXIS)||this.majorAxis.equals(Y.Y_AXIS)||this.majorAxis.isParallelTo(Y.X_AXIS)||this.majorAxis.isParallelTo(Y.Y_AXIS)){const e=[this.startAngle,this.endAngle];for(let z=0;z<2*Math.PI;z+=Math.PI/2)Tt.isBetweenAngle(z,this.startAngle,this.endAngle)&&e.push(z);let s=1/0,o=1/0,c=1/0,d=-1/0,w=-1/0,A=-1/0;for(const z of e){const p=this.getPointAtAngle(z);p.x<s&&(s=p.x),p.y<o&&(o=p.y),p.z<c&&(c=p.z),p.x>d&&(d=p.x),p.y>w&&(w=p.y),p.z>A&&(A=p.z)}return new De({x:s,y:o,z:c},{x:d,y:w,z:A})}else{let s=1/0,o=1/0,c=1/0,d=-1/0,w=-1/0,A=-1/0;for(let z=0;z<=100;z++){const p=this.startAngle+this.deltaAngle*(z/100),S=this.getPointAtAngle(p);s=Math.min(s,S.x),o=Math.min(o,S.y),c=Math.min(c,S.z),d=Math.max(d,S.x),w=Math.max(w,S.y),A=Math.max(A,S.z)}return new De({x:s,y:o,z:c},{x:d,y:w,z:A})}}get closed(){return this.deltaAngle==0}getPoints(e=100){const s=[];let o=this.deltaAngle,c=this.startAngle;this.closed&&(o=Ht,c=0);for(let d=0;d<=e;d++){const w=c+o*(d/e),A=this.getPointAtAngle(w);s.push(A)}return s}getPointAtAngle(e){const s=Math.cos(e),o=Math.sin(e),c=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(o),d=this.majorAxis.clone().multiplyScalar(s*this.majorAxisRadius).add(c);return new Dt(this.center.x+d.x,this.center.y+d.y,this.center.z+d.z)}contains(e){const s=new Y(e).sub(this.center),o=s.dot(this.majorAxis),c=s.dot(this.minorAxis),d=o/this.majorAxisRadius,w=c/this.minorAxisRadius;return d*d+w*w<=1}transform(e){return this._boundingBoxNeedsUpdate=!0,this}copy(e){return this.center=e.center,this.normal=e.normal,this.majorAxis=e.majorAxis,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new wr(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const e=new Y(this.center).distanceTo(lr);return new Mn(this.normal,e)}toVerbEllipseArc(){const e=new Array(3);this.center.toArray(e);const s=new Array(3);this.majorAxis.clone().multiplyScalar(this.majorAxisRadius).toArray(s);const o=new Array(3);return this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).toArray(o),new yr.geom.EllipseArc(e,s,o,this.startAngle,this.endAngle)}}class Ni extends on{constructor(e=null,s=!1){super(),this._vertices=e||new Array,this._closed=s}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const e=this._vertices[0];return new Bt(e.x,e.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const e=this.numberOfVertices;if(e>0)if(this.closed){const s=this._vertices[0];return new Bt(s.x,s.y)}else{const s=this._vertices[e-1];return new Bt(s.x,s.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let e=0;const s=this._vertices.length;for(let o=0;o<s;++o){const c=this._vertices[o];let d=null;if(o<s-1?d=this._vertices[o+1]:o==s-1&&this.closed&&(d=this._vertices[0]),d)if(c.bulge){const w=new An(c,d,c.bulge);e+=w.length}else e+=new Bt(c.x,c.y).distanceTo(d)}return e}set closed(e){this._closed=e,this._boundingBoxNeedsUpdate=!0}addVertexAt(e,s){e<=0?this._vertices.unshift(s):this._vertices.splice(e,0,s),this._boundingBoxNeedsUpdate=!0}getPointAt(e){const s=this._vertices[e];return new Bt(s.x,s.y)}calculateBoundingBox(){const e=this.getPoints(100);return new de().setFromPoints(e)}transform(e){return this._boundingBoxNeedsUpdate=!0,this}getPoints3d(e,s){const o=[];return this.getPoints(e).forEach(d=>o.push(new Dt().set(d.x,d.y,s))),o}getPoints(e){const s=[],o=this._vertices.length;for(let c=0;c<o;++c){const d=this._vertices[c];if(d.bulge){let w=null;if(c<o-1?w=this._vertices[c+1]:c==o-1&&this.closed&&(w=this._vertices[0]),w){const z=new An(d,w,d.bulge).getPoints(e),p=z.length;for(let S=0;S<p;++S){const y=z[S];s.push(new Bt(y.x,y.y))}}}else s.push(new Bt(d.x,d.y)),c==o-1&&this.closed&&s.push(s[0])}return s}}class br extends on{constructor(e,s){super(),this._start=new Bt(e),this._end=new Bt(s)}get startPoint(){return this._start}set startPoint(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const e=new Bt(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),s=new Bt(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new de(e,s)}transform(e){return this._start.applyMatrix2d(e),this._end.applyMatrix2d(e),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new br(this._start.clone(),this._end.clone())}}class Bi extends on{constructor(e=[]){super(),this._curves=e}get curves(){return this._curves}add(e){this._curves.push(e),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const e=this._curves[0].startPoint;return new Bt(e.x,e.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let e=0;return this._curves.forEach(s=>{e+=s.length}),e}calculateBoundingBox(){const e=this.getPoints(100),s=new de;return s.setFromPoints(e),s}transform(e){return this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(e){const s=[];return this.curves.forEach(o=>{o.getPoints(e).forEach(c=>{s.push(new Bt(c.x,c.y))})}),s}}class Li extends $n{constructor(e,s,o){super();const c=+(e!==void 0)+ +(s!==void 0)+ +(o!==void 0);if(c!=2&&c!=3)throw se.AcCmErrors.ILLEGAL_PARAMETERS;const d=3;if(this._closed=!1,c==2&&!Array.isArray(s)){this._fitPoints=e,this._knotParameterization=s;const w=this.toVerbPoints(this._fitPoints);this._nurbsCurve=yr.geom.NurbsCurve.byPoints(w,d),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else{this._controlPoints=e;const w=this.toVerbPoints(this._controlPoints);this._nurbsCurve=yr.geom.NurbsCurve.byKnotsControlPointsWeights(d,s,w,o)}}get degree(){return this._nurbsCurve.degree()}get knotParameterization(){return this._knotParameterization}get startPoint(){const e=this._nurbsCurve.knots(),s=this._nurbsCurve.degree(),o=e[s],c=this._nurbsCurve.point(o);return new Dt(c[0],c[1],c[2])}get endPoint(){const e=this._nurbsCurve.knots(),s=this._nurbsCurve.degree(),o=e[e.length-s-1],c=this._nurbsCurve.point(o);return new Dt(c[0],c[1],c[2])}get length(){return this._nurbsCurve.length()}getFitPointAt(e){if(!this._fitPoints)throw new Error("No fit points in this spline");const s=this._fitPoints.length,o=e<0||e>=s?s-1:e,c=this._fitPoints[o];return{x:c.x,y:c.y,z:c.z||0}}getControlPointAt(e){const s=this._controlPoints.length,o=e<0||e>=s?s-1:e;return this._controlPoints[o]}getPoints(e=100){const s=this._nurbsCurve,o=[],c=s.knots(),d=this._nurbsCurve.degree(),w=c[d],z=(c[c.length-d-1]-w)/(e-1);for(let p=0;p<e;p++){const S=w+p*z,y=s.point(S);o.push(new Dt(y[0],y[1],y[2]))}return o}getCurvePoints(e,s){const o=[],c=e.knots(),d=c[3],A=(c[c.length-4]-d)/(s-1);for(let z=0;z<s;z++){const p=d+z*A;o.push(e.point(p))}return o}calculateBoundingBox(){const e=this.getPoints(100);return new De().setFromPoints(e)}get closed(){return this._closed}set closed(e){this._boundingBoxNeedsUpdate=!0,this._closed=e}transform(e){return this._boundingBoxNeedsUpdate=!0,this}toVerbPoints(e){const s=new Array(e.length);return e.forEach((o,c)=>{s[c]=[o.x,o.y,o.z||0]}),s}toGePoints(e){const s=new Array(e.length);return e.forEach((o,c)=>{s[c]={x:o[0],y:o[1],z:o[2]}}),s}}Q.AcGeArea2d=Ci,Q.AcGeBox2d=de,Q.AcGeBox3d=De,Q.AcGeCircArc2d=An,Q.AcGeCircArc3d=zn,Q.AcGeCurve2d=on,Q.AcGeEllipseArc2d=pr,Q.AcGeEllipseArc3d=wr,Q.AcGeEuler=fr,Q.AcGeGeometryUtil=Jr,Q.AcGeLine2d=br,Q.AcGeLine3d=Pn,Q.AcGeLoop2d=Bi,Q.AcGeMathUtil=Tt,Q.AcGeMatrix2d=rn,Q.AcGeMatrix3d=sn,Q.AcGePlane=Mn,Q.AcGePoint2d=Bt,Q.AcGePoint3d=Dt,Q.AcGePolyline2d=Ni,Q.AcGeQuaternion=xn,Q.AcGeShape2d=mr,Q.AcGeSpline3d=Li,Q.AcGeTol=Hr,Q.AcGeVector2d=Nt,Q.AcGeVector3d=Y,Q.DEFAULT_TOL=cr,Q.DEG2RAD=ir,Q.FLOAT_TOL=He,Q.ORIGIN_POINT_2D=Mi,Q.ORIGIN_POINT_3D=lr,Q.RAD2DEG=sr,Q.TAU=Ht,Q.ceilPowerOfTwo=jr,Q.clamp=Ne,Q.damp=Lr,Q.degToRad=qr,Q.euclideanModulo=ar,Q.floorPowerOfTwo=Xr,Q.generateUUID=Er,Q.intPartLength=hr,Q.inverseLerp=Br,Q.isBetween=Wr,Q.isBetweenAngle=Zr,Q.isPointInPolygon=vr,Q.isPolygonIntersect=Qr,Q.isPowerOfTwo=Kr,Q.lerp=or,Q.mapLinear=Nr,Q.normalizeAngle=bn,Q.pingpong=Tr,Q.radToDeg=Gr,Q.randFloat=Dr,Q.randFloatSpread=Fr,Q.randInt=Vr,Q.relativeEps=Yr,Q.seededRandom=Or,Q.smootherstep=Rr,Q.smoothstep=Ur,Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"})});
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { AcGeBox2d, AcGeMatrix2d, AcGePoint2d } from '../math';
|
2
|
+
import { AcGeLoop2d } from './AcGeLoop2d';
|
3
|
+
import { AcGePolyline2d } from './AcGePolyline2d';
|
4
|
+
import { AcGeShape2d } from './AcGeShape2d';
|
5
|
+
export interface AcGeIndexNode {
|
6
|
+
index: number;
|
7
|
+
children: AcGeIndexNode[];
|
8
|
+
}
|
9
|
+
export type AcGeLoop2dType = AcGeLoop2d | AcGePolyline2d;
|
10
|
+
/**
|
11
|
+
* 2d area defined by one outter loop and multiple inner loops
|
12
|
+
*/
|
13
|
+
export declare class AcGeArea2d extends AcGeShape2d {
|
14
|
+
private _loops;
|
15
|
+
/**
|
16
|
+
* Create one 2d area defined by one outter loop and multiple inner loops
|
17
|
+
*/
|
18
|
+
constructor();
|
19
|
+
/**
|
20
|
+
* Append one loop to loops of this area. If it is the first loop added, it is the outter loop.
|
21
|
+
* Otherwise, it is an inner loop.
|
22
|
+
* @param loop Input the loop to append
|
23
|
+
*/
|
24
|
+
add(loop: AcGeLoop2dType): void;
|
25
|
+
/**
|
26
|
+
* The loops of this area
|
27
|
+
*/
|
28
|
+
get loops(): ReadonlyArray<AcGeLoop2dType>;
|
29
|
+
/**
|
30
|
+
* Outter loop of this area
|
31
|
+
*/
|
32
|
+
get outter(): AcGeLoop2dType | undefined;
|
33
|
+
/**
|
34
|
+
* @inheritdoc
|
35
|
+
*/
|
36
|
+
calculateBoundingBox(): AcGeBox2d;
|
37
|
+
/**
|
38
|
+
* @inheritdoc
|
39
|
+
*/
|
40
|
+
transform(_matrix: AcGeMatrix2d): this;
|
41
|
+
/**
|
42
|
+
* Return boundary points of this area
|
43
|
+
* @param numPoints Input the nubmer of points returned for arc segmentation
|
44
|
+
* @returns Return points
|
45
|
+
*/
|
46
|
+
getPoints(numPoints: number): AcGePoint2d[][];
|
47
|
+
buildHierarchy(): AcGeIndexNode;
|
48
|
+
/**
|
49
|
+
* Calcuate bounding box of each loop in this area and return an array of their bounding box
|
50
|
+
* @param pointBoundaries An array of loop consisted by points
|
51
|
+
* @returns Return an array of bounding box
|
52
|
+
*/
|
53
|
+
private calculateBoundaryBoxes;
|
54
|
+
/**
|
55
|
+
* Sort boundary boxes by its area and return the index of boundary boxes array
|
56
|
+
* @param boundaryBoxes An array of boundary bounding box
|
57
|
+
* @returns Return an index array of boundary bounding box sorted by its area
|
58
|
+
*/
|
59
|
+
private sortBoundaryBoxesByAreas;
|
60
|
+
}
|
61
|
+
//# sourceMappingURL=AcGeArea2d.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AcGeArea2d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeArea2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAmB,MAAM,SAAS,CAAA;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,cAAc,CAAA;AAExD;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,MAAM,CAAuB;IAErC;;OAEG;;IAMH;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,cAAc;IAKxB;;OAEG;IACH,IAAI,KAAK,IACe,aAAa,CAAC,cAAc,CAAC,CACpD;IAED;;OAEG;IACH,IAAI,MAAM,+BAKT;IAED;;OAEG;IACH,oBAAoB,IAAI,SAAS;IASjC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY;IAM/B;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,EAAE;IAU7C,cAAc;IA8Cd;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;CAmBjC"}
|