From d792ad922012706db95375221feefe13d3c5a20d Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 10 Mar 2026 18:55:43 +0100 Subject: [PATCH] wip #8040 @6 --- images/o3dv/envmap/_nx.jpg | Bin 0 -> 18965 bytes images/o3dv/envmap/_ny.jpg | Bin 0 -> 8063 bytes images/o3dv/envmap/_nz.jpg | Bin 0 -> 16963 bytes images/o3dv/envmap/_px.jpg | Bin 0 -> 11430 bytes images/o3dv/envmap/_py.jpg | Bin 0 -> 17789 bytes images/o3dv/envmap/_pz.jpg | Bin 0 -> 22150 bytes js/libs/fluidbook/fluidbook.js | 36 +- js/libs/o3dv/o3dv.min.js | 773 +++++++++++++++++---------------- 8 files changed, 416 insertions(+), 393 deletions(-) create mode 100644 images/o3dv/envmap/_nx.jpg create mode 100644 images/o3dv/envmap/_ny.jpg create mode 100644 images/o3dv/envmap/_nz.jpg create mode 100644 images/o3dv/envmap/_px.jpg create mode 100644 images/o3dv/envmap/_py.jpg create mode 100644 images/o3dv/envmap/_pz.jpg diff --git a/images/o3dv/envmap/_nx.jpg b/images/o3dv/envmap/_nx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab372cd154ebf5732944f6ca86a5d49f127a8759 GIT binary patch literal 18965 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 literal 0 HcmV?d00001 diff --git a/images/o3dv/envmap/_ny.jpg b/images/o3dv/envmap/_ny.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcbd7a37eab00ae1b80e882ddbf526e31e540704 GIT binary patch literal 8063 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 literal 0 HcmV?d00001 diff --git a/images/o3dv/envmap/_px.jpg b/images/o3dv/envmap/_px.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13fb3491e6abbb39ec25c3d334eb7846b4cf943e GIT binary patch literal 11430 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 RWV{rM&A*k2MuHB<{|~sWt6u;B literal 0 HcmV?d00001 diff --git a/images/o3dv/envmap/_py.jpg b/images/o3dv/envmap/_py.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe876374b6ab756dd829bc52030e20bacdf6a00f GIT binary patch literal 17789 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%0DN=h-hnk|>gI7|52-EyS1XtHd&5oKVz*Rm4C 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 literal 0 HcmV?d00001 diff --git a/images/o3dv/envmap/_pz.jpg b/images/o3dv/envmap/_pz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b6d15649afc770d26658ee50de1b1f6b1abb94d GIT binary patch literal 22150 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�aeuT8ezWF4AC+zg{QMrN$w1Q_hg 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‘v&VX$XG|)iKN85ODKp-EIK4GSZ6Z;)(=)dTszR*uX5z(zA@Azpi zoE#}9o;*cV_4ER}a{31BpFjg8!%w~O#v%xP-jXi(yqib(+NY4ZmJNMJvz2Z7EMLL- zi*zCS^zo3GqHhzqqtO-nY|$W;`on-0zd$NPCiyQwuZGe=DQv1O#tTObZJs|)s*#}|{>aO*1zUkp=H(|gd?vC_{>I#$0ik%gwp%R8jWyKvuRp;% z#ex3R)Ex`vQ?#WkX1cC>f`f(QiWllML#{bLU&&vzP@li1P&s_#r^QS+w_r;1&=NZ% zuZ&mFaSZX6n^0=5zWCq6 zBwKcJote!_Xm&PcF6W%0jBZMu+znGYI;Rj)y10D1*KfanpU>xy=kt2MpXc+uUeEh^ zGO>5`HIqa~25$$l#!6i7JUWWV10Np(oS`-DKOXScPu=jJc*jFJGY#WVT?e)qKz6qa zaV_9Mr$xAp#WDuG*HD-fP^y}4Ov}! z_;4KR==>%zBEe(epIg(T} zne@J)45je5Wzq^(F9i3U8WeLcDEuLP^H(-){cs}R$l2k-+{F}=3PL_F-jAgYIqLq&O8BK9&n5yia^y@TZ~7;6ifJySMDT*-5z%q67K4J zc(s1;kfe6O`zH41?`ZQcqejage14Br)UIH0tCi0lng0MRO#A@6f9}|O zANA3*udcmMqyIY#%y&0hZgN=Wb$x_>qONP~Zzj%{4Veu%Vc#7rTKsNC{VH+%0T}<> zFycGV{Gi3hFUHqq_UEsxa81=8>)*@WrsIF8;%ndDR|hHHEBxjGGf{<}ckvH^(^bvD z>F6usY4<+Q?`!xELsvgPns_6TeIw^Rcw?My^gWRE15jJI*9LgIAs*UAn-EgGYPnie0%9o@MrVei{t#Nlb=p_ezds7X9jMO`3Y?y4F;;Wk@rW z+2Q>I5V(5KU)lLI>Hy#DvYFN&XMA7&v!h8GeR;{O*E-F5>n4Y1$GZ2wc+cF(Msp6ZD7`Q4vESYI_*Xxvt9sLy(%a}jy+p0G z73H}x+{w9v{kexVn@`Lz_V$0p8Wg9D^z{Du_k8O~gZ8IaESw�-2F}YfWBJ>;#{-WH*ZMK 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
xsL0@G#9(Uj07g}$wBzeVbDCQ*WYHA zXTL@;SLnf`Y3WH9iFEdEnjyB9*Is1T4K$o5%hfyZdVkPl{Xx6MVGkXxU*dqW`&Vpv z_CyPw5;Wnu%qk{@F{1fEH4v`NU`;~9cd{KU9#s!m(uDH`RgVZ-)QCtho{ac1ZqFmV zrMb%Rl!7XnVMHho`5s@~5}q43rtR6U&7|7Eq;F~9W%37Pv33p=s0K;Gl1bWOK_*#* zbyAQ-6S!Cv=`|bdT3tJ-fHal%2g|#Xwg80S;j&GXoE>! z69k>i=5kcM9LyprVvmt)Kf{ literal 0 HcmV?d00001 diff --git a/js/libs/fluidbook/fluidbook.js b/js/libs/fluidbook/fluidbook.js index 131c1d21..4d1a5cc7 100644 --- a/js/libs/fluidbook/fluidbook.js +++ b/js/libs/fluidbook/fluidbook.js @@ -238,7 +238,7 @@ Fluidbook.prototype = { $('html').addClass('linksanimationlayer-' + this.settings.linksAnimationLayer); // Add class if search is float - if(this.settings.search_field === "float") { + if (this.settings.search_field === "float") { $('body').addClass('floatmode'); } }, @@ -1141,6 +1141,8 @@ Fluidbook.prototype = { }, wopen: function (url, target, options, print) { + + var $this = this; var win; if (this.support.nwjs) { @@ -1292,30 +1294,24 @@ Fluidbook.prototype = { this.displayLoader(); let parentDiv = document.getElementById(containerID); - let bgca = colorValues(bgc); // initialize the viewer with the parent element and some parameters let viewer = new OV.EmbeddedViewer(parentDiv, { - // camera : new OV.Camera ( - // new OV.Coord3D (-1.5, 2.0, 3.0), - // new OV.Coord3D (0.0, 0.0, 0.0), - // new OV.Coord3D (0.0, 1.0, 0.0), - // 45.0 - // ), - backgroundColor: new OV.RGBAColor(bgca[0], bgca[1], bgca[2], Math.round(bgca[3] * 255)), // defaultColor : new OV.RGBColor (200, 200, 200), + backgroundColor: new OV.RGBAColor(bgca[0], bgca[1], bgca[2], Math.round(bgca[3] * 255)), + //defaultColor: new OV.RGBColor(200, 200, 200), // edgeSettings : new OV.EdgeSettings (false, new OV.RGBColor (0, 0, 0), 1), - // environmentSettings : new OV.EnvironmentSettings ( - // [ - // 'assets/envmaps/fishermans_bastion/posx.jpg', - // 'assets/envmaps/fishermans_bastion/negx.jpg', - // 'assets/envmaps/fishermans_bastion/posy.jpg', - // 'assets/envmaps/fishermans_bastion/negy.jpg', - // 'assets/envmaps/fishermans_bastion/posz.jpg', - // 'assets/envmaps/fishermans_bastion/negz.jpg' - // ], - // false - // ) + environmentSettings: new OV.EnvironmentSettings( + [ + 'images/o3dv/envmap/_px.jpg', + 'images/o3dv/envmap/_nx.jpg', + 'images/o3dv/envmap/_py.jpg', + 'images/o3dv/envmap/_ny.jpg', + 'images/o3dv/envmap/_pz.jpg', + 'images/o3dv/envmap/_nz.jpg' + ], + false, + ) }); // load a model providing model urls diff --git a/js/libs/o3dv/o3dv.min.js b/js/libs/o3dv/o3dv.min.js index 839b95c3..71f769a7 100644 --- a/js/libs/o3dv/o3dv.min.js +++ b/js/libs/o3dv/o3dv.min.js @@ -1,11 +1,11 @@ -var OV=(()=>{var Kh=Object.defineProperty;var wv=Object.getOwnPropertyDescriptor;var Cv=Object.getOwnPropertyNames;var Rv=Object.prototype.hasOwnProperty;var Iv=(r,e)=>{for(var t in e)Kh(r,t,{get:e[t],enumerable:!0})},Pv=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Cv(e))!Rv.call(r,i)&&i!==t&&Kh(r,i,{get:()=>e[i],enumerable:!(n=wv(e,i))||n.enumerable});return r};var Nv=r=>Pv(Kh({},"__esModule",{value:!0}),r);var JS={};Iv(JS,{AddCoord2D:()=>Hp,AddCoord3D:()=>Bc,AddDiv:()=>fv,AddDomElement:()=>Cp,ArrayBufferToAsciiString:()=>$p,ArrayBufferToUtf8String:()=>xn,ArrayToCoord3D:()=>Ei,ArrayToQuaternion:()=>bo,ArrayToRGBColor:()=>qp,AsciiStringToArrayBuffer:()=>Qp,Base64DataURIToArrayBuffer:()=>Ls,BezierTweenFunction:()=>rm,BigEps:()=>Gp,BinaryReader:()=>Qn,BinaryWriter:()=>Gi,BoundingBoxCalculator3D:()=>Po,Box3D:()=>Fs,CalculateSurfaceArea:()=>cv,CalculateTriangleNormal:()=>Ds,CalculateVolume:()=>bp,Camera:()=>Sr,CameraIsEqual3D:()=>Fh,CameraValidator:()=>yc,CheckModel:()=>S0,ClearDomElement:()=>dv,ClickDetector:()=>vc,ColorComponentFromFloat:()=>Rn,ColorComponentToFloat:()=>Ps,ColorToMaterialConverter:()=>ri,ConvertColorToThreeColor:()=>wn,ConvertMeshToMeshBuffer:()=>_o,ConvertModelToThreeObject:()=>Uh,ConvertThreeColorToColor:()=>Jl,ConvertThreeGeometryToMesh:()=>Zi,Coord2D:()=>At,Coord3D:()=>Xe,Coord4D:()=>Vi,CoordDistance2D:()=>Is,CoordDistance3D:()=>Yn,CoordIsEqual2D:()=>Fi,CoordIsEqual3D:()=>pi,CopyObjectAttributes:()=>co,CreateDiv:()=>Mv,CreateDomElement:()=>Vh,CreateHighlightMaterial:()=>Od,CreateHighlightMaterials:()=>ph,CreateModelUrlParameters:()=>hv,CreateObjectUrl:()=>Os,CreateObjectUrlWithMimeType:()=>Vc,CreateOcctWorker:()=>yo,CreateUrlBuilder:()=>wp,CreateUrlParser:()=>uv,CrossVector3D:()=>Bi,DegRad:()=>ar,Direction:()=>pt,DisposeThreeObjects:()=>mh,DotVector2D:()=>dl,DotVector3D:()=>ml,EdgeSettings:()=>ro,EmbeddedViewer:()=>al,EnvironmentSettings:()=>so,Eps:()=>Bp,EscapeHtmlChars:()=>wc,EventNotifier:()=>Cc,ExportedFile:()=>$t,Exporter:()=>qc,Exporter3dm:()=>Mo,ExporterBase:()=>Pn,ExporterBim:()=>Eo,ExporterGltf:()=>So,ExporterModel:()=>Ao,ExporterObj:()=>wo,ExporterOff:()=>Co,ExporterPly:()=>Ro,ExporterSettings:()=>_l,ExporterStl:()=>Io,FLoc:()=>uo,FaceMaterial:()=>go,FileFormat:()=>an,FileSource:()=>ki,FinalizeModel:()=>vh,FlipMeshTrianglesOrientation:()=>jc,FormatString:()=>Ac,GenerateCone:()=>Tp,GenerateCuboid:()=>sv,GenerateCylinder:()=>ov,GeneratePlatonicSolid:()=>lv,GenerateSphere:()=>av,Generator:()=>Ss,GeneratorHelper:()=>$a,GeneratorParams:()=>cc,GetBoundingBox:()=>Qh,GetDefaultCamera:()=>zh,GetDefaultMaterials:()=>om,GetDomElementClientCoordinates:()=>Kr,GetDomElementExternalHeight:()=>Bh,GetDomElementExternalWidth:()=>kh,GetDomElementInnerDimensions:()=>Gh,GetDomElementOuterHeight:()=>xv,GetDomElementOuterWidth:()=>yv,GetFileExtension:()=>ur,GetFileExtensionFromMimeType:()=>es,GetFileName:()=>En,GetIntegerFromStyle:()=>Fn,GetLineSegmentsProjectedDistance:()=>gh,GetShadingType:()=>dh,GetShadingTypeOfObject:()=>Pp,GetTetrahedronSignedVolume:()=>Ep,GetTopology:()=>ef,GetTriangleArea:()=>Mp,HasHighpDriverIssue:()=>fh,HexStringToRGBAColor:()=>jp,HexStringToRGBColor:()=>Xp,ImportError:()=>bs,ImportErrorCode:()=>br,ImportResult:()=>oc,ImportSettings:()=>Za,Importer:()=>Ja,Importer3dm:()=>Ia,Importer3ds:()=>Pa,ImporterBase:()=>Ht,ImporterBim:()=>Ba,ImporterFcstd:()=>Ka,ImporterFile:()=>Us,ImporterFileAccessor:()=>ac,ImporterFileList:()=>ks,ImporterGltf:()=>Na,ImporterIfc:()=>La,ImporterObj:()=>Oa,ImporterOcct:()=>Ua,ImporterOff:()=>Da,ImporterPly:()=>Fa,ImporterStl:()=>ka,ImporterThree3mf:()=>ja,ImporterThreeAmf:()=>qa,ImporterThreeBase:()=>tr,ImporterThreeDae:()=>Wa,ImporterThreeFbx:()=>Ha,ImporterThreeSvg:()=>Dh,ImporterThreeWrl:()=>Xa,Init3DViewerElements:()=>bv,Init3DViewerFromFileList:()=>Ev,Init3DViewerFromUrlList:()=>Np,InputFile:()=>Do,InputFilesFromFileObjects:()=>Jc,InputFilesFromUrls:()=>Zc,InsertDomElementAfter:()=>mv,InsertDomElementBefore:()=>pv,IntegerToHexString:()=>Mn,IntersectionMode:()=>Sp,IsDefined:()=>lo,IsDomElementVisible:()=>vv,IsEmptyMesh:()=>ts,IsEqual:()=>It,IsEqualEps:()=>zp,IsGreater:()=>Lc,IsGreaterOrEqual:()=>mo,IsLower:()=>fo,IsLowerOrEqual:()=>po,IsModelEmpty:()=>Uo,IsNegative:()=>Cr,IsObjectEmpty:()=>Sc,IsPositive:()=>Ti,IsPowerOfTwo:()=>Zh,IsTwoManifold:()=>tf,IsUrl:()=>Jp,IsZero:()=>wr,Line:()=>jr,LinearToSRGB:()=>Ns,LinearTweenFunction:()=>sm,LoadExternalLibrary:()=>cr,LoadExternalLibraryFromUrl:()=>vo,Loc:()=>Ze,MaterialBase:()=>pl,MaterialGeometryType:()=>Cs,MaterialSource:()=>yn,MaterialType:()=>Un,Matrix:()=>fn,MatrixIsEqual:()=>Xc,Mesh:()=>Kt,MeshBuffer:()=>vl,MeshInstance:()=>Nr,MeshInstanceId:()=>bi,MeshPrimitiveBuffer:()=>gl,Model:()=>dr,ModelObject3D:()=>fr,ModelToThreeConversionOutput:()=>tl,ModelToThreeConversionParams:()=>el,MouseInteraction:()=>mc,NameFromLine:()=>Pr,Navigation:()=>rl,NavigationMode:()=>As,NavigationType:()=>ti,NextPowerOfTwo:()=>Zp,Node:()=>Nn,Object3D:()=>yl,Octree:()=>Lo,OctreeNode:()=>Tl,ParabolicTweenFunction:()=>Kc,ParameterConverter:()=>Jt,ParameterListBuilder:()=>uc,ParameterListParser:()=>hc,ParametersFromLine:()=>Ui,PhongMaterial:()=>vn,PhysicalMaterial:()=>Qr,ProjectPointToSegment2D:()=>Jh,ProjectionMode:()=>Xn,Property:()=>nn,PropertyGroup:()=>Vn,PropertyToString:()=>Hc,PropertyType:()=>Vt,Quaternion:()=>Kn,QuaternionFromAxisAngle:()=>Wc,QuaternionFromXYZ:()=>tm,QuaternionIsEqual:()=>em,RGBAColor:()=>Rr,RGBAColorToHexString:()=>Wp,RGBColor:()=>Mt,RGBColorFromFloatComponents:()=>di,RGBColorIsEqual:()=>Ir,RGBColorToHexString:()=>Oc,RadDeg:()=>Vp,ReadFile:()=>Uc,ReadLines:()=>Mi,ReplaceDefaultMaterialsColor:()=>am,RequestUrl:()=>Fc,RevokeObjectUrl:()=>zc,RunTaskAsync:()=>fl,RunTasks:()=>Ic,RunTasksBatch:()=>Pc,SRGBToLinear:()=>lr,Segment2D:()=>No,SegmentPointDistance2D:()=>Yc,SetDomElementHeight:()=>Ip,SetDomElementOuterHeight:()=>Tv,SetDomElementOuterWidth:()=>_v,SetDomElementWidth:()=>Rp,SetLanguageCode:()=>kp,SetLocalizedStrings:()=>Up,SetThreeMeshPolygonOffset:()=>Ap,ShadingModel:()=>sl,ShadingType:()=>ci,ShowDomElement:()=>gv,SubCoord2D:()=>Jr,SubCoord3D:()=>In,TaskRunner:()=>ho,TextWriter:()=>oi,TextureIsEqual:()=>Yp,TextureMap:()=>ii,TextureMapIsEqual:()=>$r,ThreeColorConverter:()=>Ca,ThreeConversionStateHandler:()=>fc,ThreeLinearToSRGBColorConverter:()=>to,ThreeMaterialHandler:()=>pc,ThreeMeshMaterialHandler:()=>nl,ThreeModelLoader:()=>il,ThreeNodeTree:()=>dc,ThreeSRGBToLinearColorConverter:()=>Ra,Topology:()=>Fo,TopologyEdge:()=>El,TopologyTriangle:()=>Sl,TopologyTriangleEdge:()=>bl,TopologyVertex:()=>Ml,TouchInteraction:()=>gc,TransformFileHostUrls:()=>kc,TransformMesh:()=>hr,Transformation:()=>ln,TransformationIsEqual:()=>nm,TraverseThreeObject:()=>Hh,Triangle:()=>Xt,TweenCoord3D:()=>Oo,Unit:()=>ns,UpVector:()=>xc,UpdateMaterialTransparency:()=>si,Utf8StringToArrayBuffer:()=>To,ValueOrDefault:()=>Fp,VectorAngle3D:()=>Gc,VectorLength3D:()=>xo,Viewer:()=>ol,ViewerMainModel:()=>Qa,ViewerModel:()=>ws,WaitWhile:()=>Nc});function lo(r){return r!=null}function Fp(r,e){return r??e}function co(r,e){if(lo(r))for(let t of Object.keys(r))lo(r[t])&&(e[t]=r[t])}function Sc(r){return Object.keys(r).length===0}function Ac(r,...e){return r.replace(/{([0-9]+)}/g,(t,n)=>e[n]===void 0?t:e[n])}function wc(r){return r.replace(//g,">")}var Cc=class{constructor(){this.eventListeners=new Map}AddEventListener(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,[]),this.eventListeners.get(e).push(t)}HasEventListener(e){return this.eventListeners.has(e)}GetEventNotifier(e){return()=>{this.NotifyEventListeners(e)}}NotifyEventListeners(e,...t){if(!this.eventListeners.has(e))return;let n=this.eventListeners.get(e);for(let i of n)i(...t)}};var hl=null,Rc=null;function Up(r){hl=r}function kp(r){Rc=r}function Ze(r){return hl===null||Rc===null||!hl[r]||!hl[r][Rc]?r:hl[r][Rc]}function uo(r,...e){return Ac(Ze(r),...e)}var ho=class{constructor(){this.count=null,this.current=null,this.callbacks=null}Run(e,t){this.count=e,this.current=0,this.callbacks=t,e===0?this.TaskReady():this.RunOnce()}RunBatch(e,t,n){let i=0;e>0&&(i=parseInt((e-1)/t,10)+1),this.Run(i,{runTask:(s,o)=>{let a=s*t,l=Math.min((s+1)*t,e)-1;n.runTask(a,l,o)},onReady:n.onReady})}RunOnce(){setTimeout(()=>{this.callbacks.runTask(this.current,this.TaskReady.bind(this))},0)}TaskReady(){this.current+=1,this.current{r()},10)}function Ic(r,e){new ho().Run(r,e)}function Pc(r,e,t){new ho().RunBatch(r,e,t)}function Nc(r){function e(t){t()&&setTimeout(()=>{e(t)},10)}e(r)}var Bp=1e-8,Gp=1e-4,Vp=57.29577951308232,ar=.017453292519943;function wr(r){return Math.abs(r)<1e-8}function fo(r,e){return e-r>1e-8}function Lc(r,e){return r-e>1e-8}function po(r,e){return e-r>-1e-8}function mo(r,e){return r-e>-1e-8}function It(r,e){return Math.abs(e-r)<1e-8}function zp(r,e,t){return Math.abs(e-r)1e-8}function Cr(r){return r<-1e-8}var pt={X:1,Y:2,Z:3};var At=class r{constructor(e,t){this.x=e,this.y=t}Clone(){return new r(this.x,this.y)}};function Fi(r,e){return It(r.x,e.x)&&It(r.y,e.y)}function Hp(r,e){return new At(r.x+e.x,r.y+e.y)}function Jr(r,e){return new At(r.x-e.x,r.y-e.y)}function Is(r,e){return Math.sqrt((r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y))}function dl(r,e){return r.x*e.x+r.y*e.y}var Mt=class r{constructor(e,t,n){this.r=e,this.g=t,this.b=n}Set(e,t,n){this.r=e,this.g=t,this.b=n}Clone(){return new r(this.r,this.g,this.b)}},Rr=class r{constructor(e,t,n,i){this.r=e,this.g=t,this.b=n,this.a=i}Set(e,t,n,i){this.r=e,this.g=t,this.b=n,this.a=i}Clone(){return new r(this.r,this.g,this.b,this.a)}};function Rn(r){return parseInt(Math.round(r*255),10)}function Ps(r){return r/255}function di(r,e,t){return new Mt(Rn(r),Rn(e),Rn(t))}function lr(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Ns(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}function Mn(r){let e=parseInt(r,10).toString(16);for(;e.length<2;)e="0"+e;return e}function Oc(r){let e=Mn(r.r),t=Mn(r.g),n=Mn(r.b);return e+t+n}function Wp(r){let e=Mn(r.r),t=Mn(r.g),n=Mn(r.b),i=Mn(r.a);return e+t+n+i}function Xp(r){if(r.length!==6)return null;let e=parseInt(r.substring(0,2),16),t=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16);return new Mt(e,t,n)}function jp(r){if(r.length!==6&&r.length!==8)return null;let e=parseInt(r.substring(0,2),16),t=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16),i=255;return r.length===8&&(i=parseInt(r.substring(6,8),16)),new Rr(e,t,n,i)}function qp(r){return new Mt(r[0],r[1],r[2])}function Ir(r,e){return r.r===e.r&&r.g===e.g&&r.b===e.b}var ii=class{constructor(){this.name=null,this.mimeType=null,this.buffer=null,this.offset=new At(0,0),this.scale=new At(1,1),this.rotation=0}IsValid(){return this.name!==null&&this.buffer!==null}HasTransformation(){return!Fi(this.offset,new At(0,0))||!Fi(this.scale,new At(1,1))||!It(this.rotation,0)}IsEqual(e){return!(this.name!==e.name||this.mimeType!==e.mimeType||!Fi(this.offset,e.offset)||!Fi(this.scale,e.scale)||!It(this.rotation,e.rotation))}};function $r(r,e){return r===null&&e===null?!0:r===null||e===null?!1:r.IsEqual(e)}var Un={Phong:1,Physical:2},yn={Model:1,DefaultFace:2,DefaultLine:3},pl=class{constructor(e){this.type=e,this.source=yn.Model,this.name="",this.color=new Mt(0,0,0),this.vertexColors=!1}IsEqual(e){return!(this.type!==e.type||this.source!==e.source||this.name!==e.name||!Ir(this.color,e.color)||this.vertexColors!==e.vertexColors)}},go=class extends pl{constructor(e){super(e),this.emissive=new Mt(0,0,0),this.opacity=1,this.transparent=!1,this.diffuseMap=null,this.bumpMap=null,this.normalMap=null,this.emissiveMap=null,this.alphaTest=0,this.multiplyDiffuseMap=!1}IsEqual(e){return!(!super.IsEqual(e)||!Ir(this.emissive,e.emissive)||!It(this.opacity,e.opacity)||this.transparent!==e.transparent||!$r(this.diffuseMap,e.diffuseMap)||!$r(this.bumpMap,e.bumpMap)||!$r(this.normalMap,e.normalMap)||!$r(this.emissiveMap,e.emissiveMap)||!It(this.alphaTest,e.alphaTest)||this.multiplyDiffuseMap!==e.multiplyDiffuseMap)}},vn=class extends go{constructor(){super(Un.Phong),this.ambient=new Mt(0,0,0),this.specular=new Mt(0,0,0),this.shininess=0,this.specularMap=null}IsEqual(e){return!(!super.IsEqual(e)||!Ir(this.ambient,e.ambient)||!Ir(this.specular,e.specular)||!It(this.shininess,e.shininess)||!$r(this.specularMap,e.specularMap))}},Qr=class extends go{constructor(){super(Un.Physical),this.metalness=0,this.roughness=1,this.metalnessMap=null}IsEqual(e){return!(!super.IsEqual(e)||!It(this.metalness,e.metalness)||!It(this.roughness,e.roughness)||!$r(this.metalnessMap,e.metalnessMap))}};function Yp(r,e){return!(r.name!==e.name||r.mimeType!==e.mimeType||!Fi(r.offset,e.offset)||!Fi(r.scale,e.scale)||!It(r.rotation,e.rotation))}var Kp=new Set;function vo(r){return new Promise((e,t)=>{if(Kp.has(r)){e();return}let n=document.createElement("script");n.type="text/javascript",n.src=r,n.onload=()=>{Kp.add(r),e()},n.onerror=()=>{t()},document.head.appendChild(n)})}function Pr(r,e,t){let n=r.substring(e),i=n.indexOf(t);return i!==-1&&(n=n.substring(0,i)),n.trim()}function Ui(r,e){if(e!==null){let t=r.indexOf(e);t!==-1&&(r=r.substring(0,t).trim())}return r.split(/\s+/u)}function Mi(r,e){function t(s,o){let a=s.trim();a.length>0&&o(a)}let n=0,i=r.indexOf(` +var OV=(()=>{var dd=Object.defineProperty;var kx=Object.getOwnPropertyDescriptor;var Bx=Object.getOwnPropertyNames;var Gx=Object.prototype.hasOwnProperty;var Vx=(r,e)=>{for(var t in e)dd(r,t,{get:e[t],enumerable:!0})},zx=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Bx(e))!Gx.call(r,i)&&i!==t&&dd(r,i,{get:()=>e[i],enumerable:!(n=kx(e,i))||n.enumerable});return r};var Hx=r=>zx(dd({},"__esModule",{value:!0}),r);var nA={};Vx(nA,{AddCoord2D:()=>ig,AddCoord3D:()=>Eu,AddDiv:()=>bx,AddDomElement:()=>Wm,ArrayBufferToAsciiString:()=>fg,ArrayBufferToUtf8String:()=>Sn,ArrayToCoord3D:()=>Ui,ArrayToQuaternion:()=>Zo,ArrayToRGBColor:()=>ag,AsciiStringToArrayBuffer:()=>dg,Base64DataURIToArrayBuffer:()=>qs,BezierTweenFunction:()=>xg,BigEps:()=>eg,BinaryReader:()=>oi,BinaryWriter:()=>Ji,BoundingBoxCalculator3D:()=>ia,Box3D:()=>Ks,CalculateSurfaceArea:()=>Tx,CalculateTriangleNormal:()=>Ys,CalculateVolume:()=>Gm,Camera:()=>Or,CameraIsEqual3D:()=>Qf,CameraValidator:()=>ru,CheckModel:()=>ky,ClearDomElement:()=>Sx,ClickDetector:()=>iu,ColorComponentFromFloat:()=>Fn,ColorComponentToFloat:()=>Ws,ColorToMaterialConverter:()=>di,ConvertColorToThreeColor:()=>Dn,ConvertMeshToMeshBuffer:()=>qo,ConvertModelToThreeObject:()=>ed,ConvertThreeColorToColor:()=>Fc,ConvertThreeGeometryToMesh:()=>ur,Coord2D:()=>Nt,Coord3D:()=>Ye,Coord4D:()=>$i,CoordDistance2D:()=>Hs,CoordDistance3D:()=>ni,CoordIsEqual2D:()=>ji,CoordIsEqual3D:()=>bi,CopyObjectAttributes:()=>Fo,CreateDiv:()=>Ox,CreateDomElement:()=>rd,CreateHighlightMaterial:()=>Zp,CreateHighlightMaterials:()=>Pf,CreateModelUrlParameters:()=>Ex,CreateObjectUrl:()=>js,CreateObjectUrlWithMimeType:()=>Su,CreateOcctWorker:()=>Wo,CreateUrlBuilder:()=>Hm,CreateUrlParser:()=>Mx,CrossVector3D:()=>Zi,DegRad:()=>xr,Direction:()=>_t,DisposeThreeObjects:()=>Nf,DotVector2D:()=>Rl,DotVector3D:()=>Nl,EdgeSettings:()=>Io,EmbeddedViewer:()=>Al,EnvironmentSettings:()=>Ro,Eps:()=>Qm,EscapeHtmlChars:()=>hu,EventNotifier:()=>fu,ExportedFile:()=>sn,Exporter:()=>Pu,Exporter3dm:()=>Yo,ExporterBase:()=>kn,ExporterBim:()=>Ko,ExporterGltf:()=>Jo,ExporterModel:()=>$o,ExporterObj:()=>Qo,ExporterOff:()=>ea,ExporterPly:()=>ta,ExporterSettings:()=>Ul,ExporterStl:()=>na,FLoc:()=>Uo,FaceMaterial:()=>zo,FileFormat:()=>dn,FileSource:()=>Ki,FinalizeModel:()=>Of,FlipMeshTrianglesOrientation:()=>Ru,FormatString:()=>uu,GenerateCone:()=>Um,GenerateCuboid:()=>yx,GenerateCylinder:()=>xx,GeneratePlatonicSolid:()=>_x,GenerateSphere:()=>vx,Generator:()=>ks,GeneratorHelper:()=>yl,GeneratorParams:()=>Kc,GetBoundingBox:()=>yd,GetDefaultCamera:()=>sd,GetDefaultMaterials:()=>_g,GetDomElementClientCoordinates:()=>ps,GetDomElementExternalHeight:()=>nd,GetDomElementExternalWidth:()=>td,GetDomElementInnerDimensions:()=>id,GetDomElementOuterHeight:()=>Px,GetDomElementOuterWidth:()=>Rx,GetFileExtension:()=>Tr,GetFileExtensionFromMimeType:()=>xs,GetFileName:()=>Rn,GetIntegerFromStyle:()=>zn,GetLineSegmentsProjectedDistance:()=>Lf,GetShadingType:()=>Rf,GetShadingTypeOfObject:()=>jm,GetTetrahedronSignedVolume:()=>Bm,GetTopology:()=>xd,GetTriangleArea:()=>km,HasHighpDriverIssue:()=>If,HexStringToRGBAColor:()=>og,HexStringToRGBColor:()=>sg,ImportError:()=>Us,ImportErrorCode:()=>Lr,ImportResult:()=>qc,ImportSettings:()=>ml,Importer:()=>gl,Importer3dm:()=>Ka,Importer3ds:()=>Za,ImporterBase:()=>Jt,ImporterBim:()=>rl,ImporterFcstd:()=>pl,ImporterFile:()=>Zs,ImporterFileAccessor:()=>jc,ImporterFileList:()=>Js,ImporterGltf:()=>Ja,ImporterIfc:()=>$a,ImporterObj:()=>Qa,ImporterOcct:()=>nl,ImporterOff:()=>el,ImporterPly:()=>tl,ImporterStl:()=>il,ImporterThree3mf:()=>hl,ImporterThreeAmf:()=>fl,ImporterThreeBase:()=>mr,ImporterThreeDae:()=>cl,ImporterThreeFbx:()=>ll,ImporterThreeSvg:()=>$f,ImporterThreeWrl:()=>ul,Init3DViewerElements:()=>Fx,Init3DViewerFromFileList:()=>Dx,Init3DViewerFromUrlList:()=>Ym,InputFile:()=>aa,InputFilesFromFileObjects:()=>Du,InputFilesFromUrls:()=>Ou,InsertDomElementAfter:()=>wx,InsertDomElementBefore:()=>Ax,IntegerToHexString:()=>In,IntersectionMode:()=>Vm,IsDefined:()=>Do,IsDomElementVisible:()=>Ix,IsEmptyMesh:()=>vs,IsEqual:()=>Ut,IsEqualEps:()=>ng,IsGreater:()=>yu,IsGreaterOrEqual:()=>Vo,IsLower:()=>Bo,IsLowerOrEqual:()=>Go,IsModelEmpty:()=>ca,IsNegative:()=>Br,IsObjectEmpty:()=>cu,IsPositive:()=>Di,IsPowerOfTwo:()=>pd,IsTwoManifold:()=>vd,IsUrl:()=>hg,IsZero:()=>kr,Line:()=>hs,LinearToSRGB:()=>Xs,LinearTweenFunction:()=>vg,LoadExternalLibrary:()=>_r,LoadExternalLibraryFromUrl:()=>Ho,Loc:()=>nt,MaterialBase:()=>Pl,MaterialGeometryType:()=>Vs,MaterialSource:()=>bn,MaterialType:()=>Wn,Matrix:()=>xn,MatrixIsEqual:()=>Iu,Mesh:()=>tn,MeshBuffer:()=>Ol,MeshInstance:()=>Hr,MeshInstanceId:()=>ki,MeshPrimitiveBuffer:()=>Ll,Model:()=>br,ModelObject3D:()=>Er,ModelToThreeConversionOutput:()=>_l,ModelToThreeConversionParams:()=>vl,MouseInteraction:()=>tu,NameFromLine:()=>zr,Navigation:()=>El,NavigationMode:()=>Bs,NavigationType:()=>li,NextPowerOfTwo:()=>ug,Node:()=>Bn,Object3D:()=>Dl,Octree:()=>sa,OctreeNode:()=>kl,ParabolicTweenFunction:()=>Lu,ParameterConverter:()=>rn,ParameterListBuilder:()=>Zc,ParameterListParser:()=>Jc,ParametersFromLine:()=>Yi,PhongMaterial:()=>En,PhysicalMaterial:()=>ys,ProjectPointToSegment2D:()=>md,ProjectionMode:()=>ei,Property:()=>cn,PropertyGroup:()=>Kn,PropertyToString:()=>wu,PropertyType:()=>Yt,Quaternion:()=>ii,QuaternionFromAxisAngle:()=>Cu,QuaternionFromXYZ:()=>mg,QuaternionIsEqual:()=>pg,RGBAColor:()=>Gr,RGBAColorToHexString:()=>rg,RGBColor:()=>St,RGBColorFromFloatComponents:()=>Ei,RGBColorIsEqual:()=>Vr,RGBColorToHexString:()=>xu,RadDeg:()=>tg,ReadFile:()=>Tu,ReadLines:()=>Fi,ReplaceDefaultMaterialsColor:()=>Tg,RequestUrl:()=>_u,RevokeObjectUrl:()=>Au,RunTaskAsync:()=>Il,RunTasks:()=>pu,RunTasksBatch:()=>mu,SRGBToLinear:()=>vr,Segment2D:()=>ra,SegmentPointDistance2D:()=>Nu,SetDomElementHeight:()=>qm,SetDomElementOuterHeight:()=>Lx,SetDomElementOuterWidth:()=>Nx,SetDomElementWidth:()=>Xm,SetLanguageCode:()=>$m,SetLocalizedStrings:()=>Jm,SetThreeMeshPolygonOffset:()=>zm,ShadingModel:()=>bl,ShadingType:()=>vi,ShowDomElement:()=>Cx,SubCoord2D:()=>ms,SubCoord3D:()=>Un,TaskRunner:()=>ko,TextWriter:()=>mi,TextureIsEqual:()=>lg,TextureMap:()=>fi,TextureMapIsEqual:()=>gs,ThreeColorConverter:()=>ja,ThreeConversionStateHandler:()=>$c,ThreeLinearToSRGBColorConverter:()=>Cf,ThreeMaterialHandler:()=>eu,ThreeMeshMaterialHandler:()=>Tl,ThreeModelLoader:()=>Ml,ThreeNodeTree:()=>Qc,ThreeSRGBToLinearColorConverter:()=>Ya,Topology:()=>la,TopologyEdge:()=>Gl,TopologyTriangle:()=>zl,TopologyTriangleEdge:()=>Vl,TopologyVertex:()=>Bl,TouchInteraction:()=>nu,TransformFileHostUrls:()=>Mu,TransformMesh:()=>Mr,Transformation:()=>pn,TransformationIsEqual:()=>gg,TraverseThreeObject:()=>od,Triangle:()=>Qt,TweenCoord3D:()=>oa,Unit:()=>_s,UpVector:()=>su,UpdateMaterialTransparency:()=>pi,Utf8StringToArrayBuffer:()=>jo,ValueOrDefault:()=>Zm,VectorAngle3D:()=>bu,VectorLength3D:()=>Xo,Viewer:()=>Sl,ViewerMainModel:()=>xl,ViewerModel:()=>Gs,WaitWhile:()=>gu});function Do(r){return r!=null}function Zm(r,e){return r??e}function Fo(r,e){if(Do(r))for(let t of Object.keys(r))Do(r[t])&&(e[t]=r[t])}function cu(r){return Object.keys(r).length===0}function uu(r,...e){return r.replace(/{([0-9]+)}/g,(t,n)=>e[n]===void 0?t:e[n])}function hu(r){return r.replace(//g,">")}var fu=class{constructor(){this.eventListeners=new Map}AddEventListener(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,[]),this.eventListeners.get(e).push(t)}HasEventListener(e){return this.eventListeners.has(e)}GetEventNotifier(e){return()=>{this.NotifyEventListeners(e)}}NotifyEventListeners(e,...t){if(!this.eventListeners.has(e))return;let n=this.eventListeners.get(e);for(let i of n)i(...t)}};var Cl=null,du=null;function Jm(r){Cl=r}function $m(r){du=r}function nt(r){return Cl===null||du===null||!Cl[r]||!Cl[r][du]?r:Cl[r][du]}function Uo(r,...e){return uu(nt(r),...e)}var ko=class{constructor(){this.count=null,this.current=null,this.callbacks=null}Run(e,t){this.count=e,this.current=0,this.callbacks=t,e===0?this.TaskReady():this.RunOnce()}RunBatch(e,t,n){let i=0;e>0&&(i=parseInt((e-1)/t,10)+1),this.Run(i,{runTask:(s,o)=>{let a=s*t,l=Math.min((s+1)*t,e)-1;n.runTask(a,l,o)},onReady:n.onReady})}RunOnce(){setTimeout(()=>{this.callbacks.runTask(this.current,this.TaskReady.bind(this))},0)}TaskReady(){this.current+=1,this.current{r()},10)}function pu(r,e){new ko().Run(r,e)}function mu(r,e,t){new ko().RunBatch(r,e,t)}function gu(r){function e(t){t()&&setTimeout(()=>{e(t)},10)}e(r)}var Qm=1e-8,eg=1e-4,tg=57.29577951308232,xr=.017453292519943;function kr(r){return Math.abs(r)<1e-8}function Bo(r,e){return e-r>1e-8}function yu(r,e){return r-e>1e-8}function Go(r,e){return e-r>-1e-8}function Vo(r,e){return r-e>-1e-8}function Ut(r,e){return Math.abs(e-r)<1e-8}function ng(r,e,t){return Math.abs(e-r)1e-8}function Br(r){return r<-1e-8}var _t={X:1,Y:2,Z:3};var Nt=class r{constructor(e,t){this.x=e,this.y=t}Clone(){return new r(this.x,this.y)}};function ji(r,e){return Ut(r.x,e.x)&&Ut(r.y,e.y)}function ig(r,e){return new Nt(r.x+e.x,r.y+e.y)}function ms(r,e){return new Nt(r.x-e.x,r.y-e.y)}function Hs(r,e){return Math.sqrt((r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y))}function Rl(r,e){return r.x*e.x+r.y*e.y}var St=class r{constructor(e,t,n){this.r=e,this.g=t,this.b=n}Set(e,t,n){this.r=e,this.g=t,this.b=n}Clone(){return new r(this.r,this.g,this.b)}},Gr=class r{constructor(e,t,n,i){this.r=e,this.g=t,this.b=n,this.a=i}Set(e,t,n,i){this.r=e,this.g=t,this.b=n,this.a=i}Clone(){return new r(this.r,this.g,this.b,this.a)}};function Fn(r){return parseInt(Math.round(r*255),10)}function Ws(r){return r/255}function Ei(r,e,t){return new St(Fn(r),Fn(e),Fn(t))}function vr(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Xs(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}function In(r){let e=parseInt(r,10).toString(16);for(;e.length<2;)e="0"+e;return e}function xu(r){let e=In(r.r),t=In(r.g),n=In(r.b);return e+t+n}function rg(r){let e=In(r.r),t=In(r.g),n=In(r.b),i=In(r.a);return e+t+n+i}function sg(r){if(r.length!==6)return null;let e=parseInt(r.substring(0,2),16),t=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16);return new St(e,t,n)}function og(r){if(r.length!==6&&r.length!==8)return null;let e=parseInt(r.substring(0,2),16),t=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16),i=255;return r.length===8&&(i=parseInt(r.substring(6,8),16)),new Gr(e,t,n,i)}function ag(r){return new St(r[0],r[1],r[2])}function Vr(r,e){return r.r===e.r&&r.g===e.g&&r.b===e.b}var fi=class{constructor(){this.name=null,this.mimeType=null,this.buffer=null,this.offset=new Nt(0,0),this.scale=new Nt(1,1),this.rotation=0}IsValid(){return this.name!==null&&this.buffer!==null}HasTransformation(){return!ji(this.offset,new Nt(0,0))||!ji(this.scale,new Nt(1,1))||!Ut(this.rotation,0)}IsEqual(e){return!(this.name!==e.name||this.mimeType!==e.mimeType||!ji(this.offset,e.offset)||!ji(this.scale,e.scale)||!Ut(this.rotation,e.rotation))}};function gs(r,e){return r===null&&e===null?!0:r===null||e===null?!1:r.IsEqual(e)}var Wn={Phong:1,Physical:2},bn={Model:1,DefaultFace:2,DefaultLine:3},Pl=class{constructor(e){this.type=e,this.source=bn.Model,this.name="",this.color=new St(0,0,0),this.vertexColors=!1}IsEqual(e){return!(this.type!==e.type||this.source!==e.source||this.name!==e.name||!Vr(this.color,e.color)||this.vertexColors!==e.vertexColors)}},zo=class extends Pl{constructor(e){super(e),this.emissive=new St(0,0,0),this.opacity=1,this.transparent=!1,this.diffuseMap=null,this.bumpMap=null,this.normalMap=null,this.emissiveMap=null,this.alphaTest=0,this.multiplyDiffuseMap=!1}IsEqual(e){return!(!super.IsEqual(e)||!Vr(this.emissive,e.emissive)||!Ut(this.opacity,e.opacity)||this.transparent!==e.transparent||!gs(this.diffuseMap,e.diffuseMap)||!gs(this.bumpMap,e.bumpMap)||!gs(this.normalMap,e.normalMap)||!gs(this.emissiveMap,e.emissiveMap)||!Ut(this.alphaTest,e.alphaTest)||this.multiplyDiffuseMap!==e.multiplyDiffuseMap)}},En=class extends zo{constructor(){super(Wn.Phong),this.ambient=new St(0,0,0),this.specular=new St(0,0,0),this.shininess=0,this.specularMap=null}IsEqual(e){return!(!super.IsEqual(e)||!Vr(this.ambient,e.ambient)||!Vr(this.specular,e.specular)||!Ut(this.shininess,e.shininess)||!gs(this.specularMap,e.specularMap))}},ys=class extends zo{constructor(){super(Wn.Physical),this.metalness=0,this.roughness=1,this.metalnessMap=null}IsEqual(e){return!(!super.IsEqual(e)||!Ut(this.metalness,e.metalness)||!Ut(this.roughness,e.roughness)||!gs(this.metalnessMap,e.metalnessMap))}};function lg(r,e){return!(r.name!==e.name||r.mimeType!==e.mimeType||!ji(r.offset,e.offset)||!ji(r.scale,e.scale)||!Ut(r.rotation,e.rotation))}var cg=new Set;function Ho(r){return new Promise((e,t)=>{if(cg.has(r)){e();return}let n=document.createElement("script");n.type="text/javascript",n.src=r,n.onload=()=>{cg.add(r),e()},n.onerror=()=>{t()},document.head.appendChild(n)})}function zr(r,e,t){let n=r.substring(e),i=n.indexOf(t);return i!==-1&&(n=n.substring(0,i)),n.trim()}function Yi(r,e){if(e!==null){let t=r.indexOf(e);t!==-1&&(r=r.substring(0,t).trim())}return r.split(/\s+/u)}function Fi(r,e){function t(s,o){let a=s.trim();a.length>0&&o(a)}let n=0,i=r.indexOf(` `,n);for(;i!==-1;)t(r.substring(n,i),e),n=i+1,i=r.indexOf(` -`,n);t(r.substring(n),e)}function Zh(r){return(r&r-1)===0}function Zp(r){if(Zh(r))return r;let e=Math.pow(2,Math.ceil(Math.log(r)/Math.log(2)));return parseInt(e,10)}function si(r){r.transparent=!1,fo(r.opacity,1)&&(r.transparent=!0)}var ri=class{constructor(e){this.model=e,this.colorToMaterialIndex=new Map}GetMaterialIndex(e,t,n,i){let s=Mn(e)+Mn(t)+Mn(n),o=i!=null;if(o&&(s+=Mn(i)),this.colorToMaterialIndex.has(s))return this.colorToMaterialIndex.get(s);{let a=new vn;a.name=s.toUpperCase(),a.color=new Mt(e,t,n),o&&i<255&&(a.opacity=i/255,si(a));let l=this.model.AddMaterial(a);return this.colorToMaterialIndex.set(s,l),l}}},Dc=null;function yo(r){return new Promise((e,t)=>{if(Dc!==null){e(new Worker(Dc));return}let n="https://cdn.jsdelivr.net/npm/occt-import-js@0.0.22/dist/";fetch(n+"occt-import-js-worker.js").then(i=>i.ok?i.text():t()).then(i=>{i=i.replace("occt-import-js.js",n+"occt-import-js.js"),i=i.replace("return path","return '"+n+"occt-import-js.wasm'");let s=new Blob([i],{type:"text/javascript"});return Dc=URL.createObjectURL(s),e(new Worker(Dc))}).catch(t)})}function cr(r){return r==="rhino3dm"?vo("https://cdn.jsdelivr.net/npm/rhino3dm@8.4.0/rhino3dm.min.js"):r==="webifc"?vo("https://cdn.jsdelivr.net/npm/web-ifc@0.0.55/web-ifc-api-iife.js"):r==="draco3d"?vo("https://cdn.jsdelivr.net/npm/draco3d@1.5.7/draco_decoder_nodejs.min.js"):null}var ki={Url:1,File:2,Decompressed:3},an={Text:1,Binary:2};function En(r){let e=r,t=e.indexOf("?");t!==-1&&(e=e.substring(0,t));let n=e.lastIndexOf("/");return n===-1&&(n=e.lastIndexOf("\\")),n!==-1&&(e=e.substring(n+1)),decodeURI(e)}function ur(r){let e=En(r),t=e.lastIndexOf(".");return t===-1?"":e.substring(t+1).toLowerCase()}function Fc(r,e){return new Promise((t,n)=>{let i=new XMLHttpRequest;i.open("GET",r,!0),i.onprogress=s=>{e(s.loaded,s.total)},i.onload=()=>{i.status===200?t(i.response):n()},i.onerror=()=>{n()},i.responseType="arraybuffer",i.send(null)})}function Uc(r,e){return new Promise((t,n)=>{let i=new FileReader;i.onprogress=s=>{e(s.loaded,s.total)},i.onloadend=s=>{s.target.readyState===FileReader.DONE&&t(s.target.result)},i.onerror=()=>{n()},i.readAsArrayBuffer(r)})}function kc(r){for(let e=0;e0&&this.MultiplyScalar(1/e),this}Offset(e,t){let n=e.Clone().Normalize();return this.x+=n.x*t,this.y+=n.y*t,this.z+=n.z*t,this}Rotate(e,t,n){let i=e.Clone().Normalize(),s=i.x,o=i.y,a=i.z,l=this.x-n.x,c=this.y-n.y,u=this.z-n.z,h=Math.sin(t),f=Math.cos(t);return this.x=-s*(-s*l-o*c-a*u)*(1-f)+l*f+(-a*c+o*u)*h,this.y=-o*(-s*l-o*c-a*u)*(1-f)+c*f+(a*l-s*u)*h,this.z=-a*(-s*l-o*c-a*u)*(1-f)+u*f+(-o*l+s*c)*h,this.x+=n.x,this.y+=n.y,this.z+=n.z,this}Clone(){return new r(this.x,this.y,this.z)}};function pi(r,e){return It(r.x,e.x)&&It(r.y,e.y)&&It(r.z,e.z)}function Bc(r,e){return new Xe(r.x+e.x,r.y+e.y,r.z+e.z)}function In(r,e){return new Xe(r.x-e.x,r.y-e.y,r.z-e.z)}function Yn(r,e){return Math.sqrt((r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y)+(r.z-e.z)*(r.z-e.z))}function ml(r,e){return r.x*e.x+r.y*e.y+r.z*e.z}function Gc(r,e){let t=r.Clone().Normalize(),n=e.Clone().Normalize();if(pi(t,n))return 0;let i=ml(t,n);return Math.acos(i)}function Bi(r,e){let t=new Xe(0,0,0);return t.x=r.y*e.z-r.z*e.y,t.y=r.z*e.x-r.x*e.z,t.z=r.x*e.y-r.y*e.x,t}function xo(r,e,t){return Math.sqrt(r*r+e*e+t*t)}function Ei(r){return new Xe(r[0],r[1],r[2])}var gl=class{constructor(){this.indices=[],this.vertices=[],this.colors=[],this.normals=[],this.uvs=[],this.material=null}GetBounds(){let e=[1/0,1/0,1/0],t=[-1/0,-1/0,-1/0];for(let n=0;n0,y=v.TextureUVCount()>0,x=v.GetVertex(d.vertex),w=v.GetNormal(d.normal),I=m.vertices.length/3;m.indices.push(I),m.vertices.push(x.x,x.y,x.z);let C=h(v,d.color,_);C!==null&&m.colors.push(C.r/255,C.g/255,C.b/255),m.normals.push(w.x,w.y,w.z);let P=f(v,d.uv,y);return P!==null&&m.uvs.push(P.x,P.y),{index:I,color:C,normal:w,uv:P}}function g(v,d,m){function _(w,I,C){if(C===null&&I===null)return!0;let P=h(w,I,!0);return Ir(C,P)}function y(w,I,C){let P=w.GetNormal(I);return pi(C,P)}function x(w,I,C){if(C===null&&I===null)return!0;let P=f(w,I,!0);return Fi(C,P)}for(let w=0;w{let c=r.GetTriangle(a),u=r.GetTriangle(l);return c.mat-u.mat});let s=null,o=null;for(let a=0;a{n(i)})}ExportContent(e,t,n,i){}GetExportedMaterialName(e){return this.GetExportedName(e,Ze("Material"))}GetExportedMeshName(e){return this.GetExportedName(e,Ze("Mesh"))}GetExportedName(e,t){return e.length===0?t:e}};var Mo=class extends Pn{constructor(){super(),this.rhino=null}CanExport(e,t){return e===an.Binary&&t==="3dm"}ExportContent(e,t,n,i){this.rhino===null?cr("rhino3dm").then(()=>{rhino3dm().then(s=>{this.rhino=s,this.ExportRhinoContent(e,n,i)})}).catch(()=>{i()}):this.ExportRhinoContent(e,n,i)}ExportRhinoContent(e,t,n){function i(c){return{r:c.r,g:c.g,b:c.b,a:255}}let s=new $t("model.3dm");t.push(s);let o=new this.rhino.File3dm;e.EnumerateTransformedMeshInstances(c=>{let u=_o(c);for(let h=0;h{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Eo=class extends Pn{constructor(){super()}CanExport(e,t){return e===an.Text&&t==="bim"}ExportContent(e,t,n,i){let s={schema_version:"1.1.0",meshes:[],elements:[],info:{}};this.ExportProperties(e.GetModel(),s.info);let o=0;e.EnumerateTransformedMeshInstances(l=>{let c={mesh_id:o,coordinates:[],indices:[]};l.EnumerateVertices(g=>{c.coordinates.push(g.x,g.y,g.z)}),l.EnumerateTriangleVertexIndices((g,v,d)=>{c.indices.push(g,v,d)});let u={mesh_id:o,type:"Other",color:{r:200,g:200,b:200,a:255},vector:{x:0,y:0,z:0},rotation:{qx:0,qy:0,qz:0,qw:1},guid:Lv(),info:{}},h=null,f=!0,p=[];for(let g=0;g=this.arrayBuffer.byteLength}GetBuffer(){return this.arrayBuffer}WriteArrayBuffer(e){let t=new Uint8Array(e);new Uint8Array(this.arrayBuffer).set(t,this.position),this.position+=e.byteLength}WriteBoolean8(e){this.dataView.setInt8(this.position,e?1:0),this.position=this.position+1}WriteCharacter8(e){this.dataView.setInt8(this.position,e),this.position=this.position+1}WriteUnsignedCharacter8(e){this.dataView.setUint8(this.position,e),this.position=this.position+1}WriteInteger16(e){this.dataView.setInt16(this.position,e,this.isLittleEndian),this.position=this.position+2}WriteUnsignedInteger16(e){this.dataView.setUint16(this.position,e,this.isLittleEndian),this.position=this.position+2}WriteInteger32(e){this.dataView.setInt32(this.position,e,this.isLittleEndian),this.position=this.position+4}WriteUnsignedInteger32(e){this.dataView.setUint32(this.position,e,this.isLittleEndian),this.position=this.position+4}WriteFloat32(e){this.dataView.setFloat32(this.position,e,this.isLittleEndian),this.position=this.position+4}WriteDouble64(e){this.dataView.setFloat64(this.position,e,this.isLittleEndian),this.position=this.position+8}};var Vi=class r{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.w=i}Clone(){return new r(this.x,this.y,this.z,this.w)}};var Kn=class{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.w=i}};function em(r,e){return It(r.x,e.x)&&It(r.y,e.y)&&It(r.z,e.z)&&It(r.w,e.w)}function bo(r){return new Kn(r[0],r[1],r[2],r[3])}function Wc(r,e){let t=e/2,n=Math.sin(t);return new Kn(r.x*n,r.y*n,r.z*n,Math.cos(t))}function tm(r,e,t,n){let i=Math.cos(r/2),s=Math.cos(e/2),o=Math.cos(t/2),a=Math.sin(r/2),l=Math.sin(e/2),c=Math.sin(t/2),u=new Kn(0,0,0,1);if(n==="XYZ")u.x=a*s*o+i*l*c,u.y=i*l*o-a*s*c,u.z=i*s*c+a*l*o,u.w=i*s*o-a*l*c;else if(n==="YXZ")u.x=a*s*o+i*l*c,u.y=i*l*o-a*s*c,u.z=i*s*c-a*l*o,u.w=i*s*o+a*l*c;else if(n==="ZXY")u.x=a*s*o-i*l*c,u.y=i*l*o+a*s*c,u.z=i*s*c+a*l*o,u.w=i*s*o-a*l*c;else if(n==="ZYX")u.x=a*s*o-i*l*c,u.y=i*l*o+a*s*c,u.z=i*s*c-a*l*o,u.w=i*s*o+a*l*c;else if(n==="YZX")u.x=a*s*o+i*l*c,u.y=i*l*o+a*s*c,u.z=i*s*c-a*l*o,u.w=i*s*o-a*l*c;else if(n==="XZY")u.x=a*s*o-i*l*c,u.y=i*l*o-a*s*c,u.z=i*s*c+a*l*o,u.w=i*s*o+a*l*c;else return null;return u}var fn=class r{constructor(e){this.matrix=null,e!=null&&(this.matrix=e)}IsValid(){return this.matrix!==null}Set(e){return this.matrix=e,this}Get(){return this.matrix}Clone(){let e=[this.matrix[0],this.matrix[1],this.matrix[2],this.matrix[3],this.matrix[4],this.matrix[5],this.matrix[6],this.matrix[7],this.matrix[8],this.matrix[9],this.matrix[10],this.matrix[11],this.matrix[12],this.matrix[13],this.matrix[14],this.matrix[15]];return new r(e)}CreateIdentity(){return this.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this}IsIdentity(){let e=new r().CreateIdentity().Get();for(let t=0;t<16;t++)if(!It(this.matrix[t],e[t]))return!1;return!0}CreateTranslation(e,t,n){return this.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,e,t,n,1],this}CreateRotation(e,t,n,i){let s=e+e,o=t+t,a=n+n,l=e*s,c=e*o,u=e*a,h=t*o,f=t*a,p=n*a,g=i*s,v=i*o,d=i*a;return this.matrix=[1-(h+p),c+d,u-v,0,c-d,1-(l+p),f+g,0,u+v,f-g,1-(l+h),0,0,0,0,1],this}CreateRotationAxisAngle(e,t){let n=Wc(e,t);return this.CreateRotation(n.x,n.y,n.z,n.w)}CreateScale(e,t,n){return this.matrix=[e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1],this}ComposeTRS(e,t,n){let i=e.x,s=e.y,o=e.z,a=t.x,l=t.y,c=t.z,u=t.w,h=n.x,f=n.y,p=n.z,g=a+a,v=l+l,d=c+c,m=a*g,_=a*v,y=a*d,x=l*v,w=l*d,I=c*d,C=u*g,P=u*v,E=u*d;return this.matrix=[(1-(x+I))*h,(_+E)*h,(y-P)*h,0,(_-E)*f,(1-(m+I))*f,(w+C)*f,0,(y+P)*p,(w-C)*p,(1-(m+x))*p,0,i,s,o,1],this}DecomposeTRS(){let e=new Xe(this.matrix[12],this.matrix[13],this.matrix[14]),t=xo(this.matrix[0],this.matrix[1],this.matrix[2]),n=xo(this.matrix[4],this.matrix[5],this.matrix[6]),i=xo(this.matrix[8],this.matrix[9],this.matrix[10]),s=this.Determinant();Cr(s)&&(t*=-1);let o=new Xe(t,n,i),a=this.matrix[0]/t,l=this.matrix[4]/n,c=this.matrix[8]/i,u=this.matrix[1]/t,h=this.matrix[5]/n,f=this.matrix[9]/i,p=this.matrix[2]/t,g=this.matrix[6]/n,v=this.matrix[10]/i,d=null,m=a+h+v;if(m>0){let _=Math.sqrt(m+1)*2;d=new Kn((g-f)/_,(c-p)/_,(u-l)/_,.25*_)}else if(a>h&&a>v){let _=Math.sqrt(1+a-h-v)*2;d=new Kn(.25*_,(l+u)/_,(c+p)/_,(g-f)/_)}else if(h>v){let _=Math.sqrt(1+h-a-v)*2;d=new Kn((l+u)/_,.25*_,(f+g)/_,(c-p)/_)}else{let _=Math.sqrt(1+v-a-h)*2;d=new Kn((c+p)/_,(f+g)/_,.25*_,(u-l)/_)}return{translation:e,rotation:d,scale:o}}Determinant(){let e=this.matrix[0],t=this.matrix[1],n=this.matrix[2],i=this.matrix[3],s=this.matrix[4],o=this.matrix[5],a=this.matrix[6],l=this.matrix[7],c=this.matrix[8],u=this.matrix[9],h=this.matrix[10],f=this.matrix[11],p=this.matrix[12],g=this.matrix[13],v=this.matrix[14],d=this.matrix[15],m=e*o-t*s,_=e*a-n*s,y=e*l-i*s,x=t*a-n*o,w=t*l-i*o,I=n*l-i*a,C=c*g-u*p,P=c*v-h*p,E=c*d-f*p,M=u*v-h*g,L=u*d-f*g,N=h*d-f*v;return m*N-_*L+y*M+x*E-w*P+I*C}Invert(){let e=this.matrix[0],t=this.matrix[1],n=this.matrix[2],i=this.matrix[3],s=this.matrix[4],o=this.matrix[5],a=this.matrix[6],l=this.matrix[7],c=this.matrix[8],u=this.matrix[9],h=this.matrix[10],f=this.matrix[11],p=this.matrix[12],g=this.matrix[13],v=this.matrix[14],d=this.matrix[15],m=e*o-t*s,_=e*a-n*s,y=e*l-i*s,x=t*a-n*o,w=t*l-i*o,I=n*l-i*a,C=c*g-u*p,P=c*v-h*p,E=c*d-f*p,M=u*v-h*g,L=u*d-f*g,N=h*d-f*v,O=m*N-_*L+y*M+x*E-w*P+I*C;if(It(O,0))return null;let B=[(o*N-a*L+l*M)/O,(n*L-t*N-i*M)/O,(g*I-v*w+d*x)/O,(h*w-u*I-f*x)/O,(a*E-s*N-l*P)/O,(e*N-n*E+i*P)/O,(v*y-p*I-d*_)/O,(c*I-h*y+f*_)/O,(s*L-o*E+l*C)/O,(t*E-e*L-i*C)/O,(p*w-g*y+d*m)/O,(u*y-c*w-f*m)/O,(o*P-s*M-a*C)/O,(e*M-t*P+n*C)/O,(g*_-p*x-v*m)/O,(c*x-u*_+h*m)/O];return new r(B)}Transpose(){let e=[this.matrix[0],this.matrix[4],this.matrix[8],this.matrix[12],this.matrix[1],this.matrix[5],this.matrix[9],this.matrix[13],this.matrix[2],this.matrix[6],this.matrix[10],this.matrix[14],this.matrix[3],this.matrix[7],this.matrix[11],this.matrix[15]];return new r(e)}InvertTranspose(){let e=this.Invert();return e===null?null:e.Transpose()}MultiplyVector(e){let t=e.x,n=e.y,i=e.z,s=e.w,o=this.matrix[0],a=this.matrix[1],l=this.matrix[2],c=this.matrix[3],u=this.matrix[4],h=this.matrix[5],f=this.matrix[6],p=this.matrix[7],g=this.matrix[8],v=this.matrix[9],d=this.matrix[10],m=this.matrix[11],_=this.matrix[12],y=this.matrix[13],x=this.matrix[14],w=this.matrix[15];return new Vi(t*o+n*u+i*g+s*_,t*a+n*h+i*v+s*y,t*l+n*f+i*d+s*x,t*c+n*p+i*m+s*w)}MultiplyMatrix(e){let t=this.matrix[0],n=this.matrix[1],i=this.matrix[2],s=this.matrix[3],o=this.matrix[4],a=this.matrix[5],l=this.matrix[6],c=this.matrix[7],u=this.matrix[8],h=this.matrix[9],f=this.matrix[10],p=this.matrix[11],g=this.matrix[12],v=this.matrix[13],d=this.matrix[14],m=this.matrix[15],_=e.matrix[0],y=e.matrix[1],x=e.matrix[2],w=e.matrix[3],I=e.matrix[4],C=e.matrix[5],P=e.matrix[6],E=e.matrix[7],M=e.matrix[8],L=e.matrix[9],N=e.matrix[10],O=e.matrix[11],B=e.matrix[12],ie=e.matrix[13],$=e.matrix[14],te=e.matrix[15],W=[t*_+n*I+i*M+s*B,t*y+n*C+i*L+s*ie,t*x+n*P+i*N+s*$,t*w+n*E+i*O+s*te,o*_+a*I+l*M+c*B,o*y+a*C+l*L+c*ie,o*x+a*P+l*N+c*$,o*w+a*E+l*O+c*te,u*_+h*I+f*M+p*B,u*y+h*C+f*L+p*ie,u*x+h*P+f*N+p*$,u*w+h*E+f*O+p*te,g*_+v*I+d*M+m*B,g*y+v*C+d*L+m*ie,g*x+v*P+d*N+m*$,g*w+v*E+d*O+m*te];return new r(W)}};function Xc(r,e){let t=r.Get(),n=e.Get();for(let i=0;i<16;i++)if(!It(t[i],n[i]))return!1;return!0}var ln=class r{constructor(e){e!=null?this.matrix=e:(this.matrix=new fn,this.matrix.CreateIdentity())}SetMatrix(e){return this.matrix=e,this}GetMatrix(){return this.matrix}IsIdentity(){return this.matrix.IsIdentity()}AppendMatrix(e){return this.matrix=this.matrix.MultiplyMatrix(e),this}Append(e){return this.AppendMatrix(e.GetMatrix()),this}TransformCoord3D(e){let t=new Vi(e.x,e.y,e.z,1),n=this.matrix.MultiplyVector(t);return new Xe(n.x,n.y,n.z)}Clone(){let e=this.matrix.Clone();return new r(e)}};function nm(r,e){return Xc(r.GetMatrix(),e.GetMatrix())}function ts(r){return r.LineCount()===0&&r.TriangleCount()===0}function Ds(r,e,t){let n=In(e,r),i=In(t,r),s=Bi(n,i);return s.Normalize(),s}function hr(r,e){if(!e.IsIdentity()){for(let t=0;t0){let t=e.GetMatrix().InvertTranspose();if(t!==null){let n=new ln(t);for(let i=0;i{let i=t.TransformCoord3D(n);e(i)})}EnumerateTriangleVertexIndices(e){this.mesh.EnumerateTriangleVertexIndices(e)}EnumerateTriangleVertices(e){let t=this.node.GetWorldTransformation();t.IsIdentity()?this.mesh.EnumerateTriangleVertices(e):this.mesh.EnumerateTriangleVertices((n,i,s)=>{let o=t.TransformCoord3D(n),a=t.TransformCoord3D(i),l=t.TransformCoord3D(s);e(o,a,l)})}PropertyGroupCount(){return this.mesh.PropertyGroupCount()}AddPropertyGroup(e){return this.mesh.AddPropertyGroup(e)}GetPropertyGroup(e){return this.mesh.GetPropertyGroup(e)}GetTransformedMesh(){let e=this.node.GetWorldTransformation(),t=this.mesh.Clone();return hr(t,e),t}};var im={UNSIGNED_INT:5125,FLOAT:5126},xl={ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963},So=class extends Pn{constructor(){super(),this.components={index:{type:im.UNSIGNED_INT,size:4},number:{type:im.FLOAT,size:4}}}CanExport(e,t){return e===an.Text&&t==="gltf"||e===an.Binary&&t==="glb"}ExportContent(e,t,n,i){t===an.Text?this.ExportAsciiContent(e,n):t===an.Binary&&this.ExportBinaryContent(e,n),i()}ExportAsciiContent(e,t){let n=new $t("model.gltf"),i=new $t("model.bin");t.push(n),t.push(i);let s=this.GetMeshData(e),o=this.GetMainBuffer(s),a=this.GetMainJson(e,s);a.buffers.push({uri:i.GetName(),byteLength:o.byteLength});let l=new Map;this.ExportMaterials(e,a,c=>{let u=En(c.name);if(l.has(u))return l.get(u);{let h=new $t(u);h.SetBufferContent(c.buffer),t.push(h);let f=a.textures.length;return l.set(u,f),a.images.push({uri:u}),a.textures.push({source:f}),f}}),n.SetTextContent(JSON.stringify(a,null,4)),i.SetBufferContent(o)}ExportBinaryContent(e,t){function n(x){let w=x%4;return w===0?x:x+(4-w)}function i(x,w,I){for(let C=0;C{let w=En(x.name),I=ur(x.name);if(h.has(w))return h.get(w);{let C=l.bufferViews.length,P=l.textures.length;h.set(w,P);let E=x.buffer;return c.push(E),l.bufferViews.push({buffer:0,byteOffset:u,byteLength:E.byteLength}),u+=E.byteLength,l.images.push({bufferView:C,mimeType:"image/"+I}),l.textures.push({source:P}),P}});let f=a.byteLength;for(let x=0;x{let i=_o(n);t.push({name:n.GetName(),buffer:i,offsets:[],sizes:[]})}),t}GetMainBuffer(e){let t=0;for(let i of e)t+=i.buffer.GetByteLength(this.components.index.size,this.components.number.size);let n=new Gi(t,!0);for(let i of e)for(let s=0;s0&&(g.name=v),p.GetTransformation().IsIdentity()||(g.matrix=p.GetTransformation().GetMatrix().Get()),f.push(g),h.push(f.length-1),g.children=[],a(u,g.children,f,p)}}function o(u,h,f,p,g,v){let d=new bi(p.GetId(),g);if(!u.IsMeshInstanceVisible(d))return;let m={mesh:u.MapMeshIndex(g)};v&&(p.GetTransformation().IsIdentity()||(m.matrix=p.GetTransformation().GetMatrix().Get())),f.push(m),h.push(f.length-1)}function a(u,h,f,p){for(let g of p.GetChildNodes())s(u,h,f,g);for(let g of p.GetMeshIndices())o(u,h,f,p,g,!1)}let l={asset:{generator:"https://3dviewer.net",version:"2.0"},scene:0,scenes:[{nodes:[]}],nodes:[],materials:[],meshes:[],buffers:[],bufferViews:[],accessors:[]},c=e.GetModel().GetRootNode();a(e,l.scenes[0].nodes,l.nodes,c);for(let u of t){let h={name:this.GetExportedMeshName(u.name),primitives:[]},f=u.buffer.primitives;for(let p=0;p0&&(_=v.AddBufferView(g.colors.length*this.components.number.size,xl.ARRAY_BUFFER));let y=v.AddBufferView(g.normals.length*this.components.number.size,xl.ARRAY_BUFFER),x=null;g.uvs.length>0&&(x=v.AddBufferView(g.uvs.length*this.components.number.size,xl.ARRAY_BUFFER));let w={attributes:{},mode:4,material:g.material},I=g.GetBounds();l.accessors.push({bufferView:d,byteOffset:0,componentType:this.components.index.type,count:g.indices.length,type:"SCALAR"}),w.indices=l.accessors.length-1,l.accessors.push({bufferView:m,byteOffset:0,componentType:this.components.number.type,count:g.vertices.length/3,min:I.min,max:I.max,type:"VEC3"}),w.attributes.POSITION=l.accessors.length-1,_!==null&&(l.accessors.push({bufferView:_,byteOffset:0,componentType:this.components.number.type,count:g.colors.length/3,type:"VEC3"}),w.attributes.COLOR_0=l.accessors.length-1),l.accessors.push({bufferView:y,byteOffset:0,componentType:this.components.number.type,count:g.normals.length/3,type:"VEC3"}),w.attributes.NORMAL=l.accessors.length-1,x!==null&&(l.accessors.push({bufferView:x,byteOffset:0,componentType:this.components.number.type,count:g.uvs.length/2,type:"VEC2"}),w.attributes.TEXCOORD_0=l.accessors.length-1),h.primitives.push(w)}l.meshes.push(h)}return l}ExportMaterials(e,t,n){function i(s,o,a,l){function c(d,m){return[lr(d.r/255),lr(d.g/255),lr(d.b/255),m]}function u(d){return[lr(d.r/255),lr(d.g/255),lr(d.b/255)]}function h(d,m,_){if(m===null||!m.IsValid())return null;d.images===void 0&&(d.images=[]),d.textures===void 0&&(d.textures=[]);let x={index:_(m)};if(m.HasTransformation()){let w="KHR_texture_transform";d.extensionsUsed===void 0&&(d.extensionsUsed=[]),d.extensionsUsed.indexOf(w)===-1&&d.extensionsUsed.push(w),x.extensions={KHR_texture_transform:{offset:[m.offset.x,-m.offset.y],scale:[m.scale.x,m.scale.y],rotation:-m.rotation}}}return x}let f={name:s.GetExportedMaterialName(a.name),pbrMetallicRoughness:{baseColorFactor:c(a.color,a.opacity)},emissiveFactor:u(a.emissive),doubleSided:!0,alphaMode:"OPAQUE"};a.transparent&&(f.alphaMode="BLEND");let p=h(o,a.diffuseMap,l);if(p!==null&&(a.multiplyDiffuseMap||(f.pbrMetallicRoughness.baseColorFactor=c(new Mt(255,255,255),a.opacity)),f.pbrMetallicRoughness.baseColorTexture=p),a.type===Un.Physical){let d=h(o,a.metalnessMap,l);d!==null?f.pbrMetallicRoughness.metallicRoughnessTexture=d:(f.pbrMetallicRoughness.metallicFactor=a.metalness,f.pbrMetallicRoughness.roughnessFactor=a.roughness)}let g=h(o,a.normalMap,l);g!==null&&(f.normalTexture=g);let v=h(o,a.emissiveMap,l);v!==null&&(f.emissiveTexture=v),o.materials.push(f)}for(let s=0;s!0,co(e,this)}},Ao=class{constructor(e,t){this.model=e,this.settings=t||new _l,this.visibleMeshes=null,this.meshToVisibleMeshIndex=null}GetModel(){return this.model}MaterialCount(){return this.model.MaterialCount()}GetMaterial(e){return this.model.GetMaterial(e)}VertexCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.VertexCount()}),e}TriangleCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.TriangleCount()}),e}MeshCount(){let e=0;return this.EnumerateMeshes(t=>{e+=1}),e}EnumerateMeshes(e){this.FillVisibleMeshCache();for(let t=0;t{e+=1}),e}EnumerateMeshInstances(e){this.model.EnumerateMeshInstances(t=>{this.settings.isMeshVisible(t.GetId())&&e(t)})}EnumerateTransformedMeshInstances(e){this.EnumerateMeshInstances(t=>{let n=t.GetTransformation();this.settings.transformation.IsIdentity()||n.Append(this.settings.transformation);let s=t.GetMesh().Clone();n.IsIdentity()||hr(s,n),e(s)})}EnumerateVerticesAndTriangles(e){let t=[];this.EnumerateTransformedMeshInstances(i=>{t.push(i)});for(let i of t)i.EnumerateVertices(s=>{e.onVertex(s.x,s.y,s.z)});let n=0;for(let i of t)i.EnumerateTriangleVertexIndices((s,o,a)=>{e.onTriangle(s+n,o+n,a+n)}),n+=i.VertexCount()}EnumerateTrianglesWithNormals(e){this.EnumerateTransformedMeshInstances(t=>{t.EnumerateTriangleVertices((n,i,s)=>{let o=Ds(n,i,s);e(n,i,s,o)})})}FillVisibleMeshCache(){if(this.visibleMeshes!==null&&this.meshToVisibleMeshIndex!==null)return;this.visibleMeshes=new Set,this.model.EnumerateMeshInstances(t=>{let n=t.GetId();this.settings.isMeshVisible(n)&&this.visibleMeshes.add(n.meshIndex)}),this.meshToVisibleMeshIndex=new Map;let e=0;for(let t=0;tx.GetName()===_)===-1){let x=new $t(_);x.SetBufferContent(d.buffer),m.push(x)}}let o=new $t("model.mtl"),a=new $t("model.obj");n.push(o),n.push(a);let l=new oi;l.WriteLine(this.GetHeaderText());for(let g=0;g{c.WriteArrayLine(["g",this.GetExportedMeshName(g.GetName())]);for(let v=0;v{i.WriteArrayLine(["facet","normal",l.x,l.y,l.z]),i.Indent(1),i.WriteLine("outer loop"),i.Indent(1),i.WriteArrayLine(["vertex",s.x,s.y,s.z]),i.WriteArrayLine(["vertex",o.x,o.y,o.z]),i.WriteArrayLine(["vertex",a.x,a.y,a.z]),i.Indent(-1),i.WriteLine("endloop"),i.Indent(-1),i.WriteLine("endfacet")}),i.WriteLine("endsolid Model"),n.SetTextContent(i.GetText())}ExportBinary(e,t){let n=new $t("model.stl");t.push(n);let i=e.TriangleCount(),s=80,o=s+4+i*50,a=new Gi(o,!0);for(let l=0;l{a.WriteFloat32(h.x),a.WriteFloat32(h.y),a.WriteFloat32(h.z),a.WriteFloat32(l.x),a.WriteFloat32(l.y),a.WriteFloat32(l.z),a.WriteFloat32(c.x),a.WriteFloat32(c.y),a.WriteFloat32(c.z),a.WriteFloat32(u.x),a.WriteFloat32(u.y),a.WriteFloat32(u.z),a.WriteUnsignedInteger16(0)}),n.SetBufferContent(a.GetBuffer())}};var qc=class{constructor(){this.exporters=[new wo,new Io,new Ro,new Co,new So,new Mo,new Eo]}AddExporter(e){this.exporters.push(e)}Export(e,t,n,i,s){let o=null;for(let l=0;l{l.length===0?s.onError():s.onSuccess(l)})}};var Fs=class{constructor(e,t){this.min=e,this.max=t}GetMin(){return this.min}GetMax(){return this.max}GetCenter(){return new Xe((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,(this.min.z+this.max.z)/2)}},Po=class{constructor(){this.box=new Fs(new Xe(1/0,1/0,1/0),new Xe(-1/0,-1/0,-1/0)),this.isValid=!1}GetBox(){return this.isValid?this.box:null}AddPoint(e){this.box.min.x=Math.min(this.box.min.x,e.x),this.box.min.y=Math.min(this.box.min.y,e.y),this.box.min.z=Math.min(this.box.min.z,e.z),this.box.max.x=Math.max(this.box.max.x,e.x),this.box.max.y=Math.max(this.box.max.y,e.y),this.box.max.z=Math.max(this.box.max.z,e.z),this.isValid=!0}};var No=class r{constructor(e,t){this.beg=e,this.end=t}Clone(){return new r(this.beg,this.end)}};function Jh(r,e){let t=Jr(r.end,r.beg),n=Jr(e,r.beg),i=dl(t,n),s=dl(t,t);if(wr(s))return r.beg.Clone();let o=i/s;return o=Math.max(0,Math.min(1,o)),new At(r.beg.x+o*t.x,r.beg.y+o*t.y)}function Yc(r,e){let t=Jh(r,e);return Is(t,e)}var Tl=class r{constructor(e,t){this.boundingBox=e,this.level=t,this.pointItems=[],this.childNodes=[]}AddPoint(e,t,n){let i=this.FindNodeForPoint(e);if(i===null||i.FindPointDirectly(e)!==null)return!1;if(i.pointItems.length=n.maxTreeDepth)return i.AddPointDirectly(e,t),!0;{i.CreateChildNodes();let s=i.pointItems;i.pointItems=[];for(let o=0;o{e.onFileListProgress(t,this.files.length),this.GetFileContent(this.files[t],{onReady:n,onProgress:e.onFileLoadProgress})},onReady:e.onReady})}ContainsFileByPath(e){return this.FindFileByPath(e)!==null}FindFileByPath(e){let t=En(e).toLowerCase();for(let n=0;n{e.SetContent(i)}).catch(()=>{}).finally(()=>{t.onReady()})}};var $h=class{constructor(){this.nextId=0}GenerateId(){let e=this.nextId;return this.nextId+=1,e}},Nn=class{constructor(){this.name="",this.parent=null,this.transformation=new ln,this.childNodes=[],this.meshIndices=[],this.idGenerator=new $h,this.id=this.idGenerator.GenerateId()}IsEmpty(){return this.childNodes.length===0&&this.meshIndices.length===0}IsMeshNode(){return this.childNodes.length===0&&this.meshIndices.length===1}GetId(){return this.id}GetName(){return this.name}SetName(e){this.name=e}HasParent(){return this.parent!==null}GetParent(){return this.parent}GetTransformation(){return this.transformation}GetWorldTransformation(){let e=this.transformation.Clone(),t=this.parent;for(;t!==null;)e.Append(t.transformation),t=t.parent;return e}SetTransformation(e){this.transformation=e}AddChildNode(e){return e.parent=this,e.idGenerator=this.idGenerator,e.id=e.idGenerator.GenerateId(),this.childNodes.push(e),this.childNodes.length-1}RemoveChildNode(e){e.parent=null;let t=this.childNodes.indexOf(e);this.childNodes.splice(t,1)}GetChildNodes(){return this.childNodes}ChildNodeCount(){return this.childNodes.length}GetChildNode(e){return this.childNodes[e]}AddMeshIndex(e){return this.meshIndices.push(e),this.meshIndices.length-1}MeshIndexCount(){return this.meshIndices.length}GetMeshIndex(e){return this.meshIndices[e]}GetMeshIndices(){return this.meshIndices}Enumerate(e){e(this);for(let t of this.childNodes)t.Enumerate(e)}EnumerateChildren(e){for(let t of this.childNodes)e(t),t.EnumerateChildren(e)}EnumerateMeshIndices(e){for(let t of this.meshIndices)e(t);for(let t of this.childNodes)t.EnumerateMeshIndices(e)}};var ns={Unknown:0,Millimeter:1,Centimeter:2,Meter:3,Inch:4,Foot:5};var dr=class extends fr{constructor(){super(),this.unit=ns.Unknown,this.root=new Nn,this.materials=[],this.meshes=[]}GetUnit(){return this.unit}SetUnit(e){this.unit=e}GetRootNode(){return this.root}NodeCount(){let e=0;return this.root.Enumerate(t=>{e+=1}),e-1}MaterialCount(){return this.materials.length}MeshCount(){return this.meshes.length}MeshInstanceCount(){let e=0;return this.root.Enumerate(t=>{e+=t.MeshIndexCount()}),e}VertexCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.VertexCount()}),e}VertexColorCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.VertexColorCount()}),e}NormalCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.NormalCount()}),e}TextureUVCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.TextureUVCount()}),e}LineCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.LineCount()}),e}LineSegmentCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.LineSegmentCount()}),e}TriangleCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.TriangleCount()}),e}AddMaterial(e){return this.materials.push(e),this.materials.length-1}GetMaterial(e){return this.materials[e]}AddMesh(e){return this.meshes.push(e),this.meshes.length-1}AddMeshToRootNode(e){let t=this.AddMesh(e);return this.root.AddMeshIndex(t),t}RemoveMesh(e){this.meshes.splice(e,1),this.root.Enumerate(t=>{for(let n=0;ne&&(t.meshIndices[n]-=1)})}GetMesh(e){return this.meshes[e]}GetMeshInstance(e){let t=null;if(this.root.Enumerate(o=>{o.GetId()===e.nodeId&&(t=o)}),t===null||t.GetMeshIndices().indexOf(e.meshIndex)===-1)return null;let i=this.GetMesh(e.meshIndex),s=new bi(t.GetId(),e.meshIndex);return new Nr(s,t,i)}EnumerateMeshes(e){for(let t of this.meshes)e(t)}EnumerateMeshInstances(e){this.root.Enumerate(t=>{for(let n of t.GetMeshIndices()){let i=new bi(t.GetId(),n),s=this.GetMesh(n),o=new Nr(i,t,s);e(o)}})}EnumerateTransformedMeshInstances(e){this.EnumerateMeshInstances(t=>{let n=t.GetTransformedMesh();e(n)})}EnumerateVertices(e){this.EnumerateMeshInstances(t=>{t.EnumerateVertices(e)})}EnumerateTriangleVertexIndices(e){this.EnumerateMeshInstances(t=>{t.EnumerateTriangleVertexIndices(e)})}EnumerateTriangleVertices(e){this.EnumerateMeshInstances(t=>{t.EnumerateTriangleVertices(e)})}};var Ml=class{constructor(){this.edges=[],this.triangles=[]}},El=class{constructor(e,t){this.vertex1=e,this.vertex2=t,this.triangles=[]}},bl=class{constructor(e,t){this.edge=e,this.reversed=t}},Sl=class{constructor(){this.triEdge1=null,this.triEdge2=null,this.triEdge3=null}},Fo=class{constructor(){this.vertices=[],this.edges=[],this.triangleEdges=[],this.triangles=[],this.edgeStartToEndVertexMap=new Map}AddVertex(){return this.vertices.push(new Ml),this.vertices.length-1}AddTriangle(e,t,n){function i(c,u,h){c[u].triangles.push(h)}function s(c,u,h,f){let p=c[h],g=u[f];p.edges.push(g.edge)}function o(c,u,h,f){let p=u[h];c[p.edge].triangles.push(f)}let a=this.triangles.length,l=new Sl;l.triEdge1=this.AddTriangleEdge(e,t),l.triEdge2=this.AddTriangleEdge(t,n),l.triEdge3=this.AddTriangleEdge(n,e),i(this.vertices,e,a),i(this.vertices,t,a),i(this.vertices,n,a),s(this.vertices,this.triangleEdges,e,l.triEdge1),s(this.vertices,this.triangleEdges,t,l.triEdge2),s(this.vertices,this.triangleEdges,n,l.triEdge3),o(this.edges,this.triangleEdges,l.triEdge1,a),o(this.edges,this.triangleEdges,l.triEdge2,a),o(this.edges,this.triangleEdges,l.triEdge3,a),this.triangles.push(l)}AddTriangleEdge(e,t){let n=e,i=t,s=!1;t{ts(t)||(e=!1)}),e}function Qh(r){let e=new Po;return r.EnumerateVertices(t=>{e.AddPoint(t)}),e.GetBox()}function ef(r){function e(s,o,a){let l=o.FindPoint(s);return l===null&&(l=a.AddVertex(),o.AddPoint(s,l)),l}let t=Qh(r),n=new Lo(t),i=new Fo;return r.EnumerateTriangleVertices((s,o,a)=>{let l=e(s,n,i),c=e(o,n,i),u=e(a,n,i);i.AddTriangle(l,c,u)}),i}function tf(r){function e(t,n,i){let s=t.triangles[n],o=t.triangleEdges[s.triEdge1],a=t.triangleEdges[s.triEdge2],l=t.triangleEdges[s.triEdge3];return o.edge===i?o.reversed:a.edge===i?a.reversed:l.edge===i?l.reversed:null}if(r instanceof dr){let t=!0;return r.EnumerateMeshInstances(n=>{t&&(t=tf(n))}),t}else{let t=ef(r);for(let n=0;n>8&255]+zn[r>>16&255]+zn[r>>24&255]+"-"+zn[e&255]+zn[e>>8&255]+"-"+zn[e>>16&15|64]+zn[e>>24&255]+"-"+zn[t&63|128]+zn[t>>8&255]+"-"+zn[t>>16&255]+zn[t>>24&255]+zn[n&255]+zn[n>>8&255]+zn[n>>16&255]+zn[n>>24&255]).toLowerCase()}function kn(r,e,t){return Math.max(e,Math.min(t,r))}function Rd(r,e){return(r%e+e)%e}function Gy(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function Vy(r,e,t){return r!==e?(t-r)/(e-r):0}function Nl(r,e,t){return(1-t)*r+t*e}function zy(r,e,t,n){return Nl(r,e,1-Math.exp(-t*n))}function Hy(r,e=1){return e-Math.abs(Rd(r,e*2)-e)}function Wy(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function Xy(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function jy(r,e){return r+Math.floor(Math.random()*(e-r+1))}function qy(r,e){return r+Math.random()*(e-r)}function Yy(r){return r*(.5-Math.random())}function Ky(r){r!==void 0&&(Wm=r);let e=Wm+=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 Zy(r){return r*oa}function Jy(r){return r*da}function $y(r){return(r&r-1)===0&&r!==0}function Qy(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function ex(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function tx(r,e,t,n,i){let s=Math.cos,o=Math.sin,a=s(t/2),l=o(t/2),c=s((e+n)/2),u=o((e+n)/2),h=s((e-n)/2),f=o((e-n)/2),p=s((n-e)/2),g=o((n-e)/2);switch(i){case"XYX":r.set(a*u,l*h,l*f,a*c);break;case"YZY":r.set(l*f,a*u,l*h,a*c);break;case"ZXZ":r.set(l*h,l*f,a*u,a*c);break;case"XZX":r.set(a*u,l*g,l*p,a*c);break;case"YXY":r.set(l*p,a*u,l*g,a*c);break;case"ZYZ":r.set(l*g,l*p,a*u,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ta(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Zn(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var pn={DEG2RAD:oa,RAD2DEG:da,generateUUID:Xr,clamp:kn,euclideanModulo:Rd,mapLinear:Gy,inverseLerp:Vy,lerp:Nl,damp:zy,pingpong:Hy,smoothstep:Wy,smootherstep:Xy,randInt:jy,randFloat:qy,randFloatSpread:Yy,seededRandom:Ky,degToRad:Zy,radToDeg:Jy,isPowerOfTwo:$y,ceilPowerOfTwo:Qy,floorPowerOfTwo:ex,setQuaternionFromProperEuler:tx,normalize:Zn,denormalize:ta},Ce=class r{constructor(e=0,t=0){r.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,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,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;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 this.constructor(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,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,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,t){return this.x=e.x-t.x,this.y=e.y-t.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)}applyMatrix3(e){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[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,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}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){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(kn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*n-o*i+e.x,this.y=s*i+o*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},ft=class r{constructor(e,t,n,i,s,o,a,l,c){r.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,o,a,l,c)}set(e,t,n,i,s,o,a,l,c){let u=this.elements;return u[0]=e,u[1]=i,u[2]=a,u[3]=t,u[4]=s,u[5]=l,u[6]=n,u[7]=o,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,s=this.elements,o=n[0],a=n[3],l=n[6],c=n[1],u=n[4],h=n[7],f=n[2],p=n[5],g=n[8],v=i[0],d=i[3],m=i[6],_=i[1],y=i[4],x=i[7],w=i[2],I=i[5],C=i[8];return s[0]=o*v+a*_+l*w,s[3]=o*d+a*y+l*I,s[6]=o*m+a*x+l*C,s[1]=c*v+u*_+h*w,s[4]=c*d+u*y+h*I,s[7]=c*m+u*x+h*C,s[2]=f*v+p*_+g*w,s[5]=f*d+p*y+g*I,s[8]=f*m+p*x+g*C,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8];return t*o*u-t*a*c-n*s*u+n*a*l+i*s*c-i*o*l}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],h=u*o-a*c,f=a*l-u*s,p=c*s-o*l,g=t*h+n*f+i*p;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);let v=1/g;return e[0]=h*v,e[1]=(i*c-u*n)*v,e[2]=(a*n-i*o)*v,e[3]=f*v,e[4]=(u*t-i*l)*v,e[5]=(i*s-a*t)*v,e[6]=p*v,e[7]=(n*l-c*t)*v,e[8]=(o*t-n*s)*v,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,o,a){let l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*o+c*a)+o+e,-i*c,i*l,-i*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(uf.makeScale(e,t)),this}rotate(e){return this.premultiply(uf.makeRotation(-e)),this}translate(e,t){return this.premultiply(uf.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}},uf=new ft;function f0(r){for(let e=r.length-1;e>=0;--e)if(r[e]>=65535)return!0;return!1}function kl(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function nx(){let r=kl("canvas");return r.style.display="block",r}var Xm={};function ix(r){r in Xm||(Xm[r]=!0,console.warn(r))}var jm=new ft().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),qm=new ft().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Qc={[li]:{transfer:Du,primaries:Fu,toReference:r=>r,fromReference:r=>r},[jt]:{transfer:Qt,primaries:Fu,toReference:r=>r.convertSRGBToLinear(),fromReference:r=>r.convertLinearToSRGB()},[ch]:{transfer:Du,primaries:Uu,toReference:r=>r.applyMatrix3(qm),fromReference:r=>r.applyMatrix3(jm)},[Cd]:{transfer:Qt,primaries:Uu,toReference:r=>r.convertSRGBToLinear().applyMatrix3(qm),fromReference:r=>r.applyMatrix3(jm).convertLinearToSRGB()}},rx=new Set([li,ch]),Bt={enabled:!0,_workingColorSpace:li,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(r){if(!rx.has(r))throw new Error(`Unsupported working color space, "${r}".`);this._workingColorSpace=r},convert:function(r,e,t){if(this.enabled===!1||e===t||!e||!t)return r;let n=Qc[e].toReference,i=Qc[t].fromReference;return i(n(r))},fromWorkingColorSpace:function(r,e){return this.convert(r,this._workingColorSpace,e)},toWorkingColorSpace:function(r,e){return this.convert(r,e,this._workingColorSpace)},getPrimaries:function(r){return Qc[r].primaries},getTransfer:function(r){return r===cs?Du:Qc[r].transfer}};function aa(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function hf(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var Bo,pa=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Bo===void 0&&(Bo=kl("canvas")),Bo.width=e.width,Bo.height=e.height;let n=Bo.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Bo}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){let t=kl("canvas");t.width=e.width,t.height=e.height;let n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);let i=n.getImageData(0,0,e.width,e.height),s=i.data;for(let o=0;o0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==n0)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case rn:e.x=e.x-Math.floor(e.x);break;case un:e.x=e.x<0?0:1;break;case ha:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case rn:e.y=e.y-Math.floor(e.y);break;case un:e.y=e.y<0?0:1;break;case ha:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}};Dn.DEFAULT_IMAGE=null;Dn.DEFAULT_MAPPING=n0;Dn.DEFAULT_ANISOTROPY=1;var Ct=class r{constructor(e=0,t=0,n=0,i=1){r.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;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;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(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!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*s,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*s,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*s,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s,l=e.elements,c=l[0],u=l[4],h=l[8],f=l[1],p=l[5],g=l[9],v=l[2],d=l[6],m=l[10];if(Math.abs(u-f)<.01&&Math.abs(h-v)<.01&&Math.abs(g-d)<.01){if(Math.abs(u+f)<.1&&Math.abs(h+v)<.1&&Math.abs(g+d)<.1&&Math.abs(c+p+m-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let y=(c+1)/2,x=(p+1)/2,w=(m+1)/2,I=(u+f)/4,C=(h+v)/4,P=(g+d)/4;return y>x&&y>w?y<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(y),i=I/n,s=C/n):x>w?x<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(x),n=I/i,s=P/i):w<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(w),n=C/s,i=P/s),this.set(n,i,s,t),this}let _=Math.sqrt((d-g)*(d-g)+(h-v)*(h-v)+(f-u)*(f-u));return Math.abs(_)<.001&&(_=1),this.x=(d-g)/_,this.y=(h-v)/_,this.z=(f-u)/_,this.w=Math.acos((c+p+m-1)/2),this}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.w=Math.min(this.w,e.w),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.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,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)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},jf=class extends ps{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Ct(0,0,e,t),this.scissorTest=!1,this.viewport=new Ct(0,0,e,t);let i={width:e,height:t,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:bn,depthBuffer:!0,stencilBuffer:!1,depthTexture:null,samples:0,count:1},n);let s=new Dn(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);s.flipY=!1,s.generateMipmaps=n.generateMipmaps,s.internalFormat=n.internalFormat,this.textures=[];let o=n.count;for(let a=0;a=0?1:-1,y=1-m*m;if(y>Number.EPSILON){let w=Math.sqrt(y),I=Math.atan2(w,m*_);d=Math.sin(d*I)/w,a=Math.sin(a*I)/w}let x=a*_;if(l=l*d+f*x,c=c*d+p*x,u=u*d+g*x,h=h*d+v*x,d===1-a){let w=1/Math.sqrt(l*l+c*c+u*u+h*h);l*=w,c*=w,u*=w,h*=w}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=h}static multiplyQuaternionsFlat(e,t,n,i,s,o){let a=n[i],l=n[i+1],c=n[i+2],u=n[i+3],h=s[o],f=s[o+1],p=s[o+2],g=s[o+3];return e[t]=a*g+u*h+l*p-c*f,e[t+1]=l*g+u*f+c*h-a*p,e[t+2]=c*g+u*p+a*f-l*h,e[t+3]=u*g-a*h-l*f-c*p,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,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(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,t=!0){let n=e._x,i=e._y,s=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(n/2),u=a(i/2),h=a(s/2),f=l(n/2),p=l(i/2),g=l(s/2);switch(o){case"XYZ":this._x=f*u*h+c*p*g,this._y=c*p*h-f*u*g,this._z=c*u*g+f*p*h,this._w=c*u*h-f*p*g;break;case"YXZ":this._x=f*u*h+c*p*g,this._y=c*p*h-f*u*g,this._z=c*u*g-f*p*h,this._w=c*u*h+f*p*g;break;case"ZXY":this._x=f*u*h-c*p*g,this._y=c*p*h+f*u*g,this._z=c*u*g+f*p*h,this._w=c*u*h-f*p*g;break;case"ZYX":this._x=f*u*h-c*p*g,this._y=c*p*h+f*u*g,this._z=c*u*g-f*p*h,this._w=c*u*h+f*p*g;break;case"YZX":this._x=f*u*h+c*p*g,this._y=c*p*h+f*u*g,this._z=c*u*g-f*p*h,this._w=c*u*h-f*p*g;break;case"XZY":this._x=f*u*h-c*p*g,this._y=c*p*h-f*u*g,this._z=c*u*g+f*p*h,this._w=c*u*h+f*p*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],s=t[8],o=t[1],a=t[5],l=t[9],c=t[2],u=t[6],h=t[10],f=n+a+h;if(f>0){let p=.5/Math.sqrt(f+1);this._w=.25/p,this._x=(u-l)*p,this._y=(s-c)*p,this._z=(o-i)*p}else if(n>a&&n>h){let p=2*Math.sqrt(1+n-a-h);this._w=(u-l)/p,this._x=.25*p,this._y=(i+o)/p,this._z=(s+c)/p}else if(a>h){let p=2*Math.sqrt(1+a-n-h);this._w=(s-c)/p,this._x=(i+o)/p,this._y=.25*p,this._z=(l+u)/p}else{let p=2*Math.sqrt(1+h-n-a);this._w=(o-i)/p,this._x=(s+c)/p,this._y=(l+u)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(kn(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(n===0)return this;let i=Math.min(1,t/n);return this.slerp(e,i),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,t){let n=e._x,i=e._y,s=e._z,o=e._w,a=t._x,l=t._y,c=t._z,u=t._w;return this._x=n*u+o*a+i*c-s*l,this._y=i*u+o*l+s*a-n*c,this._z=s*u+o*c+n*l-i*a,this._w=o*u-n*a-i*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,i=this._y,s=this._z,o=this._w,a=o*e._w+n*e._x+i*e._y+s*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=o,this._x=n,this._y=i,this._z=s,this;let l=1-a*a;if(l<=Number.EPSILON){let p=1-t;return this._w=p*o+t*this._w,this._x=p*n+t*this._x,this._y=p*i+t*this._y,this._z=p*s+t*this._z,this.normalize(),this}let c=Math.sqrt(l),u=Math.atan2(c,a),h=Math.sin((1-t)*u)/c,f=Math.sin(t*u)/c;return this._w=o*h+this._w*f,this._x=n*h+this._x*f,this._y=i*h+this._y*f,this._z=s*h+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}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}},oe=class r{constructor(e=0,t=0,n=0){r.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,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,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;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 this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,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,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.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,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Ym.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Ym.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,s=e.elements,o=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*o,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*o,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*o,this}applyQuaternion(e){let t=this.x,n=this.y,i=this.z,s=e.x,o=e.y,a=e.z,l=e.w,c=2*(o*i-a*n),u=2*(a*t-s*i),h=2*(s*n-o*t);return this.x=t+l*c+o*h-a*u,this.y=n+l*u+a*c-s*h,this.z=i+l*h+s*u-o*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,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,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}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}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,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,s=e.z,o=t.x,a=t.y,l=t.z;return this.x=i*l-s*a,this.y=s*o-n*l,this.z=n*a-i*o,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return df.copy(this).projectOnVector(e),this.sub(df)}reflect(e){return this.sub(df.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(kn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},df=new oe,Ym=new sn,ji=class{constructor(e=new oe(1/0,1/0,1/0),t=new oe(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.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,t){return t.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.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,zi),zi.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Al),tu.subVectors(this.max,Al),Go.subVectors(e.a,Al),Vo.subVectors(e.b,Al),zo.subVectors(e.c,Al),is.subVectors(Vo,Go),rs.subVectors(zo,Vo),Bs.subVectors(Go,zo);let t=[0,-is.z,is.y,0,-rs.z,rs.y,0,-Bs.z,Bs.y,is.z,0,-is.x,rs.z,0,-rs.x,Bs.z,0,-Bs.x,-is.y,is.x,0,-rs.y,rs.x,0,-Bs.y,Bs.x,0];return!pf(t,Go,Vo,zo,tu)||(t=[1,0,0,0,1,0,0,0,1],!pf(t,Go,Vo,zo,tu))?!1:(nu.crossVectors(is,rs),t=[nu.x,nu.y,nu.z],pf(t,Go,Vo,zo,tu))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,zi).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(zi).length()*.5),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:(Lr[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Lr[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Lr[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Lr[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Lr[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Lr[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Lr[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Lr[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Lr),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)}},Lr=[new oe,new oe,new oe,new oe,new oe,new oe,new oe,new oe],zi=new oe,eu=new ji,Go=new oe,Vo=new oe,zo=new oe,is=new oe,rs=new oe,Bs=new oe,Al=new oe,tu=new oe,nu=new oe,Gs=new oe;function pf(r,e,t,n,i){for(let s=0,o=r.length-3;s<=o;s+=3){Gs.fromArray(r,s);let a=i.x*Math.abs(Gs.x)+i.y*Math.abs(Gs.y)+i.z*Math.abs(Gs.z),l=e.dot(Gs),c=t.dot(Gs),u=n.dot(Gs);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>a)return!1}return!0}var ax=new ji,wl=new oe,mf=new oe,qi=class{constructor(e=new oe,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;t!==void 0?n.copy(t):ax.setFromPoints(e).getCenter(n);let i=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;wl.subVectors(e,this.center);let t=wl.lengthSq();if(t>this.radius*this.radius){let n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.addScaledVector(wl,i/n),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(mf.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(wl.copy(e.center).add(mf)),this.expandByPoint(wl.copy(e.center).sub(mf))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},Or=new oe,gf=new oe,iu=new oe,ss=new oe,vf=new oe,ru=new oe,yf=new oe,Ks=class{constructor(e=new oe,t=new oe(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Or)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Or.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Or.copy(this.origin).addScaledVector(this.direction,t),Or.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){gf.copy(e).add(t).multiplyScalar(.5),iu.copy(t).sub(e).normalize(),ss.copy(this.origin).sub(gf);let s=e.distanceTo(t)*.5,o=-this.direction.dot(iu),a=ss.dot(this.direction),l=-ss.dot(iu),c=ss.lengthSq(),u=Math.abs(1-o*o),h,f,p,g;if(u>0)if(h=o*l-a,f=o*a-l,g=s*u,h>=0)if(f>=-g)if(f<=g){let v=1/u;h*=v,f*=v,p=h*(h+o*f+2*a)+f*(o*h+f+2*l)+c}else f=s,h=Math.max(0,-(o*f+a)),p=-h*h+f*(f+2*l)+c;else f=-s,h=Math.max(0,-(o*f+a)),p=-h*h+f*(f+2*l)+c;else f<=-g?(h=Math.max(0,-(-o*s+a)),f=h>0?-s:Math.min(Math.max(-s,-l),s),p=-h*h+f*(f+2*l)+c):f<=g?(h=0,f=Math.min(Math.max(-s,-l),s),p=f*(f+2*l)+c):(h=Math.max(0,-(o*s+a)),f=h>0?s:Math.min(Math.max(-s,-l),s),p=-h*h+f*(f+2*l)+c);else f=o>0?-s:s,h=Math.max(0,-(o*f+a)),p=-h*h+f*(f+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,h),i&&i.copy(gf).addScaledVector(iu,f),p}intersectSphere(e,t){Or.subVectors(e.center,this.origin);let n=Or.dot(this.direction),i=Or.dot(Or)-n*n,s=e.radius*e.radius;if(i>s)return null;let o=Math.sqrt(s-i),a=n-o,l=n+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,s,o,a,l,c=1/this.direction.x,u=1/this.direction.y,h=1/this.direction.z,f=this.origin;return c>=0?(n=(e.min.x-f.x)*c,i=(e.max.x-f.x)*c):(n=(e.max.x-f.x)*c,i=(e.min.x-f.x)*c),u>=0?(s=(e.min.y-f.y)*u,o=(e.max.y-f.y)*u):(s=(e.max.y-f.y)*u,o=(e.min.y-f.y)*u),n>o||s>i||((s>n||isNaN(n))&&(n=s),(o=0?(a=(e.min.z-f.z)*h,l=(e.max.z-f.z)*h):(a=(e.max.z-f.z)*h,l=(e.min.z-f.z)*h),n>l||a>i)||((a>n||n!==n)&&(n=a),(l=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,Or)!==null}intersectTriangle(e,t,n,i,s){vf.subVectors(t,e),ru.subVectors(n,e),yf.crossVectors(vf,ru);let o=this.direction.dot(yf),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;ss.subVectors(this.origin,e);let l=a*this.direction.dot(ru.crossVectors(ss,ru));if(l<0)return null;let c=a*this.direction.dot(vf.cross(ss));if(c<0||l+c>o)return null;let u=-a*ss.dot(yf);return u<0?null:this.at(u/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},Ye=class r{constructor(e,t,n,i,s,o,a,l,c,u,h,f,p,g,v,d){r.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,o,a,l,c,u,h,f,p,g,v,d)}set(e,t,n,i,s,o,a,l,c,u,h,f,p,g,v,d){let m=this.elements;return m[0]=e,m[4]=t,m[8]=n,m[12]=i,m[1]=s,m[5]=o,m[9]=a,m[13]=l,m[2]=c,m[6]=u,m[10]=h,m[14]=f,m[3]=p,m[7]=g,m[11]=v,m[15]=d,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 r().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,i=1/Ho.setFromMatrixColumn(e,0).length(),s=1/Ho.setFromMatrixColumn(e,1).length(),o=1/Ho.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,i=e.y,s=e.z,o=Math.cos(n),a=Math.sin(n),l=Math.cos(i),c=Math.sin(i),u=Math.cos(s),h=Math.sin(s);if(e.order==="XYZ"){let f=o*u,p=o*h,g=a*u,v=a*h;t[0]=l*u,t[4]=-l*h,t[8]=c,t[1]=p+g*c,t[5]=f-v*c,t[9]=-a*l,t[2]=v-f*c,t[6]=g+p*c,t[10]=o*l}else if(e.order==="YXZ"){let f=l*u,p=l*h,g=c*u,v=c*h;t[0]=f+v*a,t[4]=g*a-p,t[8]=o*c,t[1]=o*h,t[5]=o*u,t[9]=-a,t[2]=p*a-g,t[6]=v+f*a,t[10]=o*l}else if(e.order==="ZXY"){let f=l*u,p=l*h,g=c*u,v=c*h;t[0]=f-v*a,t[4]=-o*h,t[8]=g+p*a,t[1]=p+g*a,t[5]=o*u,t[9]=v-f*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){let f=o*u,p=o*h,g=a*u,v=a*h;t[0]=l*u,t[4]=g*c-p,t[8]=f*c+v,t[1]=l*h,t[5]=v*c+f,t[9]=p*c-g,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){let f=o*l,p=o*c,g=a*l,v=a*c;t[0]=l*u,t[4]=v-f*h,t[8]=g*h+p,t[1]=h,t[5]=o*u,t[9]=-a*u,t[2]=-c*u,t[6]=p*h+g,t[10]=f-v*h}else if(e.order==="XZY"){let f=o*l,p=o*c,g=a*l,v=a*c;t[0]=l*u,t[4]=-h,t[8]=c*u,t[1]=f*h+v,t[5]=o*u,t[9]=p*h-g,t[2]=g*h-p,t[6]=a*u,t[10]=v*h+f}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(lx,e,cx)}lookAt(e,t,n){let i=this.elements;return mi.subVectors(e,t),mi.lengthSq()===0&&(mi.z=1),mi.normalize(),os.crossVectors(n,mi),os.lengthSq()===0&&(Math.abs(n.z)===1?mi.x+=1e-4:mi.z+=1e-4,mi.normalize(),os.crossVectors(n,mi)),os.normalize(),su.crossVectors(mi,os),i[0]=os.x,i[4]=su.x,i[8]=mi.x,i[1]=os.y,i[5]=su.y,i[9]=mi.y,i[2]=os.z,i[6]=su.z,i[10]=mi.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,s=this.elements,o=n[0],a=n[4],l=n[8],c=n[12],u=n[1],h=n[5],f=n[9],p=n[13],g=n[2],v=n[6],d=n[10],m=n[14],_=n[3],y=n[7],x=n[11],w=n[15],I=i[0],C=i[4],P=i[8],E=i[12],M=i[1],L=i[5],N=i[9],O=i[13],B=i[2],ie=i[6],$=i[10],te=i[14],W=i[3],ae=i[7],de=i[11],ye=i[15];return s[0]=o*I+a*M+l*B+c*W,s[4]=o*C+a*L+l*ie+c*ae,s[8]=o*P+a*N+l*$+c*de,s[12]=o*E+a*O+l*te+c*ye,s[1]=u*I+h*M+f*B+p*W,s[5]=u*C+h*L+f*ie+p*ae,s[9]=u*P+h*N+f*$+p*de,s[13]=u*E+h*O+f*te+p*ye,s[2]=g*I+v*M+d*B+m*W,s[6]=g*C+v*L+d*ie+m*ae,s[10]=g*P+v*N+d*$+m*de,s[14]=g*E+v*O+d*te+m*ye,s[3]=_*I+y*M+x*B+w*W,s[7]=_*C+y*L+x*ie+w*ae,s[11]=_*P+y*N+x*$+w*de,s[15]=_*E+y*O+x*te+w*ye,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],o=e[1],a=e[5],l=e[9],c=e[13],u=e[2],h=e[6],f=e[10],p=e[14],g=e[3],v=e[7],d=e[11],m=e[15];return g*(+s*l*h-i*c*h-s*a*f+n*c*f+i*a*p-n*l*p)+v*(+t*l*p-t*c*f+s*o*f-i*o*p+i*c*u-s*l*u)+d*(+t*c*h-t*a*p-s*o*h+n*o*p+s*a*u-n*c*u)+m*(-i*a*u-t*l*h+t*a*f+i*o*h-n*o*f+n*l*u)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],h=e[9],f=e[10],p=e[11],g=e[12],v=e[13],d=e[14],m=e[15],_=h*d*c-v*f*c+v*l*p-a*d*p-h*l*m+a*f*m,y=g*f*c-u*d*c-g*l*p+o*d*p+u*l*m-o*f*m,x=u*v*c-g*h*c+g*a*p-o*v*p-u*a*m+o*h*m,w=g*h*l-u*v*l-g*a*f+o*v*f+u*a*d-o*h*d,I=t*_+n*y+i*x+s*w;if(I===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let C=1/I;return e[0]=_*C,e[1]=(v*f*s-h*d*s-v*i*p+n*d*p+h*i*m-n*f*m)*C,e[2]=(a*d*s-v*l*s+v*i*c-n*d*c-a*i*m+n*l*m)*C,e[3]=(h*l*s-a*f*s-h*i*c+n*f*c+a*i*p-n*l*p)*C,e[4]=y*C,e[5]=(u*d*s-g*f*s+g*i*p-t*d*p-u*i*m+t*f*m)*C,e[6]=(g*l*s-o*d*s-g*i*c+t*d*c+o*i*m-t*l*m)*C,e[7]=(o*f*s-u*l*s+u*i*c-t*f*c-o*i*p+t*l*p)*C,e[8]=x*C,e[9]=(g*h*s-u*v*s-g*n*p+t*v*p+u*n*m-t*h*m)*C,e[10]=(o*v*s-g*a*s+g*n*c-t*v*c-o*n*m+t*a*m)*C,e[11]=(u*a*s-o*h*s-u*n*c+t*h*c+o*n*p-t*a*p)*C,e[12]=w*C,e[13]=(u*v*i-g*h*i+g*n*f-t*v*f-u*n*d+t*h*d)*C,e[14]=(g*a*i-o*v*i-g*n*l+t*v*l+o*n*d-t*a*d)*C,e[15]=(o*h*i-u*a*i+u*n*l-t*h*l-o*n*f+t*a*f)*C,this}scale(e){let t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?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,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),s=1-n,o=e.x,a=e.y,l=e.z,c=s*o,u=s*a;return this.set(c*o+n,c*a-i*l,c*l+i*a,0,c*a+i*l,u*a+n,u*l-i*o,0,c*l-i*a,u*l+i*o,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,o){return this.set(1,n,s,0,e,1,o,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,s=t._x,o=t._y,a=t._z,l=t._w,c=s+s,u=o+o,h=a+a,f=s*c,p=s*u,g=s*h,v=o*u,d=o*h,m=a*h,_=l*c,y=l*u,x=l*h,w=n.x,I=n.y,C=n.z;return i[0]=(1-(v+m))*w,i[1]=(p+x)*w,i[2]=(g-y)*w,i[3]=0,i[4]=(p-x)*I,i[5]=(1-(f+m))*I,i[6]=(d+_)*I,i[7]=0,i[8]=(g+y)*C,i[9]=(d-_)*C,i[10]=(1-(f+v))*C,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements,s=Ho.set(i[0],i[1],i[2]).length(),o=Ho.set(i[4],i[5],i[6]).length(),a=Ho.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],Hi.copy(this);let c=1/s,u=1/o,h=1/a;return Hi.elements[0]*=c,Hi.elements[1]*=c,Hi.elements[2]*=c,Hi.elements[4]*=u,Hi.elements[5]*=u,Hi.elements[6]*=u,Hi.elements[8]*=h,Hi.elements[9]*=h,Hi.elements[10]*=h,t.setFromRotationMatrix(Hi),n.x=s,n.y=o,n.z=a,this}makePerspective(e,t,n,i,s,o,a=zr){let l=this.elements,c=2*s/(t-e),u=2*s/(n-i),h=(t+e)/(t-e),f=(n+i)/(n-i),p,g;if(a===zr)p=-(o+s)/(o-s),g=-2*o*s/(o-s);else if(a===ku)p=-o/(o-s),g=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return l[0]=c,l[4]=0,l[8]=h,l[12]=0,l[1]=0,l[5]=u,l[9]=f,l[13]=0,l[2]=0,l[6]=0,l[10]=p,l[14]=g,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,i,s,o,a=zr){let l=this.elements,c=1/(t-e),u=1/(n-i),h=1/(o-s),f=(t+e)*c,p=(n+i)*u,g,v;if(a===zr)g=(o+s)*h,v=-2*h;else if(a===ku)g=s*h,v=-1*h;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-f,l[1]=0,l[5]=2*u,l[9]=0,l[13]=-p,l[2]=0,l[6]=0,l[10]=v,l[14]=-g,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}},Ho=new oe,Hi=new Ye,lx=new oe(0,0,0),cx=new oe(1,1,1),os=new oe,su=new oe,mi=new oe,Km=new Ye,Zm=new sn,hn=class r{constructor(e=0,t=0,n=0,i=r.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}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,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(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,t=this._order,n=!0){let i=e.elements,s=i[0],o=i[4],a=i[8],l=i[1],c=i[5],u=i[9],h=i[2],f=i[6],p=i[10];switch(t){case"XYZ":this._y=Math.asin(kn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,p),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-kn(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-h,s),this._z=0);break;case"ZXY":this._x=Math.asin(kn(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-h,p),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-kn(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(f,p),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(kn(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-h,s)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-kn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-u,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Km.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Km,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Zm.setFromEuler(this),this.setFromQuaternion(Zm,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=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+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}};hn.DEFAULT_ORDER="XYZ";var Bl=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),i.maxGeometryCount=this._maxGeometryCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(e),this.boundingSphere!==null&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),this.boundingBox!==null&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()}));function s(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(e.geometries,this.geometry);let a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){let l=a.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(n.geometries=a),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),u.length>0&&(n.images=u),h.length>0&&(n.shapes=h),f.length>0&&(n.skeletons=f),p.length>0&&(n.animations=p),g.length>0&&(n.nodes=g)}return n.object=i,n;function o(a){let l=[];for(let c in a){let u=a[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(e,t,n,i,s){Wi.subVectors(i,t),Fr.subVectors(n,t),_f.subVectors(e,t);let o=Wi.dot(Wi),a=Wi.dot(Fr),l=Wi.dot(_f),c=Fr.dot(Fr),u=Fr.dot(_f),h=o*c-a*a;if(h===0)return s.set(0,0,0),null;let f=1/h,p=(c*l-a*u)*f,g=(o*u-a*l)*f;return s.set(1-p-g,g,p)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,Ur)===null?!1:Ur.x>=0&&Ur.y>=0&&Ur.x+Ur.y<=1}static getInterpolation(e,t,n,i,s,o,a,l){return this.getBarycoord(e,t,n,i,Ur)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Ur.x),l.addScaledVector(o,Ur.y),l.addScaledVector(a,Ur.z),l)}static isFrontFacing(e,t,n,i){return Wi.subVectors(n,t),Fr.subVectors(e,t),Wi.cross(Fr).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Wi.subVectors(this.c,this.b),Fr.subVectors(this.a,this.b),Wi.cross(Fr).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return r.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return r.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,s){return r.getInterpolation(e,this.a,this.b,this.c,t,n,i,s)}containsPoint(e){return r.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return r.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n=this.a,i=this.b,s=this.c,o,a;jo.subVectors(i,n),qo.subVectors(s,n),Tf.subVectors(e,n);let l=jo.dot(Tf),c=qo.dot(Tf);if(l<=0&&c<=0)return t.copy(n);Mf.subVectors(e,i);let u=jo.dot(Mf),h=qo.dot(Mf);if(u>=0&&h<=u)return t.copy(i);let f=l*h-u*c;if(f<=0&&l>=0&&u<=0)return o=l/(l-u),t.copy(n).addScaledVector(jo,o);Ef.subVectors(e,s);let p=jo.dot(Ef),g=qo.dot(Ef);if(g>=0&&p<=g)return t.copy(s);let v=p*c-l*g;if(v<=0&&c>=0&&g<=0)return a=c/(c-g),t.copy(n).addScaledVector(qo,a);let d=u*g-p*h;if(d<=0&&h-u>=0&&p-g>=0)return ng.subVectors(s,i),a=(h-u)/(h-u+(p-g)),t.copy(i).addScaledVector(ng,a);let m=1/(d+v+f);return o=v*m,a=f*m,t.copy(n).addScaledVector(jo,o).addScaledVector(qo,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},d0={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},as={h:0,s:0,l:0},au={h:0,s:0,l:0};function bf(r,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+(e-r)*6*t:t<1/2?e:t<2/3?r+(e-r)*6*(2/3-t):r}var Ve=class{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){let i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=jt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Bt.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=Bt.workingColorSpace){return this.r=e,this.g=t,this.b=n,Bt.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=Bt.workingColorSpace){if(e=Rd(e,1),t=kn(t,0,1),n=kn(n,0,1),t===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+t):n+t-n*t,o=2*n-s;this.r=bf(o,s,e+1/3),this.g=bf(o,s,e),this.b=bf(o,s,e-1/3)}return Bt.toWorkingColorSpace(this,i),this}setStyle(e,t=jt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=i[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=jt){let n=d0[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=aa(e.r),this.g=aa(e.g),this.b=aa(e.b),this}copyLinearToSRGB(e){return this.r=hf(e.r),this.g=hf(e.g),this.b=hf(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=jt){return Bt.fromWorkingColorSpace(Hn.copy(this),e),Math.round(kn(Hn.r*255,0,255))*65536+Math.round(kn(Hn.g*255,0,255))*256+Math.round(kn(Hn.b*255,0,255))}getHexString(e=jt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Bt.workingColorSpace){Bt.fromWorkingColorSpace(Hn.copy(this),t);let n=Hn.r,i=Hn.g,s=Hn.b,o=Math.max(n,i,s),a=Math.min(n,i,s),l,c,u=(a+o)/2;if(a===o)l=0,c=0;else{let h=o-a;switch(c=u<=.5?h/(o+a):h/(2-o-a),o){case n:l=(i-s)/h+(i0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let i=this[t];if(i===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==ra&&(n.blending=this.blending),this.side!==wi&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Hf&&(n.blendSrc=this.blendSrc),this.blendDst!==Wf&&(n.blendDst=this.blendDst),this.blendEquation!==js&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Pu&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Vm&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ko&&(n.stencilFail=this.stencilFail),this.stencilZFail!==ko&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==ko&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(s){let o=[];for(let a in s){let l=s[a];delete l.metadata,o.push(l)}return o}if(t){let s=i(e.textures),o=i(e.images);s.length>0&&(n.textures=s),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(t!==null){let i=t.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}},Ci=class extends Yi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ve(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new hn,this.combine=oh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}};var _n=new oe,lu=new Ce,Gn=class{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=zm,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=Vr,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return ix("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,s=this.itemSize;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let l in n){let c=n[l];e.data.attributes[l]=c.toJSON(e.data)}let i={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],u=[];for(let h=0,f=c.length;h0&&(i[l]=u,s=!0)}s&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let i=e.attributes;for(let c in i){let u=i[c];this.setAttribute(c,u.clone(t))}let s=e.morphAttributes;for(let c in s){let u=[],h=s[c];for(let f=0,p=h.length;f0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s(e.far-e.near)**2))&&(ig.copy(s).invert(),Vs.copy(e.ray).applyMatrix4(ig),!(n.boundingBox!==null&&Vs.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Vs)))}_computeIntersections(e,t,n){let i,s=this.geometry,o=this.material,a=s.index,l=s.attributes.position,c=s.attributes.uv,u=s.attributes.uv1,h=s.attributes.normal,f=s.groups,p=s.drawRange;if(a!==null)if(Array.isArray(o))for(let g=0,v=f.length;gt.far?null:{distance:c,point:mu.clone(),object:r}}function gu(r,e,t,n,i,s,o,a,l,c){r.getVertexPosition(a,Ko),r.getVertexPosition(l,Zo),r.getVertexPosition(c,Jo);let u=gx(r,e,t,n,Ko,Zo,Jo,pu);if(u){i&&(hu.fromBufferAttribute(i,a),fu.fromBufferAttribute(i,l),du.fromBufferAttribute(i,c),u.uv=Ys.getInterpolation(pu,Ko,Zo,Jo,hu,fu,du,new Ce)),s&&(hu.fromBufferAttribute(s,a),fu.fromBufferAttribute(s,l),du.fromBufferAttribute(s,c),u.uv1=Ys.getInterpolation(pu,Ko,Zo,Jo,hu,fu,du,new Ce)),o&&(sg.fromBufferAttribute(o,a),og.fromBufferAttribute(o,l),ag.fromBufferAttribute(o,c),u.normal=Ys.getInterpolation(pu,Ko,Zo,Jo,sg,og,ag,new oe),u.normal.dot(n.direction)>0&&u.normal.multiplyScalar(-1));let h={a,b:l,c,normal:new oe,materialIndex:0};Ys.getNormal(Ko,Zo,Jo,h.normal),u.face=h}return u}var Zs=class r extends St{constructor(e=1,t=1,n=1,i=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:o};let a=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o);let l=[],c=[],u=[],h=[],f=0,p=0;g("z","y","x",-1,-1,n,t,e,o,s,0),g("z","y","x",1,-1,n,t,-e,o,s,1),g("x","z","y",1,1,e,n,t,i,o,2),g("x","z","y",1,-1,e,n,-t,i,o,3),g("x","y","z",1,-1,e,t,n,i,s,4),g("x","y","z",-1,-1,e,t,-n,i,s,5),this.setIndex(l),this.setAttribute("position",new ze(c,3)),this.setAttribute("normal",new ze(u,3)),this.setAttribute("uv",new ze(h,2));function g(v,d,m,_,y,x,w,I,C,P,E){let M=x/C,L=w/P,N=x/2,O=w/2,B=I/2,ie=C+1,$=P+1,te=0,W=0,ae=new oe;for(let de=0;de<$;de++){let ye=de*L-O;for(let Me=0;Me0?1:-1,u.push(ae.x,ae.y,ae.z),h.push(Me/C),h.push(1-de/P),te+=1}}for(let de=0;de{if(vu!==null){e(new Worker(vu));return}let n="https://cdn.jsdelivr.net/npm/occt-import-js@0.0.22/dist/";fetch(n+"occt-import-js-worker.js").then(i=>i.ok?i.text():t()).then(i=>{i=i.replace("occt-import-js.js",n+"occt-import-js.js"),i=i.replace("return path","return '"+n+"occt-import-js.wasm'");let s=new Blob([i],{type:"text/javascript"});return vu=URL.createObjectURL(s),e(new Worker(vu))}).catch(t)})}function _r(r){return r==="rhino3dm"?Ho("https://cdn.jsdelivr.net/npm/rhino3dm@8.17.0/rhino3dm.min.js"):r==="webifc"?Ho("https://cdn.jsdelivr.net/npm/web-ifc@0.0.68/web-ifc-api-iife.js"):r==="draco3d"?Ho("https://cdn.jsdelivr.net/npm/draco3d@1.5.7/draco_decoder_nodejs.min.js"):null}var Ki={Url:1,File:2,Decompressed:3},dn={Text:1,Binary:2};function Rn(r){let e=r,t=e.indexOf("?");t!==-1&&(e=e.substring(0,t));let n=e.lastIndexOf("/");return n===-1&&(n=e.lastIndexOf("\\")),n!==-1&&(e=e.substring(n+1)),decodeURI(e)}function Tr(r){let e=Rn(r),t=e.lastIndexOf(".");return t===-1?"":e.substring(t+1).toLowerCase()}function _u(r,e){return new Promise((t,n)=>{let i=new XMLHttpRequest;i.open("GET",r,!0),i.onprogress=s=>{e(s.loaded,s.total)},i.onload=()=>{i.status===200?t(i.response):n()},i.onerror=()=>{n()},i.responseType="arraybuffer",i.send(null)})}function Tu(r,e){return new Promise((t,n)=>{let i=new FileReader;i.onprogress=s=>{e(s.loaded,s.total)},i.onloadend=s=>{s.target.readyState===FileReader.DONE&&t(s.target.result)},i.onerror=()=>{n()},i.readAsArrayBuffer(r)})}function Mu(r){for(let e=0;e0&&this.MultiplyScalar(1/e),this}Offset(e,t){let n=e.Clone().Normalize();return this.x+=n.x*t,this.y+=n.y*t,this.z+=n.z*t,this}Rotate(e,t,n){let i=e.Clone().Normalize(),s=i.x,o=i.y,a=i.z,l=this.x-n.x,c=this.y-n.y,u=this.z-n.z,h=Math.sin(t),f=Math.cos(t);return this.x=-s*(-s*l-o*c-a*u)*(1-f)+l*f+(-a*c+o*u)*h,this.y=-o*(-s*l-o*c-a*u)*(1-f)+c*f+(a*l-s*u)*h,this.z=-a*(-s*l-o*c-a*u)*(1-f)+u*f+(-o*l+s*c)*h,this.x+=n.x,this.y+=n.y,this.z+=n.z,this}Clone(){return new r(this.x,this.y,this.z)}};function bi(r,e){return Ut(r.x,e.x)&&Ut(r.y,e.y)&&Ut(r.z,e.z)}function Eu(r,e){return new Ye(r.x+e.x,r.y+e.y,r.z+e.z)}function Un(r,e){return new Ye(r.x-e.x,r.y-e.y,r.z-e.z)}function ni(r,e){return Math.sqrt((r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y)+(r.z-e.z)*(r.z-e.z))}function Nl(r,e){return r.x*e.x+r.y*e.y+r.z*e.z}function bu(r,e){let t=r.Clone().Normalize(),n=e.Clone().Normalize();if(bi(t,n))return 0;let i=Nl(t,n);return Math.acos(i)}function Zi(r,e){let t=new Ye(0,0,0);return t.x=r.y*e.z-r.z*e.y,t.y=r.z*e.x-r.x*e.z,t.z=r.x*e.y-r.y*e.x,t}function Xo(r,e,t){return Math.sqrt(r*r+e*e+t*t)}function Ui(r){return new Ye(r[0],r[1],r[2])}var Ll=class{constructor(){this.indices=[],this.vertices=[],this.colors=[],this.normals=[],this.uvs=[],this.material=null}GetBounds(){let e=[1/0,1/0,1/0],t=[-1/0,-1/0,-1/0];for(let n=0;n0,v=y.TextureUVCount()>0,x=y.GetVertex(d.vertex),S=y.GetNormal(d.normal),I=m.vertices.length/3;m.indices.push(I),m.vertices.push(x.x,x.y,x.z);let A=h(y,d.color,_);A!==null&&m.colors.push(A.r/255,A.g/255,A.b/255),m.normals.push(S.x,S.y,S.z);let C=f(y,d.uv,v);return C!==null&&m.uvs.push(C.x,C.y),{index:I,color:A,normal:S,uv:C}}function g(y,d,m){function _(S,I,A){if(A===null&&I===null)return!0;let C=h(S,I,!0);return Vr(A,C)}function v(S,I,A){let C=S.GetNormal(I);return bi(A,C)}function x(S,I,A){if(A===null&&I===null)return!0;let C=f(S,I,!0);return ji(A,C)}for(let S=0;S{let c=r.GetTriangle(a),u=r.GetTriangle(l);return c.mat-u.mat});let s=null,o=null;for(let a=0;a{n(i)})}ExportContent(e,t,n,i){}GetExportedMaterialName(e){return this.GetExportedName(e,nt("Material"))}GetExportedMeshName(e){return this.GetExportedName(e,nt("Mesh"))}GetExportedName(e,t){return e.length===0?t:e}};var Yo=class extends kn{constructor(){super(),this.rhino=null}CanExport(e,t){return e===dn.Binary&&t==="3dm"}ExportContent(e,t,n,i){this.rhino===null?_r("rhino3dm").then(()=>{rhino3dm().then(s=>{this.rhino=s,this.ExportRhinoContent(e,n,i)})}).catch(()=>{i()}):this.ExportRhinoContent(e,n,i)}ExportRhinoContent(e,t,n){function i(c){return{r:c.r,g:c.g,b:c.b,a:255}}let s=new sn("model.3dm");t.push(s);let o=new this.rhino.File3dm;e.EnumerateTransformedMeshInstances(c=>{let u=qo(c);for(let h=0;h{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Ko=class extends kn{constructor(){super()}CanExport(e,t){return e===dn.Text&&t==="bim"}ExportContent(e,t,n,i){let s={schema_version:"1.1.0",meshes:[],elements:[],info:{}};this.ExportProperties(e.GetModel(),s.info);let o=0;e.EnumerateTransformedMeshInstances(l=>{let c={mesh_id:o,coordinates:[],indices:[]};l.EnumerateVertices(g=>{c.coordinates.push(g.x,g.y,g.z)}),l.EnumerateTriangleVertexIndices((g,y,d)=>{c.indices.push(g,y,d)});let u={mesh_id:o,type:"Other",color:{r:200,g:200,b:200,a:255},vector:{x:0,y:0,z:0},rotation:{qx:0,qy:0,qz:0,qw:1},guid:Wx(),info:{}},h=null,f=!0,p=[];for(let g=0;g=this.arrayBuffer.byteLength}GetBuffer(){return this.arrayBuffer}WriteArrayBuffer(e){let t=new Uint8Array(e);new Uint8Array(this.arrayBuffer).set(t,this.position),this.position+=e.byteLength}WriteBoolean8(e){this.dataView.setInt8(this.position,e?1:0),this.position=this.position+1}WriteCharacter8(e){this.dataView.setInt8(this.position,e),this.position=this.position+1}WriteUnsignedCharacter8(e){this.dataView.setUint8(this.position,e),this.position=this.position+1}WriteInteger16(e){this.dataView.setInt16(this.position,e,this.isLittleEndian),this.position=this.position+2}WriteUnsignedInteger16(e){this.dataView.setUint16(this.position,e,this.isLittleEndian),this.position=this.position+2}WriteInteger32(e){this.dataView.setInt32(this.position,e,this.isLittleEndian),this.position=this.position+4}WriteUnsignedInteger32(e){this.dataView.setUint32(this.position,e,this.isLittleEndian),this.position=this.position+4}WriteFloat32(e){this.dataView.setFloat32(this.position,e,this.isLittleEndian),this.position=this.position+4}WriteDouble64(e){this.dataView.setFloat64(this.position,e,this.isLittleEndian),this.position=this.position+8}};var $i=class r{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.w=i}Clone(){return new r(this.x,this.y,this.z,this.w)}};var ii=class{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.w=i}};function pg(r,e){return Ut(r.x,e.x)&&Ut(r.y,e.y)&&Ut(r.z,e.z)&&Ut(r.w,e.w)}function Zo(r){return new ii(r[0],r[1],r[2],r[3])}function Cu(r,e){let t=e/2,n=Math.sin(t);return new ii(r.x*n,r.y*n,r.z*n,Math.cos(t))}function mg(r,e,t,n){let i=Math.cos(r/2),s=Math.cos(e/2),o=Math.cos(t/2),a=Math.sin(r/2),l=Math.sin(e/2),c=Math.sin(t/2),u=new ii(0,0,0,1);if(n==="XYZ")u.x=a*s*o+i*l*c,u.y=i*l*o-a*s*c,u.z=i*s*c+a*l*o,u.w=i*s*o-a*l*c;else if(n==="YXZ")u.x=a*s*o+i*l*c,u.y=i*l*o-a*s*c,u.z=i*s*c-a*l*o,u.w=i*s*o+a*l*c;else if(n==="ZXY")u.x=a*s*o-i*l*c,u.y=i*l*o+a*s*c,u.z=i*s*c+a*l*o,u.w=i*s*o-a*l*c;else if(n==="ZYX")u.x=a*s*o-i*l*c,u.y=i*l*o+a*s*c,u.z=i*s*c-a*l*o,u.w=i*s*o+a*l*c;else if(n==="YZX")u.x=a*s*o+i*l*c,u.y=i*l*o+a*s*c,u.z=i*s*c-a*l*o,u.w=i*s*o-a*l*c;else if(n==="XZY")u.x=a*s*o-i*l*c,u.y=i*l*o-a*s*c,u.z=i*s*c+a*l*o,u.w=i*s*o+a*l*c;else return null;return u}var xn=class r{constructor(e){this.matrix=null,e!=null&&(this.matrix=e)}IsValid(){return this.matrix!==null}Set(e){return this.matrix=e,this}Get(){return this.matrix}Clone(){let e=[this.matrix[0],this.matrix[1],this.matrix[2],this.matrix[3],this.matrix[4],this.matrix[5],this.matrix[6],this.matrix[7],this.matrix[8],this.matrix[9],this.matrix[10],this.matrix[11],this.matrix[12],this.matrix[13],this.matrix[14],this.matrix[15]];return new r(e)}CreateIdentity(){return this.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this}IsIdentity(){let e=new r().CreateIdentity().Get();for(let t=0;t<16;t++)if(!Ut(this.matrix[t],e[t]))return!1;return!0}CreateTranslation(e,t,n){return this.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,e,t,n,1],this}CreateRotation(e,t,n,i){let s=e+e,o=t+t,a=n+n,l=e*s,c=e*o,u=e*a,h=t*o,f=t*a,p=n*a,g=i*s,y=i*o,d=i*a;return this.matrix=[1-(h+p),c+d,u-y,0,c-d,1-(l+p),f+g,0,u+y,f-g,1-(l+h),0,0,0,0,1],this}CreateRotationAxisAngle(e,t){let n=Cu(e,t);return this.CreateRotation(n.x,n.y,n.z,n.w)}CreateScale(e,t,n){return this.matrix=[e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1],this}ComposeTRS(e,t,n){let i=e.x,s=e.y,o=e.z,a=t.x,l=t.y,c=t.z,u=t.w,h=n.x,f=n.y,p=n.z,g=a+a,y=l+l,d=c+c,m=a*g,_=a*y,v=a*d,x=l*y,S=l*d,I=c*d,A=u*g,C=u*y,E=u*d;return this.matrix=[(1-(x+I))*h,(_+E)*h,(v-C)*h,0,(_-E)*f,(1-(m+I))*f,(S+A)*f,0,(v+C)*p,(S-A)*p,(1-(m+x))*p,0,i,s,o,1],this}DecomposeTRS(){let e=new Ye(this.matrix[12],this.matrix[13],this.matrix[14]),t=Xo(this.matrix[0],this.matrix[1],this.matrix[2]),n=Xo(this.matrix[4],this.matrix[5],this.matrix[6]),i=Xo(this.matrix[8],this.matrix[9],this.matrix[10]),s=this.Determinant();Br(s)&&(t*=-1);let o=new Ye(t,n,i),a=this.matrix[0]/t,l=this.matrix[4]/n,c=this.matrix[8]/i,u=this.matrix[1]/t,h=this.matrix[5]/n,f=this.matrix[9]/i,p=this.matrix[2]/t,g=this.matrix[6]/n,y=this.matrix[10]/i,d=null,m=a+h+y;if(m>0){let _=Math.sqrt(m+1)*2;d=new ii((g-f)/_,(c-p)/_,(u-l)/_,.25*_)}else if(a>h&&a>y){let _=Math.sqrt(1+a-h-y)*2;d=new ii(.25*_,(l+u)/_,(c+p)/_,(g-f)/_)}else if(h>y){let _=Math.sqrt(1+h-a-y)*2;d=new ii((l+u)/_,.25*_,(f+g)/_,(c-p)/_)}else{let _=Math.sqrt(1+y-a-h)*2;d=new ii((c+p)/_,(f+g)/_,.25*_,(u-l)/_)}return{translation:e,rotation:d,scale:o}}Determinant(){let e=this.matrix[0],t=this.matrix[1],n=this.matrix[2],i=this.matrix[3],s=this.matrix[4],o=this.matrix[5],a=this.matrix[6],l=this.matrix[7],c=this.matrix[8],u=this.matrix[9],h=this.matrix[10],f=this.matrix[11],p=this.matrix[12],g=this.matrix[13],y=this.matrix[14],d=this.matrix[15],m=e*o-t*s,_=e*a-n*s,v=e*l-i*s,x=t*a-n*o,S=t*l-i*o,I=n*l-i*a,A=c*g-u*p,C=c*y-h*p,E=c*d-f*p,b=u*y-h*g,R=u*d-f*g,N=h*d-f*y;return m*N-_*R+v*b+x*E-S*C+I*A}Invert(){let e=this.matrix[0],t=this.matrix[1],n=this.matrix[2],i=this.matrix[3],s=this.matrix[4],o=this.matrix[5],a=this.matrix[6],l=this.matrix[7],c=this.matrix[8],u=this.matrix[9],h=this.matrix[10],f=this.matrix[11],p=this.matrix[12],g=this.matrix[13],y=this.matrix[14],d=this.matrix[15],m=e*o-t*s,_=e*a-n*s,v=e*l-i*s,x=t*a-n*o,S=t*l-i*o,I=n*l-i*a,A=c*g-u*p,C=c*y-h*p,E=c*d-f*p,b=u*y-h*g,R=u*d-f*g,N=h*d-f*y,B=m*N-_*R+v*b+x*E-S*C+I*A;if(Ut(B,0))return null;let V=[(o*N-a*R+l*b)/B,(n*R-t*N-i*b)/B,(g*I-y*S+d*x)/B,(h*S-u*I-f*x)/B,(a*E-s*N-l*C)/B,(e*N-n*E+i*C)/B,(y*v-p*I-d*_)/B,(c*I-h*v+f*_)/B,(s*R-o*E+l*A)/B,(t*E-e*R-i*A)/B,(p*S-g*v+d*m)/B,(u*v-c*S-f*m)/B,(o*C-s*b-a*A)/B,(e*b-t*C+n*A)/B,(g*_-p*x-y*m)/B,(c*x-u*_+h*m)/B];return new r(V)}Transpose(){let e=[this.matrix[0],this.matrix[4],this.matrix[8],this.matrix[12],this.matrix[1],this.matrix[5],this.matrix[9],this.matrix[13],this.matrix[2],this.matrix[6],this.matrix[10],this.matrix[14],this.matrix[3],this.matrix[7],this.matrix[11],this.matrix[15]];return new r(e)}InvertTranspose(){let e=this.Invert();return e===null?null:e.Transpose()}MultiplyVector(e){let t=e.x,n=e.y,i=e.z,s=e.w,o=this.matrix[0],a=this.matrix[1],l=this.matrix[2],c=this.matrix[3],u=this.matrix[4],h=this.matrix[5],f=this.matrix[6],p=this.matrix[7],g=this.matrix[8],y=this.matrix[9],d=this.matrix[10],m=this.matrix[11],_=this.matrix[12],v=this.matrix[13],x=this.matrix[14],S=this.matrix[15];return new $i(t*o+n*u+i*g+s*_,t*a+n*h+i*y+s*v,t*l+n*f+i*d+s*x,t*c+n*p+i*m+s*S)}MultiplyMatrix(e){let t=this.matrix[0],n=this.matrix[1],i=this.matrix[2],s=this.matrix[3],o=this.matrix[4],a=this.matrix[5],l=this.matrix[6],c=this.matrix[7],u=this.matrix[8],h=this.matrix[9],f=this.matrix[10],p=this.matrix[11],g=this.matrix[12],y=this.matrix[13],d=this.matrix[14],m=this.matrix[15],_=e.matrix[0],v=e.matrix[1],x=e.matrix[2],S=e.matrix[3],I=e.matrix[4],A=e.matrix[5],C=e.matrix[6],E=e.matrix[7],b=e.matrix[8],R=e.matrix[9],N=e.matrix[10],B=e.matrix[11],V=e.matrix[12],ie=e.matrix[13],Y=e.matrix[14],te=e.matrix[15],q=[t*_+n*I+i*b+s*V,t*v+n*A+i*R+s*ie,t*x+n*C+i*N+s*Y,t*S+n*E+i*B+s*te,o*_+a*I+l*b+c*V,o*v+a*A+l*R+c*ie,o*x+a*C+l*N+c*Y,o*S+a*E+l*B+c*te,u*_+h*I+f*b+p*V,u*v+h*A+f*R+p*ie,u*x+h*C+f*N+p*Y,u*S+h*E+f*B+p*te,g*_+y*I+d*b+m*V,g*v+y*A+d*R+m*ie,g*x+y*C+d*N+m*Y,g*S+y*E+d*B+m*te];return new r(q)}};function Iu(r,e){let t=r.Get(),n=e.Get();for(let i=0;i<16;i++)if(!Ut(t[i],n[i]))return!1;return!0}var pn=class r{constructor(e){e!=null?this.matrix=e:(this.matrix=new xn,this.matrix.CreateIdentity())}SetMatrix(e){return this.matrix=e,this}GetMatrix(){return this.matrix}IsIdentity(){return this.matrix.IsIdentity()}AppendMatrix(e){return this.matrix=this.matrix.MultiplyMatrix(e),this}Append(e){return this.AppendMatrix(e.GetMatrix()),this}TransformCoord3D(e){let t=new $i(e.x,e.y,e.z,1),n=this.matrix.MultiplyVector(t);return new Ye(n.x,n.y,n.z)}Clone(){let e=this.matrix.Clone();return new r(e)}};function gg(r,e){return Iu(r.GetMatrix(),e.GetMatrix())}function vs(r){return r.LineCount()===0&&r.TriangleCount()===0}function Ys(r,e,t){let n=Un(e,r),i=Un(t,r),s=Zi(n,i);return s.Normalize(),s}function Mr(r,e){if(!e.IsIdentity()){for(let t=0;t0){let t=e.GetMatrix().InvertTranspose();if(t!==null){let n=new pn(t);for(let i=0;i{let i=t.TransformCoord3D(n);e(i)})}EnumerateTriangleVertexIndices(e){this.mesh.EnumerateTriangleVertexIndices(e)}EnumerateTriangleVertices(e){let t=this.node.GetWorldTransformation();t.IsIdentity()?this.mesh.EnumerateTriangleVertices(e):this.mesh.EnumerateTriangleVertices((n,i,s)=>{let o=t.TransformCoord3D(n),a=t.TransformCoord3D(i),l=t.TransformCoord3D(s);e(o,a,l)})}PropertyGroupCount(){return this.mesh.PropertyGroupCount()}AddPropertyGroup(e){return this.mesh.AddPropertyGroup(e)}GetPropertyGroup(e){return this.mesh.GetPropertyGroup(e)}GetTransformedMesh(){let e=this.node.GetWorldTransformation(),t=this.mesh.Clone();return Mr(t,e),t}};var yg={UNSIGNED_INT:5125,FLOAT:5126},Fl={ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963},Jo=class extends kn{constructor(){super(),this.components={index:{type:yg.UNSIGNED_INT,size:4},number:{type:yg.FLOAT,size:4}}}CanExport(e,t){return e===dn.Text&&t==="gltf"||e===dn.Binary&&t==="glb"}ExportContent(e,t,n,i){t===dn.Text?this.ExportAsciiContent(e,n):t===dn.Binary&&this.ExportBinaryContent(e,n),i()}ExportAsciiContent(e,t){let n=new sn("model.gltf"),i=new sn("model.bin");t.push(n),t.push(i);let s=this.GetMeshData(e),o=this.GetMainBuffer(s),a=this.GetMainJson(e,s);a.buffers.push({uri:i.GetName(),byteLength:o.byteLength});let l=new Map;this.ExportMaterials(e,a,c=>{let u=Rn(c.name);if(l.has(u))return l.get(u);{let h=new sn(u);h.SetBufferContent(c.buffer),t.push(h);let f=a.textures.length;return l.set(u,f),a.images.push({uri:u}),a.textures.push({source:f}),f}}),n.SetTextContent(JSON.stringify(a,null,4)),i.SetBufferContent(o)}ExportBinaryContent(e,t){function n(x){let S=x%4;return S===0?x:x+(4-S)}function i(x,S,I){for(let A=0;A{let S=Rn(x.name),I=Tr(x.name);if(h.has(S))return h.get(S);{let A=l.bufferViews.length,C=l.textures.length;h.set(S,C);let E=x.buffer;return c.push(E),l.bufferViews.push({buffer:0,byteOffset:u,byteLength:E.byteLength}),u+=E.byteLength,l.images.push({bufferView:A,mimeType:"image/"+I}),l.textures.push({source:C}),C}});let f=a.byteLength;for(let x=0;x{let i=qo(n);t.push({name:n.GetName(),buffer:i,offsets:[],sizes:[]})}),t}GetMainBuffer(e){let t=0;for(let i of e)t+=i.buffer.GetByteLength(this.components.index.size,this.components.number.size);let n=new Ji(t,!0);for(let i of e)for(let s=0;s0&&(g.name=y),p.GetTransformation().IsIdentity()||(g.matrix=p.GetTransformation().GetMatrix().Get()),f.push(g),h.push(f.length-1),g.children=[],a(u,g.children,f,p)}}function o(u,h,f,p,g,y){let d=new ki(p.GetId(),g);if(!u.IsMeshInstanceVisible(d))return;let m={mesh:u.MapMeshIndex(g)};y&&(p.GetTransformation().IsIdentity()||(m.matrix=p.GetTransformation().GetMatrix().Get())),f.push(m),h.push(f.length-1)}function a(u,h,f,p){for(let g of p.GetChildNodes())s(u,h,f,g);for(let g of p.GetMeshIndices())o(u,h,f,p,g,!1)}let l={asset:{generator:"https://3dviewer.net",version:"2.0"},scene:0,scenes:[{nodes:[]}],nodes:[],materials:[],meshes:[],buffers:[],bufferViews:[],accessors:[]},c=e.GetModel().GetRootNode();a(e,l.scenes[0].nodes,l.nodes,c);for(let u of t){let h={name:this.GetExportedMeshName(u.name),primitives:[]},f=u.buffer.primitives;for(let p=0;p0&&(_=y.AddBufferView(g.colors.length*this.components.number.size,Fl.ARRAY_BUFFER));let v=y.AddBufferView(g.normals.length*this.components.number.size,Fl.ARRAY_BUFFER),x=null;g.uvs.length>0&&(x=y.AddBufferView(g.uvs.length*this.components.number.size,Fl.ARRAY_BUFFER));let S={attributes:{},mode:4,material:g.material},I=g.GetBounds();l.accessors.push({bufferView:d,byteOffset:0,componentType:this.components.index.type,count:g.indices.length,type:"SCALAR"}),S.indices=l.accessors.length-1,l.accessors.push({bufferView:m,byteOffset:0,componentType:this.components.number.type,count:g.vertices.length/3,min:I.min,max:I.max,type:"VEC3"}),S.attributes.POSITION=l.accessors.length-1,_!==null&&(l.accessors.push({bufferView:_,byteOffset:0,componentType:this.components.number.type,count:g.colors.length/3,type:"VEC3"}),S.attributes.COLOR_0=l.accessors.length-1),l.accessors.push({bufferView:v,byteOffset:0,componentType:this.components.number.type,count:g.normals.length/3,type:"VEC3"}),S.attributes.NORMAL=l.accessors.length-1,x!==null&&(l.accessors.push({bufferView:x,byteOffset:0,componentType:this.components.number.type,count:g.uvs.length/2,type:"VEC2"}),S.attributes.TEXCOORD_0=l.accessors.length-1),h.primitives.push(S)}l.meshes.push(h)}return l}ExportMaterials(e,t,n){function i(s,o,a,l){function c(d,m){return[vr(d.r/255),vr(d.g/255),vr(d.b/255),m]}function u(d){return[vr(d.r/255),vr(d.g/255),vr(d.b/255)]}function h(d,m,_){if(m===null||!m.IsValid())return null;d.images===void 0&&(d.images=[]),d.textures===void 0&&(d.textures=[]);let x={index:_(m)};if(m.HasTransformation()){let S="KHR_texture_transform";d.extensionsUsed===void 0&&(d.extensionsUsed=[]),d.extensionsUsed.indexOf(S)===-1&&d.extensionsUsed.push(S),x.extensions={KHR_texture_transform:{offset:[m.offset.x,-m.offset.y],scale:[m.scale.x,m.scale.y],rotation:-m.rotation}}}return x}let f={name:s.GetExportedMaterialName(a.name),pbrMetallicRoughness:{baseColorFactor:c(a.color,a.opacity)},emissiveFactor:u(a.emissive),doubleSided:!0,alphaMode:"OPAQUE"};a.transparent&&(f.alphaMode="BLEND");let p=h(o,a.diffuseMap,l);if(p!==null&&(a.multiplyDiffuseMap||(f.pbrMetallicRoughness.baseColorFactor=c(new St(255,255,255),a.opacity)),f.pbrMetallicRoughness.baseColorTexture=p),a.type===Wn.Physical){let d=h(o,a.metalnessMap,l);d!==null?f.pbrMetallicRoughness.metallicRoughnessTexture=d:(f.pbrMetallicRoughness.metallicFactor=a.metalness,f.pbrMetallicRoughness.roughnessFactor=a.roughness)}let g=h(o,a.normalMap,l);g!==null&&(f.normalTexture=g);let y=h(o,a.emissiveMap,l);y!==null&&(f.emissiveTexture=y),o.materials.push(f)}for(let s=0;s!0,Fo(e,this)}},$o=class{constructor(e,t){this.model=e,this.settings=t||new Ul,this.visibleMeshes=null,this.meshToVisibleMeshIndex=null}GetModel(){return this.model}MaterialCount(){return this.model.MaterialCount()}GetMaterial(e){return this.model.GetMaterial(e)}VertexCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.VertexCount()}),e}TriangleCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.TriangleCount()}),e}MeshCount(){let e=0;return this.EnumerateMeshes(t=>{e+=1}),e}EnumerateMeshes(e){this.FillVisibleMeshCache();for(let t=0;t{e+=1}),e}EnumerateMeshInstances(e){this.model.EnumerateMeshInstances(t=>{this.settings.isMeshVisible(t.GetId())&&e(t)})}EnumerateTransformedMeshInstances(e){this.EnumerateMeshInstances(t=>{let n=t.GetTransformation();this.settings.transformation.IsIdentity()||n.Append(this.settings.transformation);let s=t.GetMesh().Clone();n.IsIdentity()||Mr(s,n),e(s)})}EnumerateVerticesAndTriangles(e){let t=[];this.EnumerateTransformedMeshInstances(i=>{t.push(i)});for(let i of t)i.EnumerateVertices(s=>{e.onVertex(s.x,s.y,s.z)});let n=0;for(let i of t)i.EnumerateTriangleVertexIndices((s,o,a)=>{e.onTriangle(s+n,o+n,a+n)}),n+=i.VertexCount()}EnumerateTrianglesWithNormals(e){this.EnumerateTransformedMeshInstances(t=>{t.EnumerateTriangleVertices((n,i,s)=>{let o=Ys(n,i,s);e(n,i,s,o)})})}FillVisibleMeshCache(){if(this.visibleMeshes!==null&&this.meshToVisibleMeshIndex!==null)return;this.visibleMeshes=new Set,this.model.EnumerateMeshInstances(t=>{let n=t.GetId();this.settings.isMeshVisible(n)&&this.visibleMeshes.add(n.meshIndex)}),this.meshToVisibleMeshIndex=new Map;let e=0;for(let t=0;tx.GetName()===_)===-1){let x=new sn(_);x.SetBufferContent(d.buffer),m.push(x)}}let o=new sn("model.mtl"),a=new sn("model.obj");n.push(o),n.push(a);let l=new mi;l.WriteLine(this.GetHeaderText());for(let g=0;g{c.WriteArrayLine(["g",this.GetExportedMeshName(g.GetName())]);for(let y=0;y{i.WriteArrayLine(["facet","normal",l.x,l.y,l.z]),i.Indent(1),i.WriteLine("outer loop"),i.Indent(1),i.WriteArrayLine(["vertex",s.x,s.y,s.z]),i.WriteArrayLine(["vertex",o.x,o.y,o.z]),i.WriteArrayLine(["vertex",a.x,a.y,a.z]),i.Indent(-1),i.WriteLine("endloop"),i.Indent(-1),i.WriteLine("endfacet")}),i.WriteLine("endsolid Model"),n.SetTextContent(i.GetText())}ExportBinary(e,t){let n=new sn("model.stl");t.push(n);let i=e.TriangleCount(),s=80,o=s+4+i*50,a=new Ji(o,!0);for(let l=0;l{a.WriteFloat32(h.x),a.WriteFloat32(h.y),a.WriteFloat32(h.z),a.WriteFloat32(l.x),a.WriteFloat32(l.y),a.WriteFloat32(l.z),a.WriteFloat32(c.x),a.WriteFloat32(c.y),a.WriteFloat32(c.z),a.WriteFloat32(u.x),a.WriteFloat32(u.y),a.WriteFloat32(u.z),a.WriteUnsignedInteger16(0)}),n.SetBufferContent(a.GetBuffer())}};var Pu=class{constructor(){this.exporters=[new Qo,new na,new ta,new ea,new Jo,new Yo,new Ko]}AddExporter(e){this.exporters.push(e)}Export(e,t,n,i,s){let o=null;for(let l=0;l{l.length===0?s.onError():s.onSuccess(l)})}};var Ks=class{constructor(e,t){this.min=e,this.max=t}GetMin(){return this.min}GetMax(){return this.max}GetCenter(){return new Ye((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,(this.min.z+this.max.z)/2)}},ia=class{constructor(){this.box=new Ks(new Ye(1/0,1/0,1/0),new Ye(-1/0,-1/0,-1/0)),this.isValid=!1}GetBox(){return this.isValid?this.box:null}AddPoint(e){this.box.min.x=Math.min(this.box.min.x,e.x),this.box.min.y=Math.min(this.box.min.y,e.y),this.box.min.z=Math.min(this.box.min.z,e.z),this.box.max.x=Math.max(this.box.max.x,e.x),this.box.max.y=Math.max(this.box.max.y,e.y),this.box.max.z=Math.max(this.box.max.z,e.z),this.isValid=!0}};var ra=class r{constructor(e,t){this.beg=e,this.end=t}Clone(){return new r(this.beg,this.end)}};function md(r,e){let t=ms(r.end,r.beg),n=ms(e,r.beg),i=Rl(t,n),s=Rl(t,t);if(kr(s))return r.beg.Clone();let o=i/s;return o=Math.max(0,Math.min(1,o)),new Nt(r.beg.x+o*t.x,r.beg.y+o*t.y)}function Nu(r,e){let t=md(r,e);return Hs(t,e)}var kl=class r{constructor(e,t){this.boundingBox=e,this.level=t,this.pointItems=[],this.childNodes=[]}AddPoint(e,t,n){let i=this.FindNodeForPoint(e);if(i===null||i.FindPointDirectly(e)!==null)return!1;if(i.pointItems.length=n.maxTreeDepth)return i.AddPointDirectly(e,t),!0;{i.CreateChildNodes();let s=i.pointItems;i.pointItems=[];for(let o=0;o{e.onFileListProgress(t,this.files.length),this.GetFileContent(this.files[t],{onReady:n,onProgress:e.onFileLoadProgress})},onReady:e.onReady})}ContainsFileByPath(e){return this.FindFileByPath(e)!==null}FindFileByPath(e){let t=Rn(e).toLowerCase();for(let n=0;n{e.SetContent(i)}).catch(()=>{}).finally(()=>{t.onReady()})}};var gd=class{constructor(){this.nextId=0}GenerateId(){let e=this.nextId;return this.nextId+=1,e}},Bn=class{constructor(){this.name="",this.parent=null,this.transformation=new pn,this.childNodes=[],this.meshIndices=[],this.idGenerator=new gd,this.id=this.idGenerator.GenerateId()}IsEmpty(){return this.childNodes.length===0&&this.meshIndices.length===0}IsMeshNode(){return this.childNodes.length===0&&this.meshIndices.length===1}GetId(){return this.id}GetName(){return this.name}SetName(e){this.name=e}HasParent(){return this.parent!==null}GetParent(){return this.parent}GetTransformation(){return this.transformation}GetWorldTransformation(){let e=this.transformation.Clone(),t=this.parent;for(;t!==null;)e.Append(t.transformation),t=t.parent;return e}SetTransformation(e){this.transformation=e}AddChildNode(e){return e.parent=this,e.idGenerator=this.idGenerator,e.id=e.idGenerator.GenerateId(),this.childNodes.push(e),this.childNodes.length-1}RemoveChildNode(e){e.parent=null;let t=this.childNodes.indexOf(e);this.childNodes.splice(t,1)}GetChildNodes(){return this.childNodes}ChildNodeCount(){return this.childNodes.length}GetChildNode(e){return this.childNodes[e]}AddMeshIndex(e){return this.meshIndices.push(e),this.meshIndices.length-1}MeshIndexCount(){return this.meshIndices.length}GetMeshIndex(e){return this.meshIndices[e]}GetMeshIndices(){return this.meshIndices}Enumerate(e){e(this);for(let t of this.childNodes)t.Enumerate(e)}EnumerateChildren(e){for(let t of this.childNodes)e(t),t.EnumerateChildren(e)}EnumerateMeshIndices(e){for(let t of this.meshIndices)e(t);for(let t of this.childNodes)t.EnumerateMeshIndices(e)}};var _s={Unknown:0,Millimeter:1,Centimeter:2,Meter:3,Inch:4,Foot:5};var br=class extends Er{constructor(){super(),this.unit=_s.Unknown,this.root=new Bn,this.materials=[],this.meshes=[]}GetUnit(){return this.unit}SetUnit(e){this.unit=e}GetRootNode(){return this.root}NodeCount(){let e=0;return this.root.Enumerate(t=>{e+=1}),e-1}MaterialCount(){return this.materials.length}MeshCount(){return this.meshes.length}MeshInstanceCount(){let e=0;return this.root.Enumerate(t=>{e+=t.MeshIndexCount()}),e}VertexCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.VertexCount()}),e}VertexColorCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.VertexColorCount()}),e}NormalCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.NormalCount()}),e}TextureUVCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.TextureUVCount()}),e}LineCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.LineCount()}),e}LineSegmentCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.LineSegmentCount()}),e}TriangleCount(){let e=0;return this.EnumerateMeshInstances(t=>{e+=t.TriangleCount()}),e}AddMaterial(e){return this.materials.push(e),this.materials.length-1}GetMaterial(e){return this.materials[e]}AddMesh(e){return this.meshes.push(e),this.meshes.length-1}AddMeshToRootNode(e){let t=this.AddMesh(e);return this.root.AddMeshIndex(t),t}RemoveMesh(e){this.meshes.splice(e,1),this.root.Enumerate(t=>{for(let n=0;ne&&(t.meshIndices[n]-=1)})}GetMesh(e){return this.meshes[e]}GetMeshInstance(e){let t=null;if(this.root.Enumerate(o=>{o.GetId()===e.nodeId&&(t=o)}),t===null||t.GetMeshIndices().indexOf(e.meshIndex)===-1)return null;let i=this.GetMesh(e.meshIndex),s=new ki(t.GetId(),e.meshIndex);return new Hr(s,t,i)}EnumerateMeshes(e){for(let t of this.meshes)e(t)}EnumerateMeshInstances(e){this.root.Enumerate(t=>{for(let n of t.GetMeshIndices()){let i=new ki(t.GetId(),n),s=this.GetMesh(n),o=new Hr(i,t,s);e(o)}})}EnumerateTransformedMeshInstances(e){this.EnumerateMeshInstances(t=>{let n=t.GetTransformedMesh();e(n)})}EnumerateVertices(e){this.EnumerateMeshInstances(t=>{t.EnumerateVertices(e)})}EnumerateTriangleVertexIndices(e){this.EnumerateMeshInstances(t=>{t.EnumerateTriangleVertexIndices(e)})}EnumerateTriangleVertices(e){this.EnumerateMeshInstances(t=>{t.EnumerateTriangleVertices(e)})}};var Bl=class{constructor(){this.edges=[],this.triangles=[]}},Gl=class{constructor(e,t){this.vertex1=e,this.vertex2=t,this.triangles=[]}},Vl=class{constructor(e,t){this.edge=e,this.reversed=t}},zl=class{constructor(){this.triEdge1=null,this.triEdge2=null,this.triEdge3=null}},la=class{constructor(){this.vertices=[],this.edges=[],this.triangleEdges=[],this.triangles=[],this.edgeStartToEndVertexMap=new Map}AddVertex(){return this.vertices.push(new Bl),this.vertices.length-1}AddTriangle(e,t,n){function i(c,u,h){c[u].triangles.push(h)}function s(c,u,h,f){let p=c[h],g=u[f];p.edges.push(g.edge)}function o(c,u,h,f){let p=u[h];c[p.edge].triangles.push(f)}let a=this.triangles.length,l=new zl;l.triEdge1=this.AddTriangleEdge(e,t),l.triEdge2=this.AddTriangleEdge(t,n),l.triEdge3=this.AddTriangleEdge(n,e),i(this.vertices,e,a),i(this.vertices,t,a),i(this.vertices,n,a),s(this.vertices,this.triangleEdges,e,l.triEdge1),s(this.vertices,this.triangleEdges,t,l.triEdge2),s(this.vertices,this.triangleEdges,n,l.triEdge3),o(this.edges,this.triangleEdges,l.triEdge1,a),o(this.edges,this.triangleEdges,l.triEdge2,a),o(this.edges,this.triangleEdges,l.triEdge3,a),this.triangles.push(l)}AddTriangleEdge(e,t){let n=e,i=t,s=!1;t{vs(t)||(e=!1)}),e}function yd(r){let e=new ia;return r.EnumerateVertices(t=>{e.AddPoint(t)}),e.GetBox()}function xd(r){function e(s,o,a){let l=o.FindPoint(s);return l===null&&(l=a.AddVertex(),o.AddPoint(s,l)),l}let t=yd(r),n=new sa(t),i=new la;return r.EnumerateTriangleVertices((s,o,a)=>{let l=e(s,n,i),c=e(o,n,i),u=e(a,n,i);i.AddTriangle(l,c,u)}),i}function vd(r){function e(t,n,i){let s=t.triangles[n],o=t.triangleEdges[s.triEdge1],a=t.triangleEdges[s.triEdge2],l=t.triangleEdges[s.triEdge3];return o.edge===i?o.reversed:a.edge===i?a.reversed:l.edge===i?l.reversed:null}if(r instanceof br){let t=!0;return r.EnumerateMeshInstances(n=>{t&&(t=vd(n))}),t}else{let t=xd(r);for(let n=0;n>8&255]+Zn[r>>16&255]+Zn[r>>24&255]+"-"+Zn[e&255]+Zn[e>>8&255]+"-"+Zn[e>>16&15|64]+Zn[e>>24&255]+"-"+Zn[t&63|128]+Zn[t>>8&255]+"-"+Zn[t>>16&255]+Zn[t>>24&255]+Zn[n&255]+Zn[n>>8&255]+Zn[n>>16&255]+Zn[n>>24&255]).toLowerCase()}function Pt(r,e,t){return Math.max(e,Math.min(t,r))}function Cp(r,e){return(r%e+e)%e}function Xx(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function qx(r,e,t){return r!==e?(t-r)/(e-r):0}function Zl(r,e,t){return(1-t)*r+t*e}function jx(r,e,t,n){return Zl(r,e,1-Math.exp(-t*n))}function Yx(r,e=1){return e-Math.abs(Cp(r,e*2)-e)}function Kx(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function Zx(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function Jx(r,e){return r+Math.floor(Math.random()*(e-r+1))}function $x(r,e){return r+Math.random()*(e-r)}function Qx(r){return r*(.5-Math.random())}function ev(r){r!==void 0&&(Mg=r);let e=Mg+=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 tv(r){return r*Ea}function nv(r){return r*oo}function iv(r){return(r&r-1)===0&&r!==0}function rv(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function sv(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function ov(r,e,t,n,i){let s=Math.cos,o=Math.sin,a=s(t/2),l=o(t/2),c=s((e+n)/2),u=o((e+n)/2),h=s((e-n)/2),f=o((e-n)/2),p=s((n-e)/2),g=o((n-e)/2);switch(i){case"XYX":r.set(a*u,l*h,l*f,a*c);break;case"YZY":r.set(l*f,a*u,l*h,a*c);break;case"ZXZ":r.set(l*h,l*f,a*u,a*c);break;case"XZX":r.set(a*u,l*g,l*p,a*c);break;case"YXY":r.set(l*p,a*u,l*g,a*c);break;case"ZYZ":r.set(l*g,l*p,a*u,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function Ma(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function ri(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var yn={DEG2RAD:Ea,RAD2DEG:oo,generateUUID:us,clamp:Pt,euclideanModulo:Cp,mapLinear:Xx,inverseLerp:qx,lerp:Zl,damp:jx,pingpong:Yx,smoothstep:Kx,smootherstep:Zx,randInt:Jx,randFloat:$x,randFloatSpread:Qx,seededRandom:ev,degToRad:tv,radToDeg:nv,isPowerOfTwo:iv,ceilPowerOfTwo:rv,floorPowerOfTwo:sv,setQuaternionFromProperEuler:ov,normalize:ri,denormalize:Ma},Pe=class r{constructor(e=0,t=0){r.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,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,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;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 this.constructor(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,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,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,t){return this.x=e.x-t.x,this.y=e.y-t.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)}applyMatrix3(e){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[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,t){return this.x=Pt(this.x,e.x,t.x),this.y=Pt(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Pt(this.x,e,t),this.y=Pt(this.y,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Pt(n,e,t))}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){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Pt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*n-o*i+e.x,this.y=s*i+o*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},gt=class r{constructor(e,t,n,i,s,o,a,l,c){r.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,o,a,l,c)}set(e,t,n,i,s,o,a,l,c){let u=this.elements;return u[0]=e,u[1]=i,u[2]=a,u[3]=t,u[4]=s,u[5]=l,u[6]=n,u[7]=o,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,s=this.elements,o=n[0],a=n[3],l=n[6],c=n[1],u=n[4],h=n[7],f=n[2],p=n[5],g=n[8],y=i[0],d=i[3],m=i[6],_=i[1],v=i[4],x=i[7],S=i[2],I=i[5],A=i[8];return s[0]=o*y+a*_+l*S,s[3]=o*d+a*v+l*I,s[6]=o*m+a*x+l*A,s[1]=c*y+u*_+h*S,s[4]=c*d+u*v+h*I,s[7]=c*m+u*x+h*A,s[2]=f*y+p*_+g*S,s[5]=f*d+p*v+g*I,s[8]=f*m+p*x+g*A,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8];return t*o*u-t*a*c-n*s*u+n*a*l+i*s*c-i*o*l}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],h=u*o-a*c,f=a*l-u*s,p=c*s-o*l,g=t*h+n*f+i*p;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);let y=1/g;return e[0]=h*y,e[1]=(i*c-u*n)*y,e[2]=(a*n-i*o)*y,e[3]=f*y,e[4]=(u*t-i*l)*y,e[5]=(i*s-a*t)*y,e[6]=p*y,e[7]=(n*l-c*t)*y,e[8]=(o*t-n*s)*y,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,o,a){let l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*o+c*a)+o+e,-i*c,i*l,-i*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(_d.makeScale(e,t)),this}rotate(e){return this.premultiply(_d.makeRotation(-e)),this}translate(e,t){return this.premultiply(_d.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}},_d=new gt;function Ip(r){for(let e=r.length-1;e>=0;--e)if(r[e]>=65535)return!0;return!1}function Aa(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function $0(){let r=Aa("canvas");return r.style.display="block",r}var Eg={};function Oc(r){r in Eg||(Eg[r]=!0,console.warn(r))}function Q0(r,e,t){return new Promise(function(n,i){function s(){switch(r.clientWaitSync(e,r.SYNC_FLUSH_COMMANDS_BIT,0)){case r.WAIT_FAILED:i();break;case r.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:n()}}setTimeout(s,t)})}function ey(r){let e=r.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function ty(r){let e=r.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}var bg=new gt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Sg=new gt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function av(){let r={enabled:!0,workingColorSpace:Ci,spaces:{},convert:function(i,s,o){return this.enabled===!1||s===o||!s||!o||(this.spaces[s].transfer===Kt&&(i.r=Jr(i.r),i.g=Jr(i.g),i.b=Jr(i.b)),this.spaces[s].primaries!==this.spaces[o].primaries&&(i.applyMatrix3(this.spaces[s].toXYZ),i.applyMatrix3(this.spaces[o].fromXYZ)),this.spaces[o].transfer===Kt&&(i.r=ba(i.r),i.g=ba(i.g),i.b=ba(i.b))),i},fromWorkingColorSpace:function(i,s){return this.convert(i,this.workingColorSpace,s)},toWorkingColorSpace:function(i,s){return this.convert(i,s,this.workingColorSpace)},getPrimaries:function(i){return this.spaces[i].primaries},getTransfer:function(i){return i===cs?ec:this.spaces[i].transfer},getLuminanceCoefficients:function(i,s=this.workingColorSpace){return i.fromArray(this.spaces[s].luminanceCoefficients)},define:function(i){Object.assign(this.spaces,i)},_getMatrix:function(i,s,o){return i.copy(this.spaces[s].toXYZ).multiply(this.spaces[o].fromXYZ)},_getDrawingBufferColorSpace:function(i){return this.spaces[i].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(i=this.workingColorSpace){return this.spaces[i].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return r.define({[Ci]:{primaries:e,whitePoint:n,transfer:ec,toXYZ:bg,fromXYZ:Sg,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:yt},outputColorSpaceConfig:{drawingBufferColorSpace:yt}},[yt]:{primaries:e,whitePoint:n,transfer:Kt,toXYZ:bg,fromXYZ:Sg,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:yt}}}),r}var mt=av();function Jr(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function ba(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var ua,ao=class{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{ua===void 0&&(ua=Aa("canvas")),ua.width=e.width,ua.height=e.height;let i=ua.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),n=ua}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){let t=Aa("canvas");t.width=e.width,t.height=e.height;let n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);let i=n.getImageData(0,0,e.width,e.height),s=i.data;for(let o=0;o0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==yp)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case on:e.x=e.x-Math.floor(e.x);break;case un:e.x=e.x<0?0:1;break;case so:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case on:e.y=e.y-Math.floor(e.y);break;case un:e.y=e.y<0?0:1;break;case so:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}};qn.DEFAULT_IMAGE=null;qn.DEFAULT_MAPPING=yp;qn.DEFAULT_ANISOTROPY=1;var wt=class r{constructor(e=0,t=0,n=0,i=1){r.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;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;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(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!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*s,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*s,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*s,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s,l=e.elements,c=l[0],u=l[4],h=l[8],f=l[1],p=l[5],g=l[9],y=l[2],d=l[6],m=l[10];if(Math.abs(u-f)<.01&&Math.abs(h-y)<.01&&Math.abs(g-d)<.01){if(Math.abs(u+f)<.1&&Math.abs(h+y)<.1&&Math.abs(g+d)<.1&&Math.abs(c+p+m-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let v=(c+1)/2,x=(p+1)/2,S=(m+1)/2,I=(u+f)/4,A=(h+y)/4,C=(g+d)/4;return v>x&&v>S?v<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(v),i=I/n,s=A/n):x>S?x<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(x),n=I/i,s=C/i):S<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(S),n=A/s,i=C/s),this.set(n,i,s,t),this}let _=Math.sqrt((d-g)*(d-g)+(h-y)*(h-y)+(f-u)*(f-u));return Math.abs(_)<.001&&(_=1),this.x=(d-g)/_,this.y=(h-y)/_,this.z=(f-u)/_,this.w=Math.acos((c+p+m-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}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.w=Math.min(this.w,e.w),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.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Pt(this.x,e.x,t.x),this.y=Pt(this.y,e.y,t.y),this.z=Pt(this.z,e.z,t.z),this.w=Pt(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Pt(this.x,e,t),this.y=Pt(this.y,e,t),this.z=Pt(this.z,e,t),this.w=Pt(this.w,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Pt(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,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)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},mh=class extends Qr{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth?n.depth:1,this.scissor=new wt(0,0,e,t),this.scissorTest=!1,this.viewport=new wt(0,0,e,t);let i={width:e,height:t,depth:this.depth};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Pn,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,multiview:!1},n);let s=new qn(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);s.flipY=!1,s.generateMipmaps=n.generateMipmaps,s.internalFormat=n.internalFormat,this.textures=[];let o=n.count;for(let a=0;a=0?1:-1,v=1-m*m;if(v>Number.EPSILON){let S=Math.sqrt(v),I=Math.atan2(S,m*_);d=Math.sin(d*I)/S,a=Math.sin(a*I)/S}let x=a*_;if(l=l*d+f*x,c=c*d+p*x,u=u*d+g*x,h=h*d+y*x,d===1-a){let S=1/Math.sqrt(l*l+c*c+u*u+h*h);l*=S,c*=S,u*=S,h*=S}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=h}static multiplyQuaternionsFlat(e,t,n,i,s,o){let a=n[i],l=n[i+1],c=n[i+2],u=n[i+3],h=s[o],f=s[o+1],p=s[o+2],g=s[o+3];return e[t]=a*g+u*h+l*p-c*f,e[t+1]=l*g+u*f+c*h-a*p,e[t+2]=c*g+u*p+a*f-l*h,e[t+3]=u*g-a*h-l*f-c*p,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,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(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,t=!0){let n=e._x,i=e._y,s=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(n/2),u=a(i/2),h=a(s/2),f=l(n/2),p=l(i/2),g=l(s/2);switch(o){case"XYZ":this._x=f*u*h+c*p*g,this._y=c*p*h-f*u*g,this._z=c*u*g+f*p*h,this._w=c*u*h-f*p*g;break;case"YXZ":this._x=f*u*h+c*p*g,this._y=c*p*h-f*u*g,this._z=c*u*g-f*p*h,this._w=c*u*h+f*p*g;break;case"ZXY":this._x=f*u*h-c*p*g,this._y=c*p*h+f*u*g,this._z=c*u*g+f*p*h,this._w=c*u*h-f*p*g;break;case"ZYX":this._x=f*u*h-c*p*g,this._y=c*p*h+f*u*g,this._z=c*u*g-f*p*h,this._w=c*u*h+f*p*g;break;case"YZX":this._x=f*u*h+c*p*g,this._y=c*p*h+f*u*g,this._z=c*u*g-f*p*h,this._w=c*u*h-f*p*g;break;case"XZY":this._x=f*u*h-c*p*g,this._y=c*p*h-f*u*g,this._z=c*u*g+f*p*h,this._w=c*u*h+f*p*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],s=t[8],o=t[1],a=t[5],l=t[9],c=t[2],u=t[6],h=t[10],f=n+a+h;if(f>0){let p=.5/Math.sqrt(f+1);this._w=.25/p,this._x=(u-l)*p,this._y=(s-c)*p,this._z=(o-i)*p}else if(n>a&&n>h){let p=2*Math.sqrt(1+n-a-h);this._w=(u-l)/p,this._x=.25*p,this._y=(i+o)/p,this._z=(s+c)/p}else if(a>h){let p=2*Math.sqrt(1+a-n-h);this._w=(s-c)/p,this._x=(i+o)/p,this._y=.25*p,this._z=(l+u)/p}else{let p=2*Math.sqrt(1+h-n-a);this._w=(o-i)/p,this._x=(s+c)/p,this._y=(l+u)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Pt(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(n===0)return this;let i=Math.min(1,t/n);return this.slerp(e,i),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,t){let n=e._x,i=e._y,s=e._z,o=e._w,a=t._x,l=t._y,c=t._z,u=t._w;return this._x=n*u+o*a+i*c-s*l,this._y=i*u+o*l+s*a-n*c,this._z=s*u+o*c+n*l-i*a,this._w=o*u-n*a-i*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,i=this._y,s=this._z,o=this._w,a=o*e._w+n*e._x+i*e._y+s*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=o,this._x=n,this._y=i,this._z=s,this;let l=1-a*a;if(l<=Number.EPSILON){let p=1-t;return this._w=p*o+t*this._w,this._x=p*n+t*this._x,this._y=p*i+t*this._y,this._z=p*s+t*this._z,this.normalize(),this}let c=Math.sqrt(l),u=Math.atan2(c,a),h=Math.sin((1-t)*u)/c,f=Math.sin(t*u)/c;return this._w=o*h+this._w*f,this._x=n*h+this._x*f,this._y=i*h+this._y*f,this._z=s*h+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}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}},se=class r{constructor(e=0,t=0,n=0){r.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,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,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;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 this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,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,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.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,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Ag.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Ag.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,s=e.elements,o=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*o,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*o,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*o,this}applyQuaternion(e){let t=this.x,n=this.y,i=this.z,s=e.x,o=e.y,a=e.z,l=e.w,c=2*(o*i-a*n),u=2*(a*t-s*i),h=2*(s*n-o*t);return this.x=t+l*c+o*h-a*u,this.y=n+l*u+a*c-s*h,this.z=i+l*h+s*u-o*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,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,t){return this.x=Pt(this.x,e.x,t.x),this.y=Pt(this.y,e.y,t.y),this.z=Pt(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Pt(this.x,e,t),this.y=Pt(this.y,e,t),this.z=Pt(this.z,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Pt(n,e,t))}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}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,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,s=e.z,o=t.x,a=t.y,l=t.z;return this.x=i*l-s*a,this.y=s*o-n*l,this.z=n*a-i*o,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Md.copy(this).projectOnVector(e),this.sub(Md)}reflect(e){return this.sub(Md.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Pt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},Md=new se,Ag=new an,Gi=class{constructor(e=new se(1/0,1/0,1/0),t=new se(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=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,t){return t.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}intersectsSphere(e){return this.clampPoint(e.center,Qi),Qi.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Hl),Uu.subVectors(this.max,Hl),ha.subVectors(e.a,Hl),fa.subVectors(e.b,Hl),da.subVectors(e.c,Hl),Ts.subVectors(fa,ha),Ms.subVectors(da,fa),$s.subVectors(ha,da);let t=[0,-Ts.z,Ts.y,0,-Ms.z,Ms.y,0,-$s.z,$s.y,Ts.z,0,-Ts.x,Ms.z,0,-Ms.x,$s.z,0,-$s.x,-Ts.y,Ts.x,0,-Ms.y,Ms.x,0,-$s.y,$s.x,0];return!Ed(t,ha,fa,da,Uu)||(t=[1,0,0,0,1,0,0,0,1],!Ed(t,ha,fa,da,Uu))?!1:(ku.crossVectors(Ts,Ms),t=[ku.x,ku.y,ku.z],Ed(t,ha,fa,da,Uu))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Qi).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Qi).length()*.5),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:(Wr[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Wr[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Wr[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Wr[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Wr[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Wr[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Wr[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Wr[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Wr),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)}},Wr=[new se,new se,new se,new se,new se,new se,new se,new se],Qi=new se,Fu=new Gi,ha=new se,fa=new se,da=new se,Ts=new se,Ms=new se,$s=new se,Hl=new se,Uu=new se,ku=new se,Qs=new se;function Ed(r,e,t,n,i){for(let s=0,o=r.length-3;s<=o;s+=3){Qs.fromArray(r,s);let a=i.x*Math.abs(Qs.x)+i.y*Math.abs(Qs.y)+i.z*Math.abs(Qs.z),l=e.dot(Qs),c=t.dot(Qs),u=n.dot(Qs);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>a)return!1}return!0}var uv=new Gi,Wl=new se,bd=new se,Vi=class{constructor(e=new se,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;t!==void 0?n.copy(t):uv.setFromPoints(e).getCenter(n);let i=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Wl.subVectors(e,this.center);let t=Wl.lengthSq();if(t>this.radius*this.radius){let n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.addScaledVector(Wl,i/n),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(bd.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Wl.copy(e.center).add(bd)),this.expandByPoint(Wl.copy(e.center).sub(bd))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},Xr=new se,Sd=new se,Bu=new se,Es=new se,Ad=new se,Gu=new se,wd=new se,Cs=class{constructor(e=new se,t=new se(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Xr)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Xr.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Xr.copy(this.origin).addScaledVector(this.direction,t),Xr.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){Sd.copy(e).add(t).multiplyScalar(.5),Bu.copy(t).sub(e).normalize(),Es.copy(this.origin).sub(Sd);let s=e.distanceTo(t)*.5,o=-this.direction.dot(Bu),a=Es.dot(this.direction),l=-Es.dot(Bu),c=Es.lengthSq(),u=Math.abs(1-o*o),h,f,p,g;if(u>0)if(h=o*l-a,f=o*a-l,g=s*u,h>=0)if(f>=-g)if(f<=g){let y=1/u;h*=y,f*=y,p=h*(h+o*f+2*a)+f*(o*h+f+2*l)+c}else f=s,h=Math.max(0,-(o*f+a)),p=-h*h+f*(f+2*l)+c;else f=-s,h=Math.max(0,-(o*f+a)),p=-h*h+f*(f+2*l)+c;else f<=-g?(h=Math.max(0,-(-o*s+a)),f=h>0?-s:Math.min(Math.max(-s,-l),s),p=-h*h+f*(f+2*l)+c):f<=g?(h=0,f=Math.min(Math.max(-s,-l),s),p=f*(f+2*l)+c):(h=Math.max(0,-(o*s+a)),f=h>0?s:Math.min(Math.max(-s,-l),s),p=-h*h+f*(f+2*l)+c);else f=o>0?-s:s,h=Math.max(0,-(o*f+a)),p=-h*h+f*(f+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,h),i&&i.copy(Sd).addScaledVector(Bu,f),p}intersectSphere(e,t){Xr.subVectors(e.center,this.origin);let n=Xr.dot(this.direction),i=Xr.dot(Xr)-n*n,s=e.radius*e.radius;if(i>s)return null;let o=Math.sqrt(s-i),a=n-o,l=n+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,s,o,a,l,c=1/this.direction.x,u=1/this.direction.y,h=1/this.direction.z,f=this.origin;return c>=0?(n=(e.min.x-f.x)*c,i=(e.max.x-f.x)*c):(n=(e.max.x-f.x)*c,i=(e.min.x-f.x)*c),u>=0?(s=(e.min.y-f.y)*u,o=(e.max.y-f.y)*u):(s=(e.max.y-f.y)*u,o=(e.min.y-f.y)*u),n>o||s>i||((s>n||isNaN(n))&&(n=s),(o=0?(a=(e.min.z-f.z)*h,l=(e.max.z-f.z)*h):(a=(e.max.z-f.z)*h,l=(e.min.z-f.z)*h),n>l||a>i)||((a>n||n!==n)&&(n=a),(l=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,Xr)!==null}intersectTriangle(e,t,n,i,s){Ad.subVectors(t,e),Gu.subVectors(n,e),wd.crossVectors(Ad,Gu);let o=this.direction.dot(wd),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Es.subVectors(this.origin,e);let l=a*this.direction.dot(Gu.crossVectors(Es,Gu));if(l<0)return null;let c=a*this.direction.dot(Ad.cross(Es));if(c<0||l+c>o)return null;let u=-a*Es.dot(wd);return u<0?null:this.at(u/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},Je=class r{constructor(e,t,n,i,s,o,a,l,c,u,h,f,p,g,y,d){r.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,o,a,l,c,u,h,f,p,g,y,d)}set(e,t,n,i,s,o,a,l,c,u,h,f,p,g,y,d){let m=this.elements;return m[0]=e,m[4]=t,m[8]=n,m[12]=i,m[1]=s,m[5]=o,m[9]=a,m[13]=l,m[2]=c,m[6]=u,m[10]=h,m[14]=f,m[3]=p,m[7]=g,m[11]=y,m[15]=d,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 r().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,i=1/pa.setFromMatrixColumn(e,0).length(),s=1/pa.setFromMatrixColumn(e,1).length(),o=1/pa.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,i=e.y,s=e.z,o=Math.cos(n),a=Math.sin(n),l=Math.cos(i),c=Math.sin(i),u=Math.cos(s),h=Math.sin(s);if(e.order==="XYZ"){let f=o*u,p=o*h,g=a*u,y=a*h;t[0]=l*u,t[4]=-l*h,t[8]=c,t[1]=p+g*c,t[5]=f-y*c,t[9]=-a*l,t[2]=y-f*c,t[6]=g+p*c,t[10]=o*l}else if(e.order==="YXZ"){let f=l*u,p=l*h,g=c*u,y=c*h;t[0]=f+y*a,t[4]=g*a-p,t[8]=o*c,t[1]=o*h,t[5]=o*u,t[9]=-a,t[2]=p*a-g,t[6]=y+f*a,t[10]=o*l}else if(e.order==="ZXY"){let f=l*u,p=l*h,g=c*u,y=c*h;t[0]=f-y*a,t[4]=-o*h,t[8]=g+p*a,t[1]=p+g*a,t[5]=o*u,t[9]=y-f*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){let f=o*u,p=o*h,g=a*u,y=a*h;t[0]=l*u,t[4]=g*c-p,t[8]=f*c+y,t[1]=l*h,t[5]=y*c+f,t[9]=p*c-g,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){let f=o*l,p=o*c,g=a*l,y=a*c;t[0]=l*u,t[4]=y-f*h,t[8]=g*h+p,t[1]=h,t[5]=o*u,t[9]=-a*u,t[2]=-c*u,t[6]=p*h+g,t[10]=f-y*h}else if(e.order==="XZY"){let f=o*l,p=o*c,g=a*l,y=a*c;t[0]=l*u,t[4]=-h,t[8]=c*u,t[1]=f*h+y,t[5]=o*u,t[9]=p*h-g,t[2]=g*h-p,t[6]=a*u,t[10]=y*h+f}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(hv,e,fv)}lookAt(e,t,n){let i=this.elements;return Si.subVectors(e,t),Si.lengthSq()===0&&(Si.z=1),Si.normalize(),bs.crossVectors(n,Si),bs.lengthSq()===0&&(Math.abs(n.z)===1?Si.x+=1e-4:Si.z+=1e-4,Si.normalize(),bs.crossVectors(n,Si)),bs.normalize(),Vu.crossVectors(Si,bs),i[0]=bs.x,i[4]=Vu.x,i[8]=Si.x,i[1]=bs.y,i[5]=Vu.y,i[9]=Si.y,i[2]=bs.z,i[6]=Vu.z,i[10]=Si.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,s=this.elements,o=n[0],a=n[4],l=n[8],c=n[12],u=n[1],h=n[5],f=n[9],p=n[13],g=n[2],y=n[6],d=n[10],m=n[14],_=n[3],v=n[7],x=n[11],S=n[15],I=i[0],A=i[4],C=i[8],E=i[12],b=i[1],R=i[5],N=i[9],B=i[13],V=i[2],ie=i[6],Y=i[10],te=i[14],q=i[3],le=i[7],ye=i[11],Te=i[15];return s[0]=o*I+a*b+l*V+c*q,s[4]=o*A+a*R+l*ie+c*le,s[8]=o*C+a*N+l*Y+c*ye,s[12]=o*E+a*B+l*te+c*Te,s[1]=u*I+h*b+f*V+p*q,s[5]=u*A+h*R+f*ie+p*le,s[9]=u*C+h*N+f*Y+p*ye,s[13]=u*E+h*B+f*te+p*Te,s[2]=g*I+y*b+d*V+m*q,s[6]=g*A+y*R+d*ie+m*le,s[10]=g*C+y*N+d*Y+m*ye,s[14]=g*E+y*B+d*te+m*Te,s[3]=_*I+v*b+x*V+S*q,s[7]=_*A+v*R+x*ie+S*le,s[11]=_*C+v*N+x*Y+S*ye,s[15]=_*E+v*B+x*te+S*Te,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],o=e[1],a=e[5],l=e[9],c=e[13],u=e[2],h=e[6],f=e[10],p=e[14],g=e[3],y=e[7],d=e[11],m=e[15];return g*(+s*l*h-i*c*h-s*a*f+n*c*f+i*a*p-n*l*p)+y*(+t*l*p-t*c*f+s*o*f-i*o*p+i*c*u-s*l*u)+d*(+t*c*h-t*a*p-s*o*h+n*o*p+s*a*u-n*c*u)+m*(-i*a*u-t*l*h+t*a*f+i*o*h-n*o*f+n*l*u)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],h=e[9],f=e[10],p=e[11],g=e[12],y=e[13],d=e[14],m=e[15],_=h*d*c-y*f*c+y*l*p-a*d*p-h*l*m+a*f*m,v=g*f*c-u*d*c-g*l*p+o*d*p+u*l*m-o*f*m,x=u*y*c-g*h*c+g*a*p-o*y*p-u*a*m+o*h*m,S=g*h*l-u*y*l-g*a*f+o*y*f+u*a*d-o*h*d,I=t*_+n*v+i*x+s*S;if(I===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let A=1/I;return e[0]=_*A,e[1]=(y*f*s-h*d*s-y*i*p+n*d*p+h*i*m-n*f*m)*A,e[2]=(a*d*s-y*l*s+y*i*c-n*d*c-a*i*m+n*l*m)*A,e[3]=(h*l*s-a*f*s-h*i*c+n*f*c+a*i*p-n*l*p)*A,e[4]=v*A,e[5]=(u*d*s-g*f*s+g*i*p-t*d*p-u*i*m+t*f*m)*A,e[6]=(g*l*s-o*d*s-g*i*c+t*d*c+o*i*m-t*l*m)*A,e[7]=(o*f*s-u*l*s+u*i*c-t*f*c-o*i*p+t*l*p)*A,e[8]=x*A,e[9]=(g*h*s-u*y*s-g*n*p+t*y*p+u*n*m-t*h*m)*A,e[10]=(o*y*s-g*a*s+g*n*c-t*y*c-o*n*m+t*a*m)*A,e[11]=(u*a*s-o*h*s-u*n*c+t*h*c+o*n*p-t*a*p)*A,e[12]=S*A,e[13]=(u*y*i-g*h*i+g*n*f-t*y*f-u*n*d+t*h*d)*A,e[14]=(g*a*i-o*y*i-g*n*l+t*y*l+o*n*d-t*a*d)*A,e[15]=(o*h*i-u*a*i+u*n*l-t*h*l-o*n*f+t*a*f)*A,this}scale(e){let t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?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,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),s=1-n,o=e.x,a=e.y,l=e.z,c=s*o,u=s*a;return this.set(c*o+n,c*a-i*l,c*l+i*a,0,c*a+i*l,u*a+n,u*l-i*o,0,c*l-i*a,u*l+i*o,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,o){return this.set(1,n,s,0,e,1,o,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,s=t._x,o=t._y,a=t._z,l=t._w,c=s+s,u=o+o,h=a+a,f=s*c,p=s*u,g=s*h,y=o*u,d=o*h,m=a*h,_=l*c,v=l*u,x=l*h,S=n.x,I=n.y,A=n.z;return i[0]=(1-(y+m))*S,i[1]=(p+x)*S,i[2]=(g-v)*S,i[3]=0,i[4]=(p-x)*I,i[5]=(1-(f+m))*I,i[6]=(d+_)*I,i[7]=0,i[8]=(g+v)*A,i[9]=(d-_)*A,i[10]=(1-(f+y))*A,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements,s=pa.set(i[0],i[1],i[2]).length(),o=pa.set(i[4],i[5],i[6]).length(),a=pa.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],er.copy(this);let c=1/s,u=1/o,h=1/a;return er.elements[0]*=c,er.elements[1]*=c,er.elements[2]*=c,er.elements[4]*=u,er.elements[5]*=u,er.elements[6]*=u,er.elements[8]*=h,er.elements[9]*=h,er.elements[10]*=h,t.setFromRotationMatrix(er),n.x=s,n.y=o,n.z=a,this}makePerspective(e,t,n,i,s,o,a=Ar){let l=this.elements,c=2*s/(t-e),u=2*s/(n-i),h=(t+e)/(t-e),f=(n+i)/(n-i),p,g;if(a===Ar)p=-(o+s)/(o-s),g=-2*o*s/(o-s);else if(a===tc)p=-o/(o-s),g=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return l[0]=c,l[4]=0,l[8]=h,l[12]=0,l[1]=0,l[5]=u,l[9]=f,l[13]=0,l[2]=0,l[6]=0,l[10]=p,l[14]=g,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,i,s,o,a=Ar){let l=this.elements,c=1/(t-e),u=1/(n-i),h=1/(o-s),f=(t+e)*c,p=(n+i)*u,g,y;if(a===Ar)g=(o+s)*h,y=-2*h;else if(a===tc)g=s*h,y=-1*h;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-f,l[1]=0,l[5]=2*u,l[9]=0,l[13]=-p,l[2]=0,l[6]=0,l[10]=y,l[14]=-g,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}},pa=new se,er=new Je,hv=new se(0,0,0),fv=new se(1,1,1),bs=new se,Vu=new se,Si=new se,wg=new Je,Cg=new an,vn=class r{constructor(e=0,t=0,n=0,i=r.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}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,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(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,t=this._order,n=!0){let i=e.elements,s=i[0],o=i[4],a=i[8],l=i[1],c=i[5],u=i[9],h=i[2],f=i[6],p=i[10];switch(t){case"XYZ":this._y=Math.asin(Pt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,p),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Pt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-h,s),this._z=0);break;case"ZXY":this._x=Math.asin(Pt(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-h,p),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Pt(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(f,p),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(Pt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-h,s)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-Pt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-u,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return wg.makeRotationFromQuaternion(e),this.setFromRotationMatrix(wg,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Cg.setFromEuler(this),this.setFromQuaternion(Cg,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=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+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}};vn.DEFAULT_ORDER="XYZ";var Ca=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.geometryInfo=this._geometryInfo.map(a=>({...a,boundingBox:a.boundingBox?{min:a.boundingBox.min.toArray(),max:a.boundingBox.max.toArray()}:void 0,boundingSphere:a.boundingSphere?{radius:a.boundingSphere.radius,center:a.boundingSphere.center.toArray()}:void 0})),i.instanceInfo=this._instanceInfo.map(a=>({...a})),i.availableInstanceIds=this._availableInstanceIds.slice(),i.availableGeometryIds=this._availableGeometryIds.slice(),i.nextIndexStart=this._nextIndexStart,i.nextVertexStart=this._nextVertexStart,i.geometryCount=this._geometryCount,i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.matricesTexture=this._matricesTexture.toJSON(e),i.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(i.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(i.boundingSphere={center:this.boundingSphere.center.toArray(),radius:this.boundingSphere.radius}),this.boundingBox!==null&&(i.boundingBox={min:this.boundingBox.min.toArray(),max:this.boundingBox.max.toArray()}));function s(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(e.geometries,this.geometry);let a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){let l=a.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(n.geometries=a),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),u.length>0&&(n.images=u),h.length>0&&(n.shapes=h),f.length>0&&(n.skeletons=f),p.length>0&&(n.animations=p),g.length>0&&(n.nodes=g)}return n.object=i,n;function o(a){let l=[];for(let c in a){let u=a[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(e,t,n,i,s){tr.subVectors(i,t),jr.subVectors(n,t),Id.subVectors(e,t);let o=tr.dot(tr),a=tr.dot(jr),l=tr.dot(Id),c=jr.dot(jr),u=jr.dot(Id),h=o*c-a*a;if(h===0)return s.set(0,0,0),null;let f=1/h,p=(c*l-a*u)*f,g=(o*u-a*l)*f;return s.set(1-p-g,g,p)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,Yr)===null?!1:Yr.x>=0&&Yr.y>=0&&Yr.x+Yr.y<=1}static getInterpolation(e,t,n,i,s,o,a,l){return this.getBarycoord(e,t,n,i,Yr)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Yr.x),l.addScaledVector(o,Yr.y),l.addScaledVector(a,Yr.z),l)}static getInterpolatedAttribute(e,t,n,i,s,o){return Ld.setScalar(0),Od.setScalar(0),Dd.setScalar(0),Ld.fromBufferAttribute(e,t),Od.fromBufferAttribute(e,n),Dd.fromBufferAttribute(e,i),o.setScalar(0),o.addScaledVector(Ld,s.x),o.addScaledVector(Od,s.y),o.addScaledVector(Dd,s.z),o}static isFrontFacing(e,t,n,i){return tr.subVectors(n,t),jr.subVectors(e,t),tr.cross(jr).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return tr.subVectors(this.c,this.b),jr.subVectors(this.a,this.b),tr.cross(jr).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return r.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return r.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,s){return r.getInterpolation(e,this.a,this.b,this.c,t,n,i,s)}containsPoint(e){return r.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return r.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n=this.a,i=this.b,s=this.c,o,a;ya.subVectors(i,n),xa.subVectors(s,n),Rd.subVectors(e,n);let l=ya.dot(Rd),c=xa.dot(Rd);if(l<=0&&c<=0)return t.copy(n);Pd.subVectors(e,i);let u=ya.dot(Pd),h=xa.dot(Pd);if(u>=0&&h<=u)return t.copy(i);let f=l*h-u*c;if(f<=0&&l>=0&&u<=0)return o=l/(l-u),t.copy(n).addScaledVector(ya,o);Nd.subVectors(e,s);let p=ya.dot(Nd),g=xa.dot(Nd);if(g>=0&&p<=g)return t.copy(s);let y=p*c-l*g;if(y<=0&&c>=0&&g<=0)return a=c/(c-g),t.copy(n).addScaledVector(xa,a);let d=u*g-p*h;if(d<=0&&h-u>=0&&p-g>=0)return Og.subVectors(s,i),a=(h-u)/(h-u+(p-g)),t.copy(i).addScaledVector(Og,a);let m=1/(d+y+f);return o=y*m,a=f*m,t.copy(n).addScaledVector(ya,o).addScaledVector(xa,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},ny={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Ss={h:0,s:0,l:0},Hu={h:0,s:0,l:0};function Fd(r,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+(e-r)*6*t:t<1/2?e:t<2/3?r+(e-r)*6*(2/3-t):r}var He=class{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){let i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=yt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,mt.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=mt.workingColorSpace){return this.r=e,this.g=t,this.b=n,mt.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=mt.workingColorSpace){if(e=Cp(e,1),t=Pt(t,0,1),n=Pt(n,0,1),t===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+t):n+t-n*t,o=2*n-s;this.r=Fd(o,s,e+1/3),this.g=Fd(o,s,e),this.b=Fd(o,s,e-1/3)}return mt.toWorkingColorSpace(this,i),this}setStyle(e,t=yt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=i[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=yt){let n=ny[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Jr(e.r),this.g=Jr(e.g),this.b=Jr(e.b),this}copyLinearToSRGB(e){return this.r=ba(e.r),this.g=ba(e.g),this.b=ba(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=yt){return mt.fromWorkingColorSpace(Jn.copy(this),e),Math.round(Pt(Jn.r*255,0,255))*65536+Math.round(Pt(Jn.g*255,0,255))*256+Math.round(Pt(Jn.b*255,0,255))}getHexString(e=yt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=mt.workingColorSpace){mt.fromWorkingColorSpace(Jn.copy(this),t);let n=Jn.r,i=Jn.g,s=Jn.b,o=Math.max(n,i,s),a=Math.min(n,i,s),l,c,u=(a+o)/2;if(a===o)l=0,c=0;else{let h=o-a;switch(c=u<=.5?h/(o+a):h/(2-o-a),o){case n:l=(i-s)/h+(i0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let i=this[t];if(i===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==io&&(n.blending=this.blending),this.side!==wi&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==fh&&(n.blendSrc=this.blendSrc),this.blendDst!==dh&&(n.blendDst=this.blendDst),this.blendEquation!==ws&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==ro&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Qd&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==no&&(n.stencilFail=this.stencilFail),this.stencilZFail!==no&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==no&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(s){let o=[];for(let a in s){let l=s[a];delete l.metadata,o.push(l)}return o}if(t){let s=i(e.textures),o=i(e.images);s.length>0&&(n.textures=s),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(t!==null){let i=t.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}},Ii=class extends zi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new He(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new vn,this.combine=Sc,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}};var An=new se,Wu=new Pe,xv=0,Vn=class{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:xv++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=ep,this.updateRanges=[],this.gpuType=cr,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,s=this.itemSize;it.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Gi);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new se(-1/0,-1/0,-1/0),new se(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,i=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let l in n){let c=n[l];e.data.attributes[l]=c.toJSON(e.data)}let i={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],u=[];for(let h=0,f=c.length;h0&&(i[l]=u,s=!0)}s&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone());let i=e.attributes;for(let c in i){let u=i[c];this.setAttribute(c,u.clone(t))}let s=e.morphAttributes;for(let c in s){let u=[],h=s[c];for(let f=0,p=h.length;f0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s(e.far-e.near)**2))&&(Dg.copy(s).invert(),eo.copy(e.ray).applyMatrix4(Dg),!(n.boundingBox!==null&&eo.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,eo)))}_computeIntersections(e,t,n){let i,s=this.geometry,o=this.material,a=s.index,l=s.attributes.position,c=s.attributes.uv,u=s.attributes.uv1,h=s.attributes.normal,f=s.groups,p=s.drawRange;if(a!==null)if(Array.isArray(o))for(let g=0,y=f.length;gt.far?null:{distance:c,point:Zu.clone(),object:r}}function Ju(r,e,t,n,i,s,o,a,l,c){r.getVertexPosition(a,qu),r.getVertexPosition(l,ju),r.getVertexPosition(c,Yu);let u=_v(r,e,t,n,qu,ju,Yu,Ug);if(u){let h=new se;Zr.getBarycoord(Ug,qu,ju,Yu,h),i&&(u.uv=Zr.getInterpolatedAttribute(i,a,l,c,h,new Pe)),s&&(u.uv1=Zr.getInterpolatedAttribute(s,a,l,c,h,new Pe)),o&&(u.normal=Zr.getInterpolatedAttribute(o,a,l,c,h,new se),u.normal.dot(n.direction)>0&&u.normal.multiplyScalar(-1));let f={a,b:l,c,normal:new se,materialIndex:0};Zr.getNormal(qu,ju,Yu,f.normal),u.face=f,u.barycoord=h}return u}var Is=class r extends It{constructor(e=1,t=1,n=1,i=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:o};let a=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o);let l=[],c=[],u=[],h=[],f=0,p=0;g("z","y","x",-1,-1,n,t,e,o,s,0),g("z","y","x",1,-1,n,t,-e,o,s,1),g("x","z","y",1,1,e,n,t,i,o,2),g("x","z","y",1,-1,e,n,-t,i,o,3),g("x","y","z",1,-1,e,t,n,i,s,4),g("x","y","z",-1,-1,e,t,-n,i,s,5),this.setIndex(l),this.setAttribute("position",new We(c,3)),this.setAttribute("normal",new We(u,3)),this.setAttribute("uv",new We(h,2));function g(y,d,m,_,v,x,S,I,A,C,E){let b=x/A,R=S/C,N=x/2,B=S/2,V=I/2,ie=A+1,Y=C+1,te=0,q=0,le=new se;for(let ye=0;ye0?1:-1,u.push(le.x,le.y,le.z),h.push(Ae/A),h.push(1-ye/C),te+=1}}for(let ye=0;ye0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}},zu=class extends Rt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Ye,this.projectionMatrix=new Ye,this.projectionMatrixInverse=new Ye,this.coordinateSystem=zr}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},ls=new oe,lg=new Ce,cg=new Ce,en=class extends zu{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=da*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(oa*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return da*2*Math.atan(Math.tan(oa*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){ls.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(ls.x,ls.y).multiplyScalar(-e/ls.z),ls.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(ls.x,ls.y).multiplyScalar(-e/ls.z)}getViewSize(e,t){return this.getViewBounds(e,lg,cg),t.subVectors(cg,lg)}setViewOffset(e,t,n,i,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(oa*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,s=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let l=o.fullWidth,c=o.fullHeight;s+=o.offsetX*i/l,t-=o.offsetY*n/c,i*=o.width/l,n*=o.height/c}let a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},$o=-90,Qo=1,Yf=class extends Rt{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;let i=new en($o,Qo,e,t);i.layers=this.layers,this.add(i);let s=new en($o,Qo,e,t);s.layers=this.layers,this.add(s);let o=new en($o,Qo,e,t);o.layers=this.layers,this.add(o);let a=new en($o,Qo,e,t);a.layers=this.layers,this.add(a);let l=new en($o,Qo,e,t);l.layers=this.layers,this.add(l);let c=new en($o,Qo,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,i,s,o,a,l]=t;for(let c of t)this.remove(c);if(e===zr)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===ku)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[s,o,a,l,c,u]=this.children,h=e.getRenderTarget(),f=e.getActiveCubeFace(),p=e.getActiveMipmapLevel(),g=e.xr.enabled;e.xr.enabled=!1;let v=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,s),e.setRenderTarget(n,1,i),e.render(t,o),e.setRenderTarget(n,2,i),e.render(t,a),e.setRenderTarget(n,3,i),e.render(t,l),e.setRenderTarget(n,4,i),e.render(t,c),n.texture.generateMipmaps=v,e.setRenderTarget(n,5,i),e.render(t,u),e.setRenderTarget(h,f,p),e.xr.enabled=g,n.texture.needsPMREMUpdate=!0}},Gl=class extends Dn{constructor(e,t,n,i,s,o,a,l,c,u){e=e!==void 0?e:[],t=t!==void 0?t:ca,super(e,t,n,i,s,o,a,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},Kf=class extends Hr{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new Gl(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:bn}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` +}`,nr=class extends zi{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Mv,this.fragmentShader=Ev,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Mo(e.uniforms),this.uniformsGroups=Tv(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){let t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(let i in this.uniforms){let o=this.uniforms[i].value;o&&o.isTexture?t.uniforms[i]={type:"t",value:o.toJSON(e).uuid}:o&&o.isColor?t.uniforms[i]={type:"c",value:o.getHex()}:o&&o.isVector2?t.uniforms[i]={type:"v2",value:o.toArray()}:o&&o.isVector3?t.uniforms[i]={type:"v3",value:o.toArray()}:o&&o.isVector4?t.uniforms[i]={type:"v4",value:o.toArray()}:o&&o.isMatrix3?t.uniforms[i]={type:"m3",value:o.toArray()}:o&&o.isMatrix4?t.uniforms[i]={type:"m4",value:o.toArray()}:t.uniforms[i]={value:o}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}},rc=class extends Lt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Je,this.projectionMatrix=new Je,this.projectionMatrixInverse=new Je,this.coordinateSystem=Ar}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},As=new se,kg=new Pe,Bg=new Pe,nn=class extends rc{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=oo*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(Ea*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return oo*2*Math.atan(Math.tan(Ea*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){As.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(As.x,As.y).multiplyScalar(-e/As.z),As.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(As.x,As.y).multiplyScalar(-e/As.z)}getViewSize(e,t){return this.getViewBounds(e,kg,Bg),t.subVectors(Bg,kg)}setViewOffset(e,t,n,i,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(Ea*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,s=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let l=o.fullWidth,c=o.fullHeight;s+=o.offsetX*i/l,t-=o.offsetY*n/c,i*=o.width/l,n*=o.height/c}let a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},_a=-90,Ta=1,yh=class extends Lt{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;let i=new nn(_a,Ta,e,t);i.layers=this.layers,this.add(i);let s=new nn(_a,Ta,e,t);s.layers=this.layers,this.add(s);let o=new nn(_a,Ta,e,t);o.layers=this.layers,this.add(o);let a=new nn(_a,Ta,e,t);a.layers=this.layers,this.add(a);let l=new nn(_a,Ta,e,t);l.layers=this.layers,this.add(l);let c=new nn(_a,Ta,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,i,s,o,a,l]=t;for(let c of t)this.remove(c);if(e===Ar)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===tc)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[s,o,a,l,c,u]=this.children,h=e.getRenderTarget(),f=e.getActiveCubeFace(),p=e.getActiveMipmapLevel(),g=e.xr.enabled;e.xr.enabled=!1;let y=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,s),e.setRenderTarget(n,1,i),e.render(t,o),e.setRenderTarget(n,2,i),e.render(t,a),e.setRenderTarget(n,3,i),e.render(t,l),e.setRenderTarget(n,4,i),e.render(t,c),n.texture.generateMipmaps=y,e.setRenderTarget(n,5,i),e.render(t,u),e.setRenderTarget(h,f,p),e.xr.enabled=g,n.texture.needsPMREMUpdate=!0}},Ia=class extends qn{constructor(e=[],t=_o,n,i,s,o,a,l,c,u){super(e,t,n,i,s,o,a,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},xh=class extends wr{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new Ia(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Pn}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -40,9 +40,9 @@ var OV=(()=>{var Kh=Object.defineProperty;var wv=Object.getOwnPropertyDescriptor gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},i=new Zs(5,5,5),s=new mr({name:"CubemapFromEquirect",uniforms:ga(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:Tn,blending:us});s.uniforms.tEquirect.value=t;let o=new Pt(i,s),a=t.minFilter;return t.minFilter===vi&&(t.minFilter=bn),new Yf(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,n,i){let s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,n,i);e.setRenderTarget(s)}},wf=new oe,Tx=new oe,Mx=new ft,Gr=class{constructor(e=new oe(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){let i=wf.subVectors(n,t).cross(Tx.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let 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}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){let n=e.delta(wf),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let s=-(e.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:t.copy(e.start).addScaledVector(n,s)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||Mx.getNormalMatrix(e),i=this.coplanarPoint(wf).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),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 this.constructor().copy(this)}},zs=new qi,vu=new oe,Vl=class{constructor(e=new Gr,t=new Gr,n=new Gr,i=new Gr,s=new Gr,o=new Gr){this.planes=[e,t,n,i,s,o]}set(e,t,n,i,s,o){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(n),a[3].copy(i),a[4].copy(s),a[5].copy(o),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=zr){let n=this.planes,i=e.elements,s=i[0],o=i[1],a=i[2],l=i[3],c=i[4],u=i[5],h=i[6],f=i[7],p=i[8],g=i[9],v=i[10],d=i[11],m=i[12],_=i[13],y=i[14],x=i[15];if(n[0].setComponents(l-s,f-c,d-p,x-m).normalize(),n[1].setComponents(l+s,f+c,d+p,x+m).normalize(),n[2].setComponents(l+o,f+u,d+g,x+_).normalize(),n[3].setComponents(l-o,f-u,d-g,x-_).normalize(),n[4].setComponents(l-a,f-h,d-v,x-y).normalize(),t===zr)n[5].setComponents(l+a,f+h,d+v,x+y).normalize();else if(t===ku)n[5].setComponents(a,h,v,y).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),zs.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),zs.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(zs)}intersectsSprite(e){return zs.center.set(0,0,0),zs.radius=.7071067811865476,zs.applyMatrix4(e.matrixWorld),this.intersectsSphere(zs)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)0?e.max.x:e.min.x,vu.y=i.normal.y>0?e.max.y:e.min.y,vu.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(vu)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function m0(){let r=null,e=!1,t=null,n=null;function i(s,o){t(s,o),n=r.requestAnimationFrame(i)}return{start:function(){e!==!0&&t!==null&&(n=r.requestAnimationFrame(i),e=!0)},stop:function(){r.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){r=s}}}function Ex(r){let e=new WeakMap;function t(a,l){let c=a.array,u=a.usage,h=c.byteLength,f=r.createBuffer();r.bindBuffer(l,f),r.bufferData(l,c,u),a.onUploadCallback();let p;if(c instanceof Float32Array)p=r.FLOAT;else if(c instanceof Uint16Array)a.isFloat16BufferAttribute?p=r.HALF_FLOAT:p=r.UNSIGNED_SHORT;else if(c instanceof Int16Array)p=r.SHORT;else if(c instanceof Uint32Array)p=r.UNSIGNED_INT;else if(c instanceof Int32Array)p=r.INT;else if(c instanceof Int8Array)p=r.BYTE;else if(c instanceof Uint8Array)p=r.UNSIGNED_BYTE;else if(c instanceof Uint8ClampedArray)p=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+c);return{buffer:f,type:p,bytesPerElement:c.BYTES_PER_ELEMENT,version:a.version,size:h}}function n(a,l,c){let u=l.array,h=l._updateRange,f=l.updateRanges;if(r.bindBuffer(c,a),h.count===-1&&f.length===0&&r.bufferSubData(c,0,u),f.length!==0){for(let p=0,g=f.length;pp+g?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&f<=p-g&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(bv)))}return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let n=new gn;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}};var ir=class extends Lt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new vn,this.environmentIntensity=1,this.environmentRotation=new vn,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}};var Gg=new se,Vg=new wt,zg=new wt,Sv=new se,Hg=new Je,$u=new se,Bd=new Vi,Wg=new Je,Gd=new Cs,co=class extends Dt{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=Kd,this.bindMatrix=new Je,this.bindMatrixInverse=new Je,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){let e=this.geometry;this.boundingBox===null&&(this.boundingBox=new Gi),this.boundingBox.makeEmpty();let t=e.getAttribute("position");for(let n=0;n1?null:t.copy(e.start).addScaledVector(n,s)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||Cv.getNormalMatrix(e),i=this.coplanarPoint(Vd).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),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 this.constructor().copy(this)}},to=new Vi,Qu=new se,Pa=class{constructor(e=new Sr,t=new Sr,n=new Sr,i=new Sr,s=new Sr,o=new Sr){this.planes=[e,t,n,i,s,o]}set(e,t,n,i,s,o){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(n),a[3].copy(i),a[4].copy(s),a[5].copy(o),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=Ar){let n=this.planes,i=e.elements,s=i[0],o=i[1],a=i[2],l=i[3],c=i[4],u=i[5],h=i[6],f=i[7],p=i[8],g=i[9],y=i[10],d=i[11],m=i[12],_=i[13],v=i[14],x=i[15];if(n[0].setComponents(l-s,f-c,d-p,x-m).normalize(),n[1].setComponents(l+s,f+c,d+p,x+m).normalize(),n[2].setComponents(l+o,f+u,d+g,x+_).normalize(),n[3].setComponents(l-o,f-u,d-g,x-_).normalize(),n[4].setComponents(l-a,f-h,d-y,x-v).normalize(),t===Ar)n[5].setComponents(l+a,f+h,d+y,x+v).normalize();else if(t===tc)n[5].setComponents(a,h,y,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),to.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),to.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(to)}intersectsSprite(e){return to.center.set(0,0,0),to.radius=.7071067811865476,to.applyMatrix4(e.matrixWorld),this.intersectsSphere(to)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)0?e.max.x:e.min.x,Qu.y=i.normal.y>0?e.max.y:e.min.y,Qu.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Qu)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};var jn=class extends zi{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new He(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},vh=new se,_h=new se,qg=new Je,jl=new Cs,eh=new Vi,zd=new se,jg=new se,Rs=class extends Lt{constructor(e=new It,t=new jn){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[0];for(let i=1,s=t.count;i0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;sn)return;zd.applyMatrix4(r.matrixWorld);let c=e.ray.origin.distanceTo(zd);if(!(ce.far))return{distance:c,point:jg.clone().applyMatrix4(r.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:r}}var Yg=new se,Kg=new se,rr=class extends Rs{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[];for(let i=0,s=t.count;i0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;si.far)return;s.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:o})}}var oc=class extends qn{constructor(e,t,n=Ls,i,s,o,a=Xn,l=Xn,c,u=Sa){if(u!==Sa&&u!==Va)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");super(null,i,s,o,a,l,u,n,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new wa(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}};var La=class r extends It{constructor(e=1,t=1,n=1,i=32,s=1,o=!1,a=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l};let c=this;i=Math.floor(i),s=Math.floor(s);let u=[],h=[],f=[],p=[],g=0,y=[],d=n/2,m=0;_(),o===!1&&(e>0&&v(!0),t>0&&v(!1)),this.setIndex(u),this.setAttribute("position",new We(h,3)),this.setAttribute("normal",new We(f,3)),this.setAttribute("uv",new We(p,2));function _(){let x=new se,S=new se,I=0,A=(t-e)/n;for(let C=0;C<=s;C++){let E=[],b=C/s,R=b*(t-e)+e;for(let N=0;N<=i;N++){let B=N/i,V=B*l+a,ie=Math.sin(V),Y=Math.cos(V);S.x=R*ie,S.y=-b*n+d,S.z=R*Y,h.push(S.x,S.y,S.z),x.set(ie,A,Y).normalize(),f.push(x.x,x.y,x.z),p.push(B,1-b),E.push(g++)}y.push(E)}for(let C=0;C0||E!==0)&&(u.push(b,R,B),I+=3),(t>0||E!==s-1)&&(u.push(R,N,B),I+=3)}c.addGroup(m,I,0),m+=I}function v(x){let S=g,I=new Pe,A=new se,C=0,E=x===!0?e:t,b=x===!0?1:-1;for(let N=1;N<=i;N++)h.push(0,d*b,0),f.push(0,b,0),p.push(.5,.5),g++;let R=g;for(let N=0;N<=i;N++){let V=N/i*l+a,ie=Math.cos(V),Y=Math.sin(V);A.x=E*Y,A.y=d*b,A.z=E*ie,h.push(A.x,A.y,A.z),f.push(0,b,0),I.x=ie*.5+.5,I.y=Y*.5*b+.5,p.push(I.x,I.y),g++}for(let N=0;N0)l=i-1;else{l=i;break}if(i=l,n[i]===o)return i/(s-1);let u=n[i],f=n[i+1]-u,p=(o-u)/f;return(i+p)/(s-1)}getTangent(e,t){let i=e-1e-4,s=e+1e-4;i<0&&(i=0),s>1&&(s=1);let o=this.getPoint(i),a=this.getPoint(s),l=t||(o.isVector2?new Pe:new se);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){let n=new se,i=[],s=[],o=[],a=new se,l=new Je;for(let p=0;p<=e;p++){let g=p/e;i[p]=this.getTangentAt(g,new se)}s[0]=new se,o[0]=new se;let c=Number.MAX_VALUE,u=Math.abs(i[0].x),h=Math.abs(i[0].y),f=Math.abs(i[0].z);u<=c&&(c=u,n.set(1,0,0)),h<=c&&(c=h,n.set(0,1,0)),f<=c&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),s[0].crossVectors(i[0],a),o[0].crossVectors(i[0],s[0]);for(let p=1;p<=e;p++){if(s[p]=s[p-1].clone(),o[p]=o[p-1].clone(),a.crossVectors(i[p-1],i[p]),a.length()>Number.EPSILON){a.normalize();let g=Math.acos(Pt(i[p-1].dot(i[p]),-1,1));s[p].applyMatrix4(l.makeRotationAxis(a,g))}o[p].crossVectors(i[p],s[p])}if(t===!0){let p=Math.acos(Pt(s[0].dot(s[e]),-1,1));p/=e,i[0].dot(a.crossVectors(s[0],s[e]))>0&&(p=-p);for(let g=1;g<=e;g++)s[g].applyMatrix4(l.makeRotationAxis(i[g],p*g)),o[g].crossVectors(i[g],s[g])}return{tangents:i,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},Oa=class extends si{constructor(e=0,t=0,n=1,i=1,s=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t=new Pe){let n=t,i=Math.PI*2,s=this.aEndAngle-this.aStartAngle,o=Math.abs(s)i;)s-=i;s0?0:(Math.floor(Math.abs(a)/s)+1)*s:l===0&&a===s-1&&(a=s-2,l=1);let c,u;this.closed||a>0?c=i[(a-1)%s]:(ah.subVectors(i[0],i[1]).add(i[0]),c=ah);let h=i[a%s],f=i[(a+1)%s];if(this.closed||a+2i.length-2?i.length-1:o+1],h=i[o>i.length-3?i.length-1:o+2];return n.set($g(a,l.x,c.x,u.x,h.x),$g(a,l.y,c.y,u.y,h.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){let o=i[s]-n,a=this.curves[s],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let h=c.getPoint(0);h.equals(this.currentPoint)||this.lineTo(h.x,h.y)}this.curves.push(c);let u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},$r=class extends Cr{constructor(e){super(e),this.uuid=us(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,i=this.holes.length;n80*t){a=1/0,l=1/0;let u=-1/0,h=-1/0;for(let f=t;fu&&(u=p),g>h&&(h=g)}c=Math.max(u-a,h-l),c=c!==0?32767/c:0}return dc(s,o,t,a,l,c,0),o}function ry(r,e,t,n,i){let s;if(i===$v(r,e,t,n)>0)for(let o=e;o=e;o-=n)s=Qg(o/n|0,r[o],r[o+1],s);return s&&Da(s,s.next)&&(mc(s),s=s.next),s}function fo(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(Da(t,t.next)||mn(t.prev,t,t.next)===0)){if(mc(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function dc(r,e,t,n,i,s,o){if(!r)return;!o&&s&&qv(r,n,i,s);let a=r;for(;r.prev!==r.next;){let l=r.prev,c=r.next;if(s?kv(r,n,i,s):Uv(r)){e.push(l.i,r.i,c.i),mc(r),r=c.next,a=c.next;continue}if(r=c,r===a){o?o===1?(r=Bv(fo(r),e),dc(r,e,t,n,i,s,2)):o===2&&Gv(r,e,t,n,i,s):dc(fo(r),e,t,n,i,s,1);break}}}function Uv(r){let e=r.prev,t=r,n=r.next;if(mn(e,t,n)>=0)return!1;let i=e.x,s=t.x,o=n.x,a=e.y,l=t.y,c=n.y,u=Math.min(i,s,o),h=Math.min(a,l,c),f=Math.max(i,s,o),p=Math.max(a,l,c),g=n.next;for(;g!==e;){if(g.x>=u&&g.x<=f&&g.y>=h&&g.y<=p&&Kl(i,a,s,l,o,c,g.x,g.y)&&mn(g.prev,g,g.next)>=0)return!1;g=g.next}return!0}function kv(r,e,t,n){let i=r.prev,s=r,o=r.next;if(mn(i,s,o)>=0)return!1;let a=i.x,l=s.x,c=o.x,u=i.y,h=s.y,f=o.y,p=Math.min(a,l,c),g=Math.min(u,h,f),y=Math.max(a,l,c),d=Math.max(u,h,f),m=ip(p,g,e,t,n),_=ip(y,d,e,t,n),v=r.prevZ,x=r.nextZ;for(;v&&v.z>=m&&x&&x.z<=_;){if(v.x>=p&&v.x<=y&&v.y>=g&&v.y<=d&&v!==i&&v!==o&&Kl(a,u,l,h,c,f,v.x,v.y)&&mn(v.prev,v,v.next)>=0||(v=v.prevZ,x.x>=p&&x.x<=y&&x.y>=g&&x.y<=d&&x!==i&&x!==o&&Kl(a,u,l,h,c,f,x.x,x.y)&&mn(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;v&&v.z>=m;){if(v.x>=p&&v.x<=y&&v.y>=g&&v.y<=d&&v!==i&&v!==o&&Kl(a,u,l,h,c,f,v.x,v.y)&&mn(v.prev,v,v.next)>=0)return!1;v=v.prevZ}for(;x&&x.z<=_;){if(x.x>=p&&x.x<=y&&x.y>=g&&x.y<=d&&x!==i&&x!==o&&Kl(a,u,l,h,c,f,x.x,x.y)&&mn(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function Bv(r,e){let t=r;do{let n=t.prev,i=t.next.next;!Da(n,i)&&oy(n,t,t.next,i)&&pc(n,i)&&pc(i,n)&&(e.push(n.i,t.i,i.i),mc(t),mc(t.next),t=r=i),t=t.next}while(t!==r);return fo(t)}function Gv(r,e,t,n,i,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&Kv(o,a)){let l=ay(o,a);o=fo(o,o.next),l=fo(l,l.next),dc(o,e,t,n,i,s,0),dc(l,e,t,n,i,s,0);return}a=a.next}o=o.next}while(o!==r)}function Vv(r,e,t,n){let i=[];for(let s=0,o=e.length;s=t.next.y&&t.next.y!==t.y){let h=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(h<=n&&h>s&&(s=h,o=t.x=t.x&&t.x>=l&&n!==t.x&&sy(io.x||t.x===o.x&&Xv(o,t)))&&(o=t,u=h)}t=t.next}while(t!==a);return o}function Xv(r,e){return mn(r.prev,r,e.prev)<0&&mn(e.next,r,r.next)<0}function qv(r,e,t,n){let i=r;do i.z===0&&(i.z=ip(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,jv(i)}function jv(r){let e,t=1;do{let n=r,i;r=null;let s=null;for(e=0;n;){e++;let o=n,a=0;for(let c=0;c0||l>0&&o;)a!==0&&(l===0||!o||n.z<=o.z)?(i=n,n=n.nextZ,a--):(i=o,o=o.nextZ,l--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;n=o}s.nextZ=null,t*=2}while(e>1);return r}function ip(r,e,t,n,i){return r=(r-t)*i|0,e=(e-n)*i|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function Yv(r){let e=r,t=r;do(e.x=(r-o)*(s-a)&&(r-o)*(n-a)>=(t-o)*(e-a)&&(t-o)*(s-a)>=(i-o)*(n-a)}function Kl(r,e,t,n,i,s,o,a){return!(r===o&&e===a)&&sy(r,e,t,n,i,s,o,a)}function Kv(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!Zv(r,e)&&(pc(r,e)&&pc(e,r)&&Jv(r,e)&&(mn(r.prev,r,e.prev)||mn(r,e.prev,e))||Da(r,e)&&mn(r.prev,r,r.next)>0&&mn(e.prev,e,e.next)>0)}function mn(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function Da(r,e){return r.x===e.x&&r.y===e.y}function oy(r,e,t,n){let i=ch(mn(r,e,t)),s=ch(mn(r,e,n)),o=ch(mn(t,n,r)),a=ch(mn(t,n,e));return!!(i!==s&&o!==a||i===0&&lh(r,t,e)||s===0&&lh(r,n,e)||o===0&&lh(t,r,n)||a===0&&lh(t,e,n))}function lh(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function ch(r){return r>0?1:r<0?-1:0}function Zv(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&oy(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function pc(r,e){return mn(r.prev,r,r.next)<0?mn(r,e,r.next)>=0&&mn(r,r.prev,e)>=0:mn(r,e,r.prev)<0||mn(r,r.next,e)<0}function Jv(r,e){let t=r,n=!1,i=(r.x+e.x)/2,s=(r.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&i<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function ay(r,e){let t=rp(r.i,r.x,r.y),n=rp(e.i,e.x,e.y),i=r.next,s=e.prev;return r.next=e,e.prev=r,t.next=i,i.prev=t,n.next=t,t.prev=n,s.next=n,n.prev=s,n}function Qg(r,e,t,n){let i=rp(r,e,t);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function mc(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function rp(r,e,t){return{i:r,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function $v(r,e,t,n){let i=0;for(let s=e,o=t-n;s2&&r[e-1].equals(r[0])&&r.pop()}function t0(r,e){for(let t=0;tNumber.EPSILON){let Q=Math.sqrt(D),ne=Math.sqrt(L*L+O*O),oe=ae.x-H/Q,he=ae.y+ve/Q,ge=pe.x-O/ne,de=pe.y+L/ne,Ee=((ge-oe)*O-(de-he)*L)/(ve*O-H*L);ue=oe+ve*Ee-w.x,ee=he+H*Ee-w.y;let Re=ue*ue+ee*ee;if(Re<=2)return new Pe(ue,ee);$=Math.sqrt(Re/2)}else{let Q=!1;ve>Number.EPSILON?L>Number.EPSILON&&(Q=!0):ve<-Number.EPSILON?L<-Number.EPSILON&&(Q=!0):Math.sign(H)===Math.sign(O)&&(Q=!0),Q?(ue=-H,ee=ve,$=Math.sqrt(D)):(ue=ve,ee=H,$=Math.sqrt(D/2))}return new Pe(ue/$,ee/$)}let le=[];for(let w=0,ae=ie.length,pe=ae-1,ue=w+1;w=0;w--){let ae=w/d,pe=p*Math.cos(ae*Math.PI/2),ue=g*Math.sin(ae*Math.PI/2)+y;for(let ee=0,$=ie.length;ee<$;ee++){let ve=Y(ie[ee],le[ee],ue);j(ve.x,ve.y,h+pe)}for(let ee=0,$=R.length;ee<$;ee++){let ve=R[ee];Te=ye[ee];for(let H=0,L=ve.length;H=0;){let ue=pe,ee=pe-1;ee<0&&(ee=w.length-1);for(let $=0,ve=u+d*2;$0)&&p.push(v,x,I),(m!==n-1||l=s)){let a=t[1];e=s)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=n.slice(s,o),this.values=this.values.slice(s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(i!==void 0&&t_(i))for(let a=0,l=i.length;a!==l;++a){let c=i[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===hh,s=e.length-1,o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*n,l=o*n,c=0;c!==n;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=e.slice(0,o),this.values=t.slice(0,o*n)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};yi.prototype.ValueTypeName="";yi.prototype.TimeBufferType=Float32Array;yi.prototype.ValueBufferType=Float32Array;yi.prototype.DefaultInterpolation=ph;var ns=class extends yi{constructor(e,t,n){super(e,t,n)}};ns.prototype.ValueTypeName="bool";ns.prototype.ValueBufferType=Array;ns.prototype.DefaultInterpolation=Ql;ns.prototype.InterpolantFactoryMethodLinear=void 0;ns.prototype.InterpolantFactoryMethodSmooth=void 0;var yc=class extends yi{constructor(e,t,n,i){super(e,t,n,i)}};yc.prototype.ValueTypeName="color";var is=class extends yi{constructor(e,t,n,i){super(e,t,n,i)}};is.prototype.ValueTypeName="number";var Nh=class extends yo{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(i-t),c=e*a;for(let u=c+a;c!==u;c+=4)an.slerpFlat(s,0,o,c-a,o,c,l);return s}},Hi=class extends yi{constructor(e,t,n,i){super(e,t,n,i)}InterpolantFactoryMethodLinear(e){return new Nh(this.times,this.values,this.getValueSize(),e)}};Hi.prototype.ValueTypeName="quaternion";Hi.prototype.InterpolantFactoryMethodSmooth=void 0;var rs=class extends yi{constructor(e,t,n){super(e,t,n)}};rs.prototype.ValueTypeName="string";rs.prototype.ValueBufferType=Array;rs.prototype.DefaultInterpolation=Ql;rs.prototype.InterpolantFactoryMethodLinear=void 0;rs.prototype.InterpolantFactoryMethodSmooth=void 0;var Wi=class extends yi{constructor(e,t,n,i){super(e,t,n,i)}};Wi.prototype.ValueTypeName="vector";var Ps=class{constructor(e="",t=-1,n=[],i=V0){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=us(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let o=0,a=n.length;o!==a;++o)t.push(r_(n[o]).scale(i));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=n.length;s!==o;++s)t.push(yi.toJSON(n[s]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let s=t.length,o=[];for(let a=0;a1){let h=u[1],f=i[h];f||(i[h]=f=[]),f.push(c)}}let o=[];for(let a in i)o.push(this.CreateFromMorphTargetSequence(a,i[a],t,n));return o}static parseAnimation(e,t){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let n=function(h,f,p,g,y){if(p.length!==0){let d=[],m=[];ly(p,d,m,g),d.length!==0&&y.push(new h(f,d,m))}},i=[],s=e.name||"default",o=e.fps||30,a=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let h=0;h{t&&t(s),this.manager.itemEnd(e)},0),s;if(Kr[e]!==void 0){Kr[e].push({onLoad:t,onProgress:n,onError:i});return}Kr[e]=[],Kr[e].push({onLoad:t,onProgress:n,onError:i});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;let u=Kr[e],h=c.body.getReader(),f=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),p=f?parseInt(f):0,g=p!==0,y=0,d=new ReadableStream({start(m){_();function _(){h.read().then(({done:v,value:x})=>{if(v)m.close();else{y+=x.byteLength;let S=new ProgressEvent("progress",{lengthComputable:g,loaded:y,total:p});for(let I=0,A=u.length;I{m.error(v)})}}});return new Response(d)}else throw new op(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,a));case"json":return c.json();default:if(a==="")return c.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),f=h&&h[1]?h[1].toLowerCase():void 0,p=new TextDecoder(f);return c.arrayBuffer().then(g=>p.decode(g))}}}).then(c=>{xc.add(e,c);let u=Kr[e];delete Kr[e];for(let h=0,f=u.length;h{let u=Kr[e];if(u===void 0)throw this.manager.itemError(e),c;delete Kr[e];for(let h=0,f=u.length;h{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}};var vc=class extends zt{constructor(e){super(e)}load(e,t,n,i){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,o=xc.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;let a=Aa("img");function l(){u(),xc.add(e,this),t&&t(this),s.manager.itemEnd(e)}function c(h){u(),i&&i(h),s.manager.itemError(e),s.manager.itemEnd(e)}function u(){a.removeEventListener("load",l,!1),a.removeEventListener("error",c,!1)}return a.addEventListener("load",l,!1),a.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(a.crossOrigin=this.crossOrigin),s.manager.itemStart(e),a.src=e,a}},_c=class extends zt{constructor(e){super(e)}load(e,t,n,i){let s=new Ia;s.colorSpace=yt;let o=new vc(this.manager);o.setCrossOrigin(this.crossOrigin),o.setPath(this.path);let a=0;function l(c){o.load(e[c],function(u){s.images[c]=u,a++,a===6&&(s.needsUpdate=!0,t&&t(s))},void 0,i)}for(let c=0;c=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,t){return t.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,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,l0).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)}};var ar=class{constructor(){this.type="ShapePath",this.color=new He,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Cr,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,s,o){return this.currentPath.bezierCurveTo(e,t,n,i,s,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(m){let _=[];for(let v=0,x=m.length;vNumber.EPSILON){if(b<0&&(A=_[I],E=-E,C=_[S],b=-b),m.yC.y)continue;if(m.y===A.y){if(m.x===A.x)return!0}else{let R=b*(m.x-A.x)-E*(m.y-A.y);if(R===0)return!0;if(R<0)continue;x=!x}}else{if(m.y!==A.y)continue;if(C.x<=m.x&&m.x<=A.x||A.x<=m.x&&m.x<=C.x)return!0}}return x}let i=gi.isClockWise,s=this.subPaths;if(s.length===0)return[];let o,a,l,c=[];if(s.length===1)return a=s[0],l=new $r,l.curves=a.curves,c.push(l),c;let u=!i(s[0].getPoints());u=e?!u:u;let h=[],f=[],p=[],g=0,y;f[g]=void 0,p[g]=[];for(let m=0,_=s.length;m<_;m++)a=s[m],y=a.getPoints(),o=i(y),o=e?!o:o,o?(!u&&f[g]&&g++,f[g]={s:new $r,p:y},f[g].s.curves=a.curves,u&&g++,p[g]=[]):p[g].push({h:a,p:y[0]});if(!f[0])return t(s);if(f.length>1){let m=!1,_=0;for(let v=0,x=f.length;v0&&m===!1&&(p=h)}let d;for(let m=0,_=f.length;m<_;m++){l=f[m].s,c.push(l),d=p[m];for(let v=0,x=d.length;vp.start-g.start);let f=0;for(let p=1;p{var Kh=Object.defineProperty;var wv=Object.getOwnPropertyDescriptor : cases.z; return clamp( threshold , 1.0e-6, 1.0 ); } -#endif`,Ax=`#ifdef USE_ALPHAMAP +#endif`,y_=`#ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; -#endif`,wx=`#ifdef USE_ALPHAMAP +#endif`,x_=`#ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,Cx=`#ifdef USE_ALPHATEST +#endif`,v_=`#ifdef USE_ALPHATEST #ifdef ALPHA_TO_COVERAGE diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); if ( diffuseColor.a == 0.0 ) discard; #else if ( diffuseColor.a < alphaTest ) discard; #endif -#endif`,Rx=`#ifdef USE_ALPHATEST +#endif`,__=`#ifdef USE_ALPHATEST uniform float alphaTest; -#endif`,Ix=`#ifdef USE_AOMAP +#endif`,T_=`#ifdef USE_AOMAP float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; reflectedLight.indirectDiffuse *= ambientOcclusion; #if defined( USE_CLEARCOAT ) @@ -103,12 +103,16 @@ var OV=(()=>{var Kh=Object.defineProperty;var wv=Object.getOwnPropertyDescriptor float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); #endif -#endif`,Px=`#ifdef USE_AOMAP +#endif`,M_=`#ifdef USE_AOMAP uniform sampler2D aoMap; uniform float aoMapIntensity; -#endif`,Nx=`#ifdef USE_BATCHING - attribute float batchId; +#endif`,E_=`#ifdef USE_BATCHING + #if ! defined( GL_ANGLE_multi_draw ) + #define gl_DrawID _gl_DrawID + uniform int _gl_DrawID; + #endif uniform highp sampler2D batchingTexture; + uniform highp usampler2D batchingIdTexture; mat4 getBatchingMatrix( const in float i ) { int size = textureSize( batchingTexture, 0 ).x; int j = int( i ) * 4; @@ -120,15 +124,31 @@ var OV=(()=>{var Kh=Object.defineProperty;var wv=Object.getOwnPropertyDescriptor vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,Lx=`#ifdef USE_BATCHING - mat4 batchingMatrix = getBatchingMatrix( batchId ); -#endif`,Ox=`vec3 transformed = vec3( position ); + float getIndirectIndex( const in int i ) { + int size = textureSize( batchingIdTexture, 0 ).x; + int x = i % size; + int y = i / size; + return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); + } +#endif +#ifdef USE_BATCHING_COLOR + uniform sampler2D batchingColorTexture; + vec3 getBatchingColor( const in float i ) { + int size = textureSize( batchingColorTexture, 0 ).x; + int j = int( i ); + int x = j % size; + int y = j / size; + return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; + } +#endif`,b_=`#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); +#endif`,S_=`vec3 transformed = vec3( position ); #ifdef USE_ALPHAHASH vPosition = vec3( position ); -#endif`,Dx=`vec3 objectNormal = vec3( normal ); +#endif`,A_=`vec3 objectNormal = vec3( normal ); #ifdef USE_TANGENT vec3 objectTangent = vec3( tangent.xyz ); -#endif`,Fx=`float G_BlinnPhong_Implicit( ) { +#endif`,w_=`float G_BlinnPhong_Implicit( ) { return 0.25; } float D_BlinnPhong( const in float shininess, const in float dotNH ) { @@ -142,7 +162,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve float G = G_BlinnPhong_Implicit( ); float D = D_BlinnPhong( shininess, dotNH ); return F * ( G * D ); -} // validated`,Ux=`#ifdef USE_IRIDESCENCE +} // validated`,C_=`#ifdef USE_IRIDESCENCE const mat3 XYZ_TO_REC709 = mat3( 3.2404542, -0.9692660, 0.0556434, -1.5371385, 1.8760108, -0.2040259, @@ -205,7 +225,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve } return max( I, vec3( 0.0 ) ); } -#endif`,kx=`#ifdef USE_BUMPMAP +#endif`,I_=`#ifdef USE_BUMPMAP uniform sampler2D bumpMap; uniform float bumpScale; vec2 dHdxy_fwd() { @@ -226,7 +246,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); return normalize( abs( fDet ) * surf_norm - vGrad ); } -#endif`,Bx=`#if NUM_CLIPPING_PLANES > 0 +#endif`,R_=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #ifdef ALPHA_TO_COVERAGE float distanceToPlane, distanceGradient; @@ -272,28 +292,28 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve if ( clipped ) discard; #endif #endif -#endif`,Gx=`#if NUM_CLIPPING_PLANES > 0 +#endif`,P_=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,Vx=`#if NUM_CLIPPING_PLANES > 0 +#endif`,N_=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,zx=`#if NUM_CLIPPING_PLANES > 0 +#endif`,L_=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,Hx=`#if defined( USE_COLOR_ALPHA ) +#endif`,O_=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; -#endif`,Wx=`#if defined( USE_COLOR_ALPHA ) +#endif`,D_=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; -#endif`,Xx=`#if defined( USE_COLOR_ALPHA ) +#endif`,F_=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; -#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) varying vec3 vColor; -#endif`,jx=`#if defined( USE_COLOR_ALPHA ) +#endif`,U_=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); -#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) vColor = vec3( 1.0 ); #endif #ifdef USE_COLOR @@ -301,7 +321,11 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #endif #ifdef USE_INSTANCING_COLOR vColor.xyz *= instanceColor.xyz; -#endif`,qx=`#define PI 3.141592653589793 +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,k_=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -357,10 +381,6 @@ mat3 transposeMat3( const in mat3 m ) { tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); return tmp; } -float luminance( const in vec3 rgb ) { - const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); - return dot( weights, rgb ); -} bool isPerspectiveMatrix( mat4 m ) { return m[ 2 ][ 3 ] == - 1.0; } @@ -379,7 +399,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,Yx=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,B_=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -472,7 +492,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,Kx=`vec3 transformedNormal = objectNormal; +#endif`,G_=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -501,46 +521,29 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,Zx=`#ifdef USE_DISPLACEMENTMAP +#endif`,V_=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,Jx=`#ifdef USE_DISPLACEMENTMAP +#endif`,z_=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,$x=`#ifdef USE_EMISSIVEMAP +#endif`,H_=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE + emissiveColor = sRGBTransferEOTF( emissiveColor ); + #endif totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,Qx=`#ifdef USE_EMISSIVEMAP +#endif`,W_=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,e_="gl_FragColor = linearToOutputTexel( gl_FragColor );",t_=` -const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( - vec3( 0.8224621, 0.177538, 0.0 ), - vec3( 0.0331941, 0.9668058, 0.0 ), - vec3( 0.0170827, 0.0723974, 0.9105199 ) -); -const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( - vec3( 1.2249401, - 0.2249404, 0.0 ), - vec3( - 0.0420569, 1.0420571, 0.0 ), - vec3( - 0.0196376, - 0.0786361, 1.0982735 ) -); -vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { - return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); -} -vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { - return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); -} -vec4 LinearTransferOETF( in vec4 value ) { +#endif`,X_="gl_FragColor = linearToOutputTexel( gl_FragColor );",q_=`vec4 LinearTransferOETF( in vec4 value ) { return value; } +vec4 sRGBTransferEOTF( in vec4 value ) { + return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); +} vec4 sRGBTransferOETF( in vec4 value ) { return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); -} -vec4 LinearToLinear( in vec4 value ) { - return value; -} -vec4 LinearTosRGB( in vec4 value ) { - return sRGBTransferOETF( value ); -}`,n_=`#ifdef USE_ENVMAP +}`,j_=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -569,7 +572,7 @@ vec4 LinearTosRGB( in vec4 value ) { #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif -#endif`,i_=`#ifdef USE_ENVMAP +#endif`,Y_=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; uniform mat3 envMapRotation; @@ -579,7 +582,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform sampler2D envMap; #endif -#endif`,r_=`#ifdef USE_ENVMAP +#endif`,K_=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -590,7 +593,7 @@ vec4 LinearTosRGB( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,s_=`#ifdef USE_ENVMAP +#endif`,Z_=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -601,7 +604,7 @@ vec4 LinearTosRGB( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,o_=`#ifdef USE_ENVMAP +#endif`,J_=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -618,18 +621,18 @@ vec4 LinearTosRGB( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,a_=`#ifdef USE_FOG +#endif`,$_=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,l_=`#ifdef USE_FOG +#endif`,Q_=`#ifdef USE_FOG varying float vFogDepth; -#endif`,c_=`#ifdef USE_FOG +#endif`,eT=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,u_=`#ifdef USE_FOG +#endif`,tT=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -638,7 +641,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,h_=`#ifdef USE_GRADIENTMAP +#endif`,nT=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -650,16 +653,12 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,f_=`#ifdef USE_LIGHTMAP - vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); - vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; - reflectedLight.indirectDiffuse += lightMapIrradiance; -#endif`,d_=`#ifdef USE_LIGHTMAP +}`,iT=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,p_=`LambertMaterial material; +#endif`,rT=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,m_=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,sT=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -673,7 +672,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,g_=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,oT=`uniform bool receiveShadow; uniform vec3 ambientLightColor; #if defined( USE_LIGHT_PROBES ) uniform vec3 lightProbe[ 9 ]; @@ -701,18 +700,11 @@ vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { return irradiance; } float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { - #if defined ( LEGACY_LIGHTS ) - if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { - return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); - } - return 1.0; - #else - float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); - if ( cutoffDistance > 0.0 ) { - distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); - } - return distanceFalloff; - #endif + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; } float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { return smoothstep( coneCosine, penumbraCosine, angleCosine ); @@ -796,7 +788,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } -#endif`,v_=`#ifdef USE_ENVMAP +#endif`,aT=`#ifdef USE_ENVMAP vec3 getIBLIrradiance( const in vec3 normal ) { #ifdef ENVMAP_TYPE_CUBE_UV vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -829,8 +821,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi #endif } #endif -#endif`,y_=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,x_=`varying vec3 vViewPosition; +#endif`,lT=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,cT=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -842,11 +834,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,__=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,uT=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,T_=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,hT=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -863,7 +855,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,M_=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,fT=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); @@ -906,6 +898,9 @@ material.roughness = min( material.roughness, 1.0 ); material.clearcoatRoughness += geometryRoughness; material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); #endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif #ifdef USE_IRIDESCENCE material.iridescence = iridescence; material.iridescenceIOR = iridescenceIOR; @@ -946,11 +941,12 @@ material.roughness = min( material.roughness, 1.0 ); material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,E_=`struct PhysicalMaterial { +#endif`,dT=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; float specularF90; + float dispersion; #ifdef USE_CLEARCOAT float clearcoat; float clearcoatRoughness; @@ -1246,7 +1242,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,b_=` +}`,pT=` vec3 geometryPosition = - vViewPosition; vec3 geometryNormal = normal; vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); @@ -1278,7 +1274,7 @@ IncidentLight directLight; getPointLightInfo( pointLight, geometryPosition, directLight ); #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) pointLightShadow = pointLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; #endif RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); } @@ -1312,7 +1308,7 @@ IncidentLight directLight; #undef SPOT_LIGHT_MAP_INDEX #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) spotLightShadow = spotLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; #endif RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); } @@ -1329,7 +1325,7 @@ IncidentLight directLight; getDirectionalLightInfo( directionalLight, directLight ); #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; #endif RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); } @@ -1361,7 +1357,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,S_=`#if defined( RE_IndirectDiffuse ) +#endif`,mT=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1380,33 +1376,32 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,A_=`#if defined( RE_IndirectDiffuse ) +#endif`,gT=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,w_=`#if defined( USE_LOGDEPTHBUF ) +#endif`,yT=`#if defined( USE_LOGDEPTHBUF ) gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,C_=`#if defined( USE_LOGDEPTHBUF ) +#endif`,xT=`#if defined( USE_LOGDEPTHBUF ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,R_=`#ifdef USE_LOGDEPTHBUF +#endif`,vT=`#ifdef USE_LOGDEPTHBUF varying float vFragDepth; varying float vIsPerspective; -#endif`,I_=`#ifdef USE_LOGDEPTHBUF +#endif`,_T=`#ifdef USE_LOGDEPTHBUF vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,P_=`#ifdef USE_MAP +#endif`,TT=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE - sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); - + sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,N_=`#ifdef USE_MAP +#endif`,MT=`#ifdef USE_MAP uniform sampler2D map; -#endif`,L_=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,ET=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1418,7 +1413,7 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,O_=`#if defined( USE_POINTS_UV ) +#endif`,bT=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1430,19 +1425,19 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,D_=`float metalnessFactor = metalness; +#endif`,ST=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,F_=`#ifdef USE_METALNESSMAP +#endif`,AT=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,U_=`#ifdef USE_INSTANCING_MORPH - float morphTargetInfluences[MORPHTARGETS_COUNT]; +#endif`,wT=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; } -#endif`,k_=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) +#endif`,CT=`#if defined( USE_MORPHCOLORS ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1451,61 +1446,31 @@ IncidentLight directLight; if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,B_=`#ifdef USE_MORPHNORMALS +#endif`,IT=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; - #ifdef MORPHTARGETS_TEXTURE - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; - } - #else - objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; - objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; - objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; - objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; - #endif -#endif`,G_=`#ifdef USE_MORPHTARGETS + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,RT=`#ifdef USE_MORPHTARGETS #ifndef USE_INSTANCING_MORPH uniform float morphTargetBaseInfluence; - #endif - #ifdef MORPHTARGETS_TEXTURE - #ifndef USE_INSTANCING_MORPH - uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; - #endif - uniform sampler2DArray morphTargetsTexture; - uniform ivec2 morphTargetsTextureSize; - vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { - int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; - int y = texelIndex / morphTargetsTextureSize.x; - int x = texelIndex - y * morphTargetsTextureSize.x; - ivec3 morphUV = ivec3( x, y, morphTargetIndex ); - return texelFetch( morphTargetsTexture, morphUV, 0 ); - } - #else - #ifndef USE_MORPHNORMALS - uniform float morphTargetInfluences[ 8 ]; - #else - uniform float morphTargetInfluences[ 4 ]; - #endif - #endif -#endif`,V_=`#ifdef USE_MORPHTARGETS + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,PT=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; - #ifdef MORPHTARGETS_TEXTURE - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; - } - #else - transformed += morphTarget0 * morphTargetInfluences[ 0 ]; - transformed += morphTarget1 * morphTargetInfluences[ 1 ]; - transformed += morphTarget2 * morphTargetInfluences[ 2 ]; - transformed += morphTarget3 * morphTargetInfluences[ 3 ]; - #ifndef USE_MORPHNORMALS - transformed += morphTarget4 * morphTargetInfluences[ 4 ]; - transformed += morphTarget5 * morphTargetInfluences[ 5 ]; - transformed += morphTarget6 * morphTargetInfluences[ 6 ]; - transformed += morphTarget7 * morphTargetInfluences[ 7 ]; - #endif - #endif -#endif`,z_=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,NT=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1546,7 +1511,7 @@ IncidentLight directLight; tbn2[1] *= faceDirection; #endif #endif -vec3 nonPerturbedNormal = normal;`,H_=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,LT=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1561,25 +1526,25 @@ vec3 nonPerturbedNormal = normal;`,H_=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,W_=`#ifndef FLAT_SHADED +#endif`,OT=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,X_=`#ifndef FLAT_SHADED +#endif`,DT=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,j_=`#ifndef FLAT_SHADED +#endif`,FT=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,q_=`#ifdef USE_NORMALMAP +#endif`,UT=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1601,13 +1566,13 @@ vec3 nonPerturbedNormal = normal;`,H_=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,Y_=`#ifdef USE_CLEARCOAT +#endif`,kT=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,K_=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,BT=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,Z_=`#ifdef USE_CLEARCOATMAP +#endif`,GT=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -1616,45 +1581,73 @@ vec3 nonPerturbedNormal = normal;`,H_=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,J_=`#ifdef USE_IRIDESCENCEMAP +#endif`,VT=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,$_=`#ifdef OPAQUE +#endif`,zT=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Q_=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,HT=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { return 2.0 * rgb.xyz - 1.0; } -const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; -const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); -const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); -const float ShiftRight8 = 1. / 256.; +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); vec4 packDepthToRGBA( const in float v ) { - vec4 r = vec4( fract( v * PackFactors ), v ); - r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); } float unpackRGBAToDepth( const in vec4 v ) { - return dot( v, UnpackFactors ); + return dot( v, UnpackFactors4 ); } -vec2 packDepthToRG( in highp float v ) { - return packDepthToRGBA( v ).yx; +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); } -float unpackRGToDepth( const in highp vec2 v ) { - return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; } -vec4 pack2HalfToRGBA( vec2 v ) { +vec4 pack2HalfToRGBA( const in vec2 v ) { vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); } -vec2 unpackRGBATo2Half( vec4 v ) { +vec2 unpackRGBATo2Half( const in vec4 v ) { return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); } float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { @@ -1668,9 +1661,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const } float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * depth - far ); -}`,eT=`#ifdef PREMULTIPLIED_ALPHA +}`,WT=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,tT=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,XT=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING mvPosition = batchingMatrix * mvPosition; #endif @@ -1678,22 +1671,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,qT=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,iT=`#ifdef DITHERING +#endif`,jT=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,rT=`float roughnessFactor = roughness; +#endif`,YT=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,sT=`#ifdef USE_ROUGHNESSMAP +#endif`,KT=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,oT=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,ZT=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -1704,6 +1697,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; struct DirectionalLightShadow { + float shadowIntensity; float shadowBias; float shadowNormalBias; float shadowRadius; @@ -1714,6 +1708,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING #if NUM_SPOT_LIGHT_SHADOWS > 0 uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; struct SpotLightShadow { + float shadowIntensity; float shadowBias; float shadowNormalBias; float shadowRadius; @@ -1725,6 +1720,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; struct PointLightShadow { + float shadowIntensity; float shadowBias; float shadowNormalBias; float shadowRadius; @@ -1751,7 +1747,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING } return occlusion; } - float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { float shadow = 1.0; shadowCoord.xyz /= shadowCoord.w; shadowCoord.z += shadowBias; @@ -1825,7 +1821,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); #endif } - return shadow; + return mix( 1.0, shadow, shadowIntensity ); } vec2 cubeToUV( vec3 v, float texelSizeY ) { vec3 absV = abs( v ); @@ -1848,7 +1844,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING } return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); } - float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { float shadow = 1.0; vec3 lightToPosition = shadowCoord.xyz; @@ -1874,9 +1870,9 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); #endif } - return shadow; + return mix( 1.0, shadow, shadowIntensity ); } -#endif`,aT=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,JT=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -1885,6 +1881,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; struct DirectionalLightShadow { + float shadowIntensity; float shadowBias; float shadowNormalBias; float shadowRadius; @@ -1894,6 +1891,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING #endif #if NUM_SPOT_LIGHT_SHADOWS > 0 struct SpotLightShadow { + float shadowIntensity; float shadowBias; float shadowNormalBias; float shadowRadius; @@ -1905,6 +1903,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; struct PointLightShadow { + float shadowIntensity; float shadowBias; float shadowNormalBias; float shadowRadius; @@ -1914,7 +1913,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,lT=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,$T=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif @@ -1946,7 +1945,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,cT=`float getShadowMask() { +#endif`,QT=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -1954,7 +1953,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING #pragma unroll_loop_start for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { directionalLight = directionalLightShadows[ i ]; - shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; } #pragma unroll_loop_end #endif @@ -1963,7 +1962,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING #pragma unroll_loop_start for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { spotLight = spotLightShadows[ i ]; - shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; } #pragma unroll_loop_end #endif @@ -1972,18 +1971,18 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING #pragma unroll_loop_start for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { pointLight = pointLightShadows[ i ]; - shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; } #pragma unroll_loop_end #endif #endif return shadow; -}`,uT=`#ifdef USE_SKINNING +}`,eM=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,hT=`#ifdef USE_SKINNING +#endif`,tM=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -1998,7 +1997,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,fT=`#ifdef USE_SKINNING +#endif`,nM=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -2006,7 +2005,7 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,dT=`#ifdef USE_SKINNING +#endif`,iM=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2017,17 +2016,17 @@ gl_Position = projectionMatrix * mvPosition;`,nT=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,pT=`float specularStrength; +#endif`,rM=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,mT=`#ifdef USE_SPECULARMAP +#endif`,sM=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,gT=`#if defined( TONE_MAPPING ) +#endif`,oM=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,vT=`#ifndef saturate +#endif`,aM=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -2038,7 +2037,7 @@ vec3 ReinhardToneMapping( vec3 color ) { color *= toneMappingExposure; return saturate( color / ( vec3( 1.0 ) + color ) ); } -vec3 OptimizedCineonToneMapping( vec3 color ) { +vec3 CineonToneMapping( vec3 color ) { color *= toneMappingExposure; color = max( vec3( 0.0 ), color - 0.004 ); return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); @@ -2110,21 +2109,21 @@ vec3 AgXToneMapping( vec3 color ) { return color; } vec3 NeutralToneMapping( vec3 color ) { - float startCompression = 0.8 - 0.04; - float desaturation = 0.15; + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; color *= toneMappingExposure; - float x = min(color.r, min(color.g, color.b)); + float x = min( color.r, min( color.g, color.b ) ); float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; color -= offset; - float peak = max(color.r, max(color.g, color.b)); - if (peak < startCompression) return color; - float d = 1. - startCompression; - float newPeak = 1. - d * d / (peak + d - startCompression); + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); color *= newPeak / peak; - float g = 1. - 1. / (desaturation * (peak - newPeak) + 1.); - return mix(color, newPeak * vec3(1, 1, 1), g); + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,lM=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2141,11 +2140,11 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISS vec3 n = inverseTransformDirection( normal, viewMatrix ); vec4 transmitted = getIBLVolumeRefraction( n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, - pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,xT=`#ifdef USE_TRANSMISSION +#endif`,cM=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2236,22 +2235,42 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISS } vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, - const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, const in vec3 attenuationColor, const in float attenuationDistance ) { - vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); - vec3 refractedRayExit = position + transmissionRay; - vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); - vec2 refractionCoords = ndcPos.xy / ndcPos.w; - refractionCoords += 1.0; - refractionCoords /= 2.0; - vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); - vec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + #else + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + #endif vec3 attenuatedColor = transmittance * transmittedLight.rgb; vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); } -#endif`,_T=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,uM=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2321,7 +2340,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,TT=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,hM=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2415,7 +2434,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,MT=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,fM=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2486,7 +2505,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,ET=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,dM=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING worldPosition = batchingMatrix * worldPosition; @@ -2495,12 +2514,12 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,yT=`#ifdef USE_TRANSMISS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`,bT=`varying vec2 vUv; +#endif`,pM=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,ST=`uniform sampler2D t2D; +}`,mM=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2512,14 +2531,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,AT=`varying vec3 vWorldDirection; +}`,gM=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,wT=`#ifdef ENVMAP_TYPE_CUBE +}`,yM=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -2542,14 +2561,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,CT=`varying vec3 vWorldDirection; +}`,xM=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,RT=`uniform samplerCube tCube; +}`,vM=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -2559,7 +2578,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,IT=`#include +}`,_M=`#include #include #include #include @@ -2586,7 +2605,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,PT=`#if DEPTH_PACKING == 3200 +}`,TM=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -2615,8 +2634,12 @@ void main() { gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); #elif DEPTH_PACKING == 3201 gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); #endif -}`,NT=`#define DISTANCE +}`,MM=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -2643,7 +2666,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,LT=`#define DISTANCE +}`,EM=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -2667,13 +2690,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); -}`,OT=`varying vec3 vWorldDirection; +}`,bM=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,DT=`uniform sampler2D tEquirect; +}`,SM=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -2682,7 +2705,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,FT=`uniform float scale; +}`,AM=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -2704,7 +2727,7 @@ void main() { #include #include #include -}`,UT=`uniform vec3 diffuse; +}`,wM=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -2732,7 +2755,7 @@ void main() { #include #include #include -}`,kT=`#include +}`,CM=`#include #include #include #include @@ -2764,7 +2787,7 @@ void main() { #include #include #include -}`,BT=`uniform vec3 diffuse; +}`,IM=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -2812,7 +2835,7 @@ void main() { #include #include #include -}`,GT=`#define LAMBERT +}`,RM=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -2851,7 +2874,7 @@ void main() { #include #include #include -}`,VT=`#define LAMBERT +}`,PM=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -2908,7 +2931,7 @@ void main() { #include #include #include -}`,zT=`#define MATCAP +}`,NM=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -2942,7 +2965,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,HT=`#define MATCAP +}`,LM=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -2988,7 +3011,7 @@ void main() { #include #include #include -}`,WT=`#define NORMAL +}`,OM=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -3021,7 +3044,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,XT=`#define NORMAL +}`,DM=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -3043,7 +3066,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,jT=`#define PHONG +}`,FM=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3082,7 +3105,7 @@ void main() { #include #include #include -}`,qT=`#define PHONG +}`,UM=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3141,7 +3164,7 @@ void main() { #include #include #include -}`,YT=`#define STANDARD +}`,kM=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3184,7 +3207,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,KT=`#define STANDARD +}`,BM=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3211,6 +3234,9 @@ uniform float opacity; uniform float clearcoat; uniform float clearcoatRoughness; #endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif #ifdef USE_IRIDESCENCE uniform float iridescence; uniform float iridescenceIOR; @@ -3306,7 +3332,7 @@ void main() { #include #include #include -}`,ZT=`#define TOON +}`,GM=`#define TOON varying vec3 vViewPosition; #include #include @@ -3343,7 +3369,7 @@ void main() { #include #include #include -}`,JT=`#define TOON +}`,VM=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3396,7 +3422,7 @@ void main() { #include #include #include -}`,$T=`uniform float size; +}`,zM=`uniform float size; uniform float scale; #include #include @@ -3427,7 +3453,7 @@ void main() { #include #include #include -}`,QT=`uniform vec3 diffuse; +}`,HM=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3452,7 +3478,7 @@ void main() { #include #include #include -}`,eM=`#include +}`,WM=`#include #include #include #include @@ -3475,7 +3501,7 @@ void main() { #include #include #include -}`,tM=`uniform vec3 color; +}`,XM=`uniform vec3 color; uniform float opacity; #include #include @@ -3491,7 +3517,7 @@ void main() { #include #include #include -}`,nM=`uniform float rotation; +}`,qM=`uniform float rotation; uniform vec2 center; #include #include @@ -3500,10 +3526,8 @@ uniform vec2 center; #include void main() { #include - vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); - vec2 scale; - scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); - scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); #ifndef USE_SIZEATTENUATION bool isPerspective = isPerspectiveMatrix( projectionMatrix ); if ( isPerspective ) scale *= - mvPosition.z; @@ -3517,7 +3541,7 @@ void main() { #include #include #include -}`,iM=`uniform vec3 diffuse; +}`,jM=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3542,7 +3566,7 @@ void main() { #include #include #include -}`,Et={alphahash_fragment:bx,alphahash_pars_fragment:Sx,alphamap_fragment:Ax,alphamap_pars_fragment:wx,alphatest_fragment:Cx,alphatest_pars_fragment:Rx,aomap_fragment:Ix,aomap_pars_fragment:Px,batching_pars_vertex:Nx,batching_vertex:Lx,begin_vertex:Ox,beginnormal_vertex:Dx,bsdfs:Fx,iridescence_fragment:Ux,bumpmap_pars_fragment:kx,clipping_planes_fragment:Bx,clipping_planes_pars_fragment:Gx,clipping_planes_pars_vertex:Vx,clipping_planes_vertex:zx,color_fragment:Hx,color_pars_fragment:Wx,color_pars_vertex:Xx,color_vertex:jx,common:qx,cube_uv_reflection_fragment:Yx,defaultnormal_vertex:Kx,displacementmap_pars_vertex:Zx,displacementmap_vertex:Jx,emissivemap_fragment:$x,emissivemap_pars_fragment:Qx,colorspace_fragment:e_,colorspace_pars_fragment:t_,envmap_fragment:n_,envmap_common_pars_fragment:i_,envmap_pars_fragment:r_,envmap_pars_vertex:s_,envmap_physical_pars_fragment:v_,envmap_vertex:o_,fog_vertex:a_,fog_pars_vertex:l_,fog_fragment:c_,fog_pars_fragment:u_,gradientmap_pars_fragment:h_,lightmap_fragment:f_,lightmap_pars_fragment:d_,lights_lambert_fragment:p_,lights_lambert_pars_fragment:m_,lights_pars_begin:g_,lights_toon_fragment:y_,lights_toon_pars_fragment:x_,lights_phong_fragment:__,lights_phong_pars_fragment:T_,lights_physical_fragment:M_,lights_physical_pars_fragment:E_,lights_fragment_begin:b_,lights_fragment_maps:S_,lights_fragment_end:A_,logdepthbuf_fragment:w_,logdepthbuf_pars_fragment:C_,logdepthbuf_pars_vertex:R_,logdepthbuf_vertex:I_,map_fragment:P_,map_pars_fragment:N_,map_particle_fragment:L_,map_particle_pars_fragment:O_,metalnessmap_fragment:D_,metalnessmap_pars_fragment:F_,morphinstance_vertex:U_,morphcolor_vertex:k_,morphnormal_vertex:B_,morphtarget_pars_vertex:G_,morphtarget_vertex:V_,normal_fragment_begin:z_,normal_fragment_maps:H_,normal_pars_fragment:W_,normal_pars_vertex:X_,normal_vertex:j_,normalmap_pars_fragment:q_,clearcoat_normal_fragment_begin:Y_,clearcoat_normal_fragment_maps:K_,clearcoat_pars_fragment:Z_,iridescence_pars_fragment:J_,opaque_fragment:$_,packing:Q_,premultiplied_alpha_fragment:eT,project_vertex:tT,dithering_fragment:nT,dithering_pars_fragment:iT,roughnessmap_fragment:rT,roughnessmap_pars_fragment:sT,shadowmap_pars_fragment:oT,shadowmap_pars_vertex:aT,shadowmap_vertex:lT,shadowmask_pars_fragment:cT,skinbase_vertex:uT,skinning_pars_vertex:hT,skinning_vertex:fT,skinnormal_vertex:dT,specularmap_fragment:pT,specularmap_pars_fragment:mT,tonemapping_fragment:gT,tonemapping_pars_fragment:vT,transmission_fragment:yT,transmission_pars_fragment:xT,uv_pars_fragment:_T,uv_pars_vertex:TT,uv_vertex:MT,worldpos_vertex:ET,background_vert:bT,background_frag:ST,backgroundCube_vert:AT,backgroundCube_frag:wT,cube_vert:CT,cube_frag:RT,depth_vert:IT,depth_frag:PT,distanceRGBA_vert:NT,distanceRGBA_frag:LT,equirect_vert:OT,equirect_frag:DT,linedashed_vert:FT,linedashed_frag:UT,meshbasic_vert:kT,meshbasic_frag:BT,meshlambert_vert:GT,meshlambert_frag:VT,meshmatcap_vert:zT,meshmatcap_frag:HT,meshnormal_vert:WT,meshnormal_frag:XT,meshphong_vert:jT,meshphong_frag:qT,meshphysical_vert:YT,meshphysical_frag:KT,meshtoon_vert:ZT,meshtoon_frag:JT,points_vert:$T,points_frag:QT,shadow_vert:eM,shadow_frag:tM,sprite_vert:nM,sprite_frag:iM},Ge={common:{diffuse:{value:new Ve(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ft},alphaMap:{value:null},alphaMapTransform:{value:new ft},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ft}},envmap:{envMap:{value:null},envMapRotation:{value:new ft},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ft}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ft}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ft},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ft},normalScale:{value:new Ce(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ft},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ft}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ft}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ft}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ve(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ve(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ft},alphaTest:{value:0},uvTransform:{value:new ft}},sprite:{diffuse:{value:new Ve(16777215)},opacity:{value:1},center:{value:new Ce(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ft},alphaMap:{value:null},alphaMapTransform:{value:new ft},alphaTest:{value:0}}},pr={basic:{uniforms:Jn([Ge.common,Ge.specularmap,Ge.envmap,Ge.aomap,Ge.lightmap,Ge.fog]),vertexShader:Et.meshbasic_vert,fragmentShader:Et.meshbasic_frag},lambert:{uniforms:Jn([Ge.common,Ge.specularmap,Ge.envmap,Ge.aomap,Ge.lightmap,Ge.emissivemap,Ge.bumpmap,Ge.normalmap,Ge.displacementmap,Ge.fog,Ge.lights,{emissive:{value:new Ve(0)}}]),vertexShader:Et.meshlambert_vert,fragmentShader:Et.meshlambert_frag},phong:{uniforms:Jn([Ge.common,Ge.specularmap,Ge.envmap,Ge.aomap,Ge.lightmap,Ge.emissivemap,Ge.bumpmap,Ge.normalmap,Ge.displacementmap,Ge.fog,Ge.lights,{emissive:{value:new Ve(0)},specular:{value:new Ve(1118481)},shininess:{value:30}}]),vertexShader:Et.meshphong_vert,fragmentShader:Et.meshphong_frag},standard:{uniforms:Jn([Ge.common,Ge.envmap,Ge.aomap,Ge.lightmap,Ge.emissivemap,Ge.bumpmap,Ge.normalmap,Ge.displacementmap,Ge.roughnessmap,Ge.metalnessmap,Ge.fog,Ge.lights,{emissive:{value:new Ve(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Et.meshphysical_vert,fragmentShader:Et.meshphysical_frag},toon:{uniforms:Jn([Ge.common,Ge.aomap,Ge.lightmap,Ge.emissivemap,Ge.bumpmap,Ge.normalmap,Ge.displacementmap,Ge.gradientmap,Ge.fog,Ge.lights,{emissive:{value:new Ve(0)}}]),vertexShader:Et.meshtoon_vert,fragmentShader:Et.meshtoon_frag},matcap:{uniforms:Jn([Ge.common,Ge.bumpmap,Ge.normalmap,Ge.displacementmap,Ge.fog,{matcap:{value:null}}]),vertexShader:Et.meshmatcap_vert,fragmentShader:Et.meshmatcap_frag},points:{uniforms:Jn([Ge.points,Ge.fog]),vertexShader:Et.points_vert,fragmentShader:Et.points_frag},dashed:{uniforms:Jn([Ge.common,Ge.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Et.linedashed_vert,fragmentShader:Et.linedashed_frag},depth:{uniforms:Jn([Ge.common,Ge.displacementmap]),vertexShader:Et.depth_vert,fragmentShader:Et.depth_frag},normal:{uniforms:Jn([Ge.common,Ge.bumpmap,Ge.normalmap,Ge.displacementmap,{opacity:{value:1}}]),vertexShader:Et.meshnormal_vert,fragmentShader:Et.meshnormal_frag},sprite:{uniforms:Jn([Ge.sprite,Ge.fog]),vertexShader:Et.sprite_vert,fragmentShader:Et.sprite_frag},background:{uniforms:{uvTransform:{value:new ft},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Et.background_vert,fragmentShader:Et.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ft}},vertexShader:Et.backgroundCube_vert,fragmentShader:Et.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Et.cube_vert,fragmentShader:Et.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Et.equirect_vert,fragmentShader:Et.equirect_frag},distanceRGBA:{uniforms:Jn([Ge.common,Ge.displacementmap,{referencePosition:{value:new oe},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Et.distanceRGBA_vert,fragmentShader:Et.distanceRGBA_frag},shadow:{uniforms:Jn([Ge.lights,Ge.fog,{color:{value:new Ve(0)},opacity:{value:1}}]),vertexShader:Et.shadow_vert,fragmentShader:Et.shadow_frag}};pr.physical={uniforms:Jn([pr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ft},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ft},clearcoatNormalScale:{value:new Ce(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ft},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ft},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ft},sheen:{value:0},sheenColor:{value:new Ve(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ft},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ft},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ft},transmissionSamplerSize:{value:new Ce},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ft},attenuationDistance:{value:0},attenuationColor:{value:new Ve(0)},specularColor:{value:new Ve(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ft},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ft},anisotropyVector:{value:new Ce},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ft}}]),vertexShader:Et.meshphysical_vert,fragmentShader:Et.meshphysical_frag};var yu={r:0,b:0,g:0},Hs=new hn,rM=new Ye;function sM(r,e,t,n,i,s,o){let a=new Ve(0),l=s===!0?0:1,c,u,h=null,f=0,p=null;function g(d,m){let _=!1,y=m.isScene===!0?m.background:null;y&&y.isTexture&&(y=(m.backgroundBlurriness>0?t:e).get(y)),y===null?v(a,l):y&&y.isColor&&(v(y,1),_=!0);let x=r.xr.getEnvironmentBlendMode();x==="additive"?n.buffers.color.setClear(0,0,0,1,o):x==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,o),(r.autoClear||_)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),y&&(y.isCubeTexture||y.mapping===ah)?(u===void 0&&(u=new Pt(new Zs(1,1,1),new mr({name:"BackgroundCubeMaterial",uniforms:ga(pr.backgroundCube.uniforms),vertexShader:pr.backgroundCube.vertexShader,fragmentShader:pr.backgroundCube.fragmentShader,side:Tn,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(w,I,C){this.matrixWorld.copyPosition(C.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),Hs.copy(m.backgroundRotation),Hs.x*=-1,Hs.y*=-1,Hs.z*=-1,y.isCubeTexture&&y.isRenderTargetTexture===!1&&(Hs.y*=-1,Hs.z*=-1),u.material.uniforms.envMap.value=y,u.material.uniforms.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=m.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(rM.makeRotationFromEuler(Hs)),u.material.toneMapped=Bt.getTransfer(y.colorSpace)!==Qt,(h!==y||f!==y.version||p!==r.toneMapping)&&(u.material.needsUpdate=!0,h=y,f=y.version,p=r.toneMapping),u.layers.enableAll(),d.unshift(u,u.geometry,u.material,0,0,null)):y&&y.isTexture&&(c===void 0&&(c=new Pt(new va(2,2),new mr({name:"BackgroundMaterial",uniforms:ga(pr.background.uniforms),vertexShader:pr.background.vertexShader,fragmentShader:pr.background.fragmentShader,side:wi,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(c)),c.material.uniforms.t2D.value=y,c.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,c.material.toneMapped=Bt.getTransfer(y.colorSpace)!==Qt,y.matrixAutoUpdate===!0&&y.updateMatrix(),c.material.uniforms.uvTransform.value.copy(y.matrix),(h!==y||f!==y.version||p!==r.toneMapping)&&(c.material.needsUpdate=!0,h=y,f=y.version,p=r.toneMapping),c.layers.enableAll(),d.unshift(c,c.geometry,c.material,0,0,null))}function v(d,m){d.getRGB(yu,p0(r)),n.buffers.color.setClear(yu.r,yu.g,yu.b,m,o)}return{getClearColor:function(){return a},setClearColor:function(d,m=1){a.set(d),l=m,v(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(d){l=d,v(a,l)},render:g}}function oM(r,e){let t=r.getParameter(r.MAX_VERTEX_ATTRIBS),n={},i=f(null),s=i,o=!1;function a(M,L,N,O,B){let ie=!1,$=h(O,N,L);s!==$&&(s=$,c(s.object)),ie=p(M,O,N,B),ie&&g(M,O,N,B),B!==null&&e.update(B,r.ELEMENT_ARRAY_BUFFER),(ie||o)&&(o=!1,x(M,L,N,O),B!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,e.get(B).buffer))}function l(){return r.createVertexArray()}function c(M){return r.bindVertexArray(M)}function u(M){return r.deleteVertexArray(M)}function h(M,L,N){let O=N.wireframe===!0,B=n[M.id];B===void 0&&(B={},n[M.id]=B);let ie=B[L.id];ie===void 0&&(ie={},B[L.id]=ie);let $=ie[O];return $===void 0&&($=f(l()),ie[O]=$),$}function f(M){let L=[],N=[],O=[];for(let B=0;B=0){let de=B[W],ye=ie[W];if(ye===void 0&&(W==="instanceMatrix"&&M.instanceMatrix&&(ye=M.instanceMatrix),W==="instanceColor"&&M.instanceColor&&(ye=M.instanceColor)),de===void 0||de.attribute!==ye||ye&&de.data!==ye.data)return!0;$++}return s.attributesNum!==$||s.index!==O}function g(M,L,N,O){let B={},ie=L.attributes,$=0,te=N.getAttributes();for(let W in te)if(te[W].location>=0){let de=ie[W];de===void 0&&(W==="instanceMatrix"&&M.instanceMatrix&&(de=M.instanceMatrix),W==="instanceColor"&&M.instanceColor&&(de=M.instanceColor));let ye={};ye.attribute=de,de&&de.data&&(ye.data=de.data),B[W]=ye,$++}s.attributes=B,s.attributesNum=$,s.index=O}function v(){let M=s.newAttributes;for(let L=0,N=M.length;L=0){let ae=B[te];if(ae===void 0&&(te==="instanceMatrix"&&M.instanceMatrix&&(ae=M.instanceMatrix),te==="instanceColor"&&M.instanceColor&&(ae=M.instanceColor)),ae!==void 0){let de=ae.normalized,ye=ae.itemSize,Me=e.get(ae);if(Me===void 0)continue;let ve=Me.buffer,R=Me.type,T=Me.bytesPerElement,S=R===r.INT||R===r.UNSIGNED_INT||ae.gpuType===r0;if(ae.isInterleavedBufferAttribute){let b=ae.data,V=b.stride,q=ae.offset;if(b.isInstancedInterleavedBuffer){for(let Y=0;Y0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";y="mediump"}return y==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let o=t.precision!==void 0?t.precision:"highp",a=s(o);a!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",a,"instead."),o=a);let l=t.logarithmicDepthBuffer===!0,c=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),u=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),h=r.getParameter(r.MAX_TEXTURE_SIZE),f=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),p=r.getParameter(r.MAX_VERTEX_ATTRIBS),g=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),v=r.getParameter(r.MAX_VARYING_VECTORS),d=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),m=u>0,_=r.getParameter(r.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:i,getMaxPrecision:s,precision:o,logarithmicDepthBuffer:l,maxTextures:c,maxVertexTextures:u,maxTextureSize:h,maxCubemapSize:f,maxAttributes:p,maxVertexUniforms:g,maxVaryings:v,maxFragmentUniforms:d,vertexTextures:m,maxSamples:_}}function cM(r){let e=this,t=null,n=0,i=!1,s=!1,o=new Gr,a=new ft,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(h,f){let p=h.length!==0||f||n!==0||i;return i=f,n=h.length,p},this.beginShadows=function(){s=!0,u(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(h,f){t=u(h,f,0)},this.setState=function(h,f,p){let g=h.clippingPlanes,v=h.clipIntersection,d=h.clipShadows,m=r.get(h);if(!i||g===null||g.length===0||s&&!d)s?u(null):c();else{let _=s?0:n,y=_*4,x=m.clippingState||null;l.value=x,x=u(g,f,y,p);for(let w=0;w!==y;++w)x[w]=t[w];m.clippingState=x,this.numIntersection=v?this.numPlanes:0,this.numPlanes+=_}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function u(h,f,p,g){let v=h!==null?h.length:0,d=null;if(v!==0){if(d=l.value,g!==!0||d===null){let m=p+v*4,_=f.matrixWorldInverse;a.getNormalMatrix(_),(d===null||d.length0){let c=new Kf(l.height);return c.fromEquirectangularTexture(r,o),e.set(o,c),o.addEventListener("dispose",i),t(c.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener("dispose",i);let l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}var gr=class extends zu{constructor(e=-1,t=1,n=1,i=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-e,o=n+e,a=i+t,l=i-t;if(this.view!==null&&this.view.enabled){let c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,o=s+c*this.view.width,a-=u*this.view.offsetY,l=a-u*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}},na=4,ug=[.125,.215,.35,.446,.526,.582],qs=20,Cf=new gr,hg=new Ve,Rf=null,If=0,Pf=0,Nf=!1,Xs=(1+Math.sqrt(5))/2,ea=1/Xs,fg=[new oe(1,1,1),new oe(-1,1,1),new oe(1,1,-1),new oe(-1,1,-1),new oe(0,Xs,ea),new oe(0,Xs,-ea),new oe(ea,0,Xs),new oe(-ea,0,Xs),new oe(Xs,ea,0),new oe(-Xs,ea,0)],Hu=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100){Rf=this._renderer.getRenderTarget(),If=this._renderer.getActiveCubeFace(),Pf=this._renderer.getActiveMipmapLevel(),Nf=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,n,i,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=mg(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=pg(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?y:0,y,y),u.setRenderTarget(i),v&&u.render(g,a),u.render(e,a)}g.geometry.dispose(),g.material.dispose(),u.toneMapping=f,u.autoClear=h,e.background=d}_textureToCubeUV(e,t){let n=this._renderer,i=e.mapping===ca||e.mapping===ua;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=mg()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=pg());let s=i?this._cubemapMaterial:this._equirectMaterial,o=new Pt(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;let l=this._cubeSize;xu(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(o,Cf)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let i=1;iqs&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${qs}`);let m=[],_=0;for(let C=0;Cy-na?i-y+na:0),I=4*(this._cubeSize-x);xu(t,w,I,3*x,2*x),l.setRenderTarget(t),l.render(h,Cf)}};function hM(r){let e=[],t=[],n=[],i=r,s=r-na+1+ug.length;for(let o=0;or-na?l=ug[o-r+na-1]:o===0&&(l=0),n.push(l);let c=1/(a-2),u=-c,h=1+c,f=[u,u,h,u,h,h,u,u,h,h,u,h],p=6,g=6,v=3,d=2,m=1,_=new Float32Array(v*g*p),y=new Float32Array(d*g*p),x=new Float32Array(m*g*p);for(let I=0;I2?0:-1,E=[C,P,0,C+2/3,P,0,C+2/3,P+1,0,C,P,0,C+2/3,P+1,0,C,P+1,0];_.set(E,v*g*I),y.set(f,d*g*I);let M=[I,I,I,I,I,I];x.set(M,m*g*I)}let w=new St;w.setAttribute("position",new Gn(_,v)),w.setAttribute("uv",new Gn(y,d)),w.setAttribute("faceIndex",new Gn(x,m)),e.push(w),i>na&&i--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function dg(r,e,t){let n=new Hr(r,e,t);return n.texture.mapping=ah,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function xu(r,e,t,n,i){r.viewport.set(e,t,n,i),r.scissor.set(e,t,n,i)}function fM(r,e,t){let n=new Float32Array(qs),i=new oe(0,1,0);return new mr({name:"SphericalGaussianBlur",defines:{n:qs,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:Id(),fragmentShader:` +}`,Ct={alphahash_fragment:m_,alphahash_pars_fragment:g_,alphamap_fragment:y_,alphamap_pars_fragment:x_,alphatest_fragment:v_,alphatest_pars_fragment:__,aomap_fragment:T_,aomap_pars_fragment:M_,batching_pars_vertex:E_,batching_vertex:b_,begin_vertex:S_,beginnormal_vertex:A_,bsdfs:w_,iridescence_fragment:C_,bumpmap_pars_fragment:I_,clipping_planes_fragment:R_,clipping_planes_pars_fragment:P_,clipping_planes_pars_vertex:N_,clipping_planes_vertex:L_,color_fragment:O_,color_pars_fragment:D_,color_pars_vertex:F_,color_vertex:U_,common:k_,cube_uv_reflection_fragment:B_,defaultnormal_vertex:G_,displacementmap_pars_vertex:V_,displacementmap_vertex:z_,emissivemap_fragment:H_,emissivemap_pars_fragment:W_,colorspace_fragment:X_,colorspace_pars_fragment:q_,envmap_fragment:j_,envmap_common_pars_fragment:Y_,envmap_pars_fragment:K_,envmap_pars_vertex:Z_,envmap_physical_pars_fragment:aT,envmap_vertex:J_,fog_vertex:$_,fog_pars_vertex:Q_,fog_fragment:eT,fog_pars_fragment:tT,gradientmap_pars_fragment:nT,lightmap_pars_fragment:iT,lights_lambert_fragment:rT,lights_lambert_pars_fragment:sT,lights_pars_begin:oT,lights_toon_fragment:lT,lights_toon_pars_fragment:cT,lights_phong_fragment:uT,lights_phong_pars_fragment:hT,lights_physical_fragment:fT,lights_physical_pars_fragment:dT,lights_fragment_begin:pT,lights_fragment_maps:mT,lights_fragment_end:gT,logdepthbuf_fragment:yT,logdepthbuf_pars_fragment:xT,logdepthbuf_pars_vertex:vT,logdepthbuf_vertex:_T,map_fragment:TT,map_pars_fragment:MT,map_particle_fragment:ET,map_particle_pars_fragment:bT,metalnessmap_fragment:ST,metalnessmap_pars_fragment:AT,morphinstance_vertex:wT,morphcolor_vertex:CT,morphnormal_vertex:IT,morphtarget_pars_vertex:RT,morphtarget_vertex:PT,normal_fragment_begin:NT,normal_fragment_maps:LT,normal_pars_fragment:OT,normal_pars_vertex:DT,normal_vertex:FT,normalmap_pars_fragment:UT,clearcoat_normal_fragment_begin:kT,clearcoat_normal_fragment_maps:BT,clearcoat_pars_fragment:GT,iridescence_pars_fragment:VT,opaque_fragment:zT,packing:HT,premultiplied_alpha_fragment:WT,project_vertex:XT,dithering_fragment:qT,dithering_pars_fragment:jT,roughnessmap_fragment:YT,roughnessmap_pars_fragment:KT,shadowmap_pars_fragment:ZT,shadowmap_pars_vertex:JT,shadowmap_vertex:$T,shadowmask_pars_fragment:QT,skinbase_vertex:eM,skinning_pars_vertex:tM,skinning_vertex:nM,skinnormal_vertex:iM,specularmap_fragment:rM,specularmap_pars_fragment:sM,tonemapping_fragment:oM,tonemapping_pars_fragment:aM,transmission_fragment:lM,transmission_pars_fragment:cM,uv_pars_fragment:uM,uv_pars_vertex:hM,uv_vertex:fM,worldpos_vertex:dM,background_vert:pM,background_frag:mM,backgroundCube_vert:gM,backgroundCube_frag:yM,cube_vert:xM,cube_frag:vM,depth_vert:_M,depth_frag:TM,distanceRGBA_vert:MM,distanceRGBA_frag:EM,equirect_vert:bM,equirect_frag:SM,linedashed_vert:AM,linedashed_frag:wM,meshbasic_vert:CM,meshbasic_frag:IM,meshlambert_vert:RM,meshlambert_frag:PM,meshmatcap_vert:NM,meshmatcap_frag:LM,meshnormal_vert:OM,meshnormal_frag:DM,meshphong_vert:FM,meshphong_frag:UM,meshphysical_vert:kM,meshphysical_frag:BM,meshtoon_vert:GM,meshtoon_frag:VM,points_vert:zM,points_frag:HM,shadow_vert:WM,shadow_frag:XM,sprite_vert:qM,sprite_frag:jM},qe={common:{diffuse:{value:new He(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new gt},alphaMap:{value:null},alphaMapTransform:{value:new gt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new gt}},envmap:{envMap:{value:null},envMapRotation:{value:new gt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new gt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new gt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new gt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new gt},normalScale:{value:new Pe(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new gt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new gt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new gt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new gt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new He(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new He(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new gt},alphaTest:{value:0},uvTransform:{value:new gt}},sprite:{diffuse:{value:new He(16777215)},opacity:{value:1},center:{value:new Pe(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new gt},alphaMap:{value:null},alphaMapTransform:{value:new gt},alphaTest:{value:0}}},Rr={basic:{uniforms:Qn([qe.common,qe.specularmap,qe.envmap,qe.aomap,qe.lightmap,qe.fog]),vertexShader:Ct.meshbasic_vert,fragmentShader:Ct.meshbasic_frag},lambert:{uniforms:Qn([qe.common,qe.specularmap,qe.envmap,qe.aomap,qe.lightmap,qe.emissivemap,qe.bumpmap,qe.normalmap,qe.displacementmap,qe.fog,qe.lights,{emissive:{value:new He(0)}}]),vertexShader:Ct.meshlambert_vert,fragmentShader:Ct.meshlambert_frag},phong:{uniforms:Qn([qe.common,qe.specularmap,qe.envmap,qe.aomap,qe.lightmap,qe.emissivemap,qe.bumpmap,qe.normalmap,qe.displacementmap,qe.fog,qe.lights,{emissive:{value:new He(0)},specular:{value:new He(1118481)},shininess:{value:30}}]),vertexShader:Ct.meshphong_vert,fragmentShader:Ct.meshphong_frag},standard:{uniforms:Qn([qe.common,qe.envmap,qe.aomap,qe.lightmap,qe.emissivemap,qe.bumpmap,qe.normalmap,qe.displacementmap,qe.roughnessmap,qe.metalnessmap,qe.fog,qe.lights,{emissive:{value:new He(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Ct.meshphysical_vert,fragmentShader:Ct.meshphysical_frag},toon:{uniforms:Qn([qe.common,qe.aomap,qe.lightmap,qe.emissivemap,qe.bumpmap,qe.normalmap,qe.displacementmap,qe.gradientmap,qe.fog,qe.lights,{emissive:{value:new He(0)}}]),vertexShader:Ct.meshtoon_vert,fragmentShader:Ct.meshtoon_frag},matcap:{uniforms:Qn([qe.common,qe.bumpmap,qe.normalmap,qe.displacementmap,qe.fog,{matcap:{value:null}}]),vertexShader:Ct.meshmatcap_vert,fragmentShader:Ct.meshmatcap_frag},points:{uniforms:Qn([qe.points,qe.fog]),vertexShader:Ct.points_vert,fragmentShader:Ct.points_frag},dashed:{uniforms:Qn([qe.common,qe.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Ct.linedashed_vert,fragmentShader:Ct.linedashed_frag},depth:{uniforms:Qn([qe.common,qe.displacementmap]),vertexShader:Ct.depth_vert,fragmentShader:Ct.depth_frag},normal:{uniforms:Qn([qe.common,qe.bumpmap,qe.normalmap,qe.displacementmap,{opacity:{value:1}}]),vertexShader:Ct.meshnormal_vert,fragmentShader:Ct.meshnormal_frag},sprite:{uniforms:Qn([qe.sprite,qe.fog]),vertexShader:Ct.sprite_vert,fragmentShader:Ct.sprite_frag},background:{uniforms:{uvTransform:{value:new gt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Ct.background_vert,fragmentShader:Ct.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new gt}},vertexShader:Ct.backgroundCube_vert,fragmentShader:Ct.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Ct.cube_vert,fragmentShader:Ct.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Ct.equirect_vert,fragmentShader:Ct.equirect_frag},distanceRGBA:{uniforms:Qn([qe.common,qe.displacementmap,{referencePosition:{value:new se},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Ct.distanceRGBA_vert,fragmentShader:Ct.distanceRGBA_frag},shadow:{uniforms:Qn([qe.lights,qe.fog,{color:{value:new He(0)},opacity:{value:1}}]),vertexShader:Ct.shadow_vert,fragmentShader:Ct.shadow_frag}};Rr.physical={uniforms:Qn([Rr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new gt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new gt},clearcoatNormalScale:{value:new Pe(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new gt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new gt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new gt},sheen:{value:0},sheenColor:{value:new He(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new gt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new gt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new gt},transmissionSamplerSize:{value:new Pe},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new gt},attenuationDistance:{value:0},attenuationColor:{value:new He(0)},specularColor:{value:new He(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new gt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new gt},anisotropyVector:{value:new Pe},anisotropyMap:{value:null},anisotropyMapTransform:{value:new gt}}]),vertexShader:Ct.meshphysical_vert,fragmentShader:Ct.meshphysical_frag};var Ef={r:0,b:0,g:0},Eo=new vn,YM=new Je;function KM(r,e,t,n,i,s,o){let a=new He(0),l=s===!0?0:1,c,u,h=null,f=0,p=null;function g(v){let x=v.isScene===!0?v.background:null;return x&&x.isTexture&&(x=(v.backgroundBlurriness>0?t:e).get(x)),x}function y(v){let x=!1,S=g(v);S===null?m(a,l):S&&S.isColor&&(m(S,1),x=!0);let I=r.xr.getEnvironmentBlendMode();I==="additive"?n.buffers.color.setClear(0,0,0,1,o):I==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,o),(r.autoClear||x)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil))}function d(v,x){let S=g(x);S&&(S.isCubeTexture||S.mapping===Ac)?(u===void 0&&(u=new Dt(new Is(1,1,1),new nr({name:"BackgroundCubeMaterial",uniforms:Mo(Rr.backgroundCube.uniforms),vertexShader:Rr.backgroundCube.vertexShader,fragmentShader:Rr.backgroundCube.fragmentShader,side:_n,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(I,A,C){this.matrixWorld.copyPosition(C.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),Eo.copy(x.backgroundRotation),Eo.x*=-1,Eo.y*=-1,Eo.z*=-1,S.isCubeTexture&&S.isRenderTargetTexture===!1&&(Eo.y*=-1,Eo.z*=-1),u.material.uniforms.envMap.value=S,u.material.uniforms.flipEnvMap.value=S.isCubeTexture&&S.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=x.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=x.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(YM.makeRotationFromEuler(Eo)),u.material.toneMapped=mt.getTransfer(S.colorSpace)!==Kt,(h!==S||f!==S.version||p!==r.toneMapping)&&(u.material.needsUpdate=!0,h=S,f=S.version,p=r.toneMapping),u.layers.enableAll(),v.unshift(u,u.geometry,u.material,0,0,null)):S&&S.isTexture&&(c===void 0&&(c=new Dt(new po(2,2),new nr({name:"BackgroundMaterial",uniforms:Mo(Rr.background.uniforms),vertexShader:Rr.background.vertexShader,fragmentShader:Rr.background.fragmentShader,side:wi,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(c)),c.material.uniforms.t2D.value=S,c.material.uniforms.backgroundIntensity.value=x.backgroundIntensity,c.material.toneMapped=mt.getTransfer(S.colorSpace)!==Kt,S.matrixAutoUpdate===!0&&S.updateMatrix(),c.material.uniforms.uvTransform.value.copy(S.matrix),(h!==S||f!==S.version||p!==r.toneMapping)&&(c.material.needsUpdate=!0,h=S,f=S.version,p=r.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null))}function m(v,x){v.getRGB(Ef,Rp(r)),n.buffers.color.setClear(Ef.r,Ef.g,Ef.b,x,o)}function _(){u!==void 0&&(u.geometry.dispose(),u.material.dispose(),u=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return a},setClearColor:function(v,x=1){a.set(v),l=x,m(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(v){l=v,m(a,l)},render:y,addToRenderList:d,dispose:_}}function ZM(r,e){let t=r.getParameter(r.MAX_VERTEX_ATTRIBS),n={},i=f(null),s=i,o=!1;function a(b,R,N,B,V){let ie=!1,Y=h(B,N,R);s!==Y&&(s=Y,c(s.object)),ie=p(b,B,N,V),ie&&g(b,B,N,V),V!==null&&e.update(V,r.ELEMENT_ARRAY_BUFFER),(ie||o)&&(o=!1,x(b,R,N,B),V!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,e.get(V).buffer))}function l(){return r.createVertexArray()}function c(b){return r.bindVertexArray(b)}function u(b){return r.deleteVertexArray(b)}function h(b,R,N){let B=N.wireframe===!0,V=n[b.id];V===void 0&&(V={},n[b.id]=V);let ie=V[R.id];ie===void 0&&(ie={},V[R.id]=ie);let Y=ie[B];return Y===void 0&&(Y=f(l()),ie[B]=Y),Y}function f(b){let R=[],N=[],B=[];for(let V=0;V=0){let ye=V[q],Te=ie[q];if(Te===void 0&&(q==="instanceMatrix"&&b.instanceMatrix&&(Te=b.instanceMatrix),q==="instanceColor"&&b.instanceColor&&(Te=b.instanceColor)),ye===void 0||ye.attribute!==Te||Te&&ye.data!==Te.data)return!0;Y++}return s.attributesNum!==Y||s.index!==B}function g(b,R,N,B){let V={},ie=R.attributes,Y=0,te=N.getAttributes();for(let q in te)if(te[q].location>=0){let ye=ie[q];ye===void 0&&(q==="instanceMatrix"&&b.instanceMatrix&&(ye=b.instanceMatrix),q==="instanceColor"&&b.instanceColor&&(ye=b.instanceColor));let Te={};Te.attribute=ye,ye&&ye.data&&(Te.data=ye.data),V[q]=Te,Y++}s.attributes=V,s.attributesNum=Y,s.index=B}function y(){let b=s.newAttributes;for(let R=0,N=b.length;R=0){let le=V[te];if(le===void 0&&(te==="instanceMatrix"&&b.instanceMatrix&&(le=b.instanceMatrix),te==="instanceColor"&&b.instanceColor&&(le=b.instanceColor)),le!==void 0){let ye=le.normalized,Te=le.itemSize,Ae=e.get(le);if(Ae===void 0)continue;let _e=Ae.buffer,G=Ae.type,P=Ae.bytesPerElement,M=G===r.INT||G===r.UNSIGNED_INT||le.gpuType===Wh;if(le.isInterleavedBufferAttribute){let T=le.data,k=T.stride,j=le.offset;if(T.isInstancedInterleavedBuffer){for(let W=0;W0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";A="mediump"}return A==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp",u=l(c);u!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",u,"instead."),c=u);let h=t.logarithmicDepthBuffer===!0,f=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),p=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),g=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),y=r.getParameter(r.MAX_TEXTURE_SIZE),d=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),m=r.getParameter(r.MAX_VERTEX_ATTRIBS),_=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),v=r.getParameter(r.MAX_VARYING_VECTORS),x=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),S=g>0,I=r.getParameter(r.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:o,textureTypeReadable:a,precision:c,logarithmicDepthBuffer:h,reverseDepthBuffer:f,maxTextures:p,maxVertexTextures:g,maxTextureSize:y,maxCubemapSize:d,maxAttributes:m,maxVertexUniforms:_,maxVaryings:v,maxFragmentUniforms:x,vertexTextures:S,maxSamples:I}}function QM(r){let e=this,t=null,n=0,i=!1,s=!1,o=new Sr,a=new gt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(h,f){let p=h.length!==0||f||n!==0||i;return i=f,n=h.length,p},this.beginShadows=function(){s=!0,u(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(h,f){t=u(h,f,0)},this.setState=function(h,f,p){let g=h.clippingPlanes,y=h.clipIntersection,d=h.clipShadows,m=r.get(h);if(!i||g===null||g.length===0||s&&!d)s?u(null):c();else{let _=s?0:n,v=_*4,x=m.clippingState||null;l.value=x,x=u(g,f,v,p);for(let S=0;S!==v;++S)x[S]=t[S];m.clippingState=x,this.numIntersection=y?this.numPlanes:0,this.numPlanes+=_}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function u(h,f,p,g){let y=h!==null?h.length:0,d=null;if(y!==0){if(d=l.value,g!==!0||d===null){let m=p+y*4,_=f.matrixWorldInverse;a.getNormalMatrix(_),(d===null||d.length0){let c=new xh(l.height);return c.fromEquirectangularTexture(r,o),e.set(o,c),o.addEventListener("dispose",i),t(c.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener("dispose",i);let l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}var Ha=4,uy=[.125,.215,.35,.446,.526,.582],Ao=20,Dp=new ss,hy=new He,Fp=null,Up=0,kp=0,Bp=!1,So=(1+Math.sqrt(5))/2,za=1/So,fy=[new se(-So,za,0),new se(So,za,0),new se(-za,0,So),new se(za,0,So),new se(0,So,-za),new se(0,So,za),new se(-1,1,-1),new se(1,1,-1),new se(-1,1,1),new se(1,1,1)],tE=new se,Af=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100,s={}){let{size:o=256,position:a=tE}=s;Fp=this._renderer.getRenderTarget(),Up=this._renderer.getActiveCubeFace(),kp=this._renderer.getActiveMipmapLevel(),Bp=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(o);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,i,l,a),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=my(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=py(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?x:0,x,x),h.setRenderTarget(i),d&&h.render(y,l),h.render(e,l)}y.geometry.dispose(),y.material.dispose(),h.toneMapping=p,h.autoClear=f,e.background=m}_textureToCubeUV(e,t){let n=this._renderer,i=e.mapping===_o||e.mapping===To;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=my()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=py());let s=i?this._cubemapMaterial:this._equirectMaterial,o=new Dt(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;let l=this._cubeSize;bf(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(o,Dp)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let i=this._lodPlanes.length;for(let s=1;sAo&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${Ao}`);let m=[],_=0;for(let A=0;Av-Ha?i-v+Ha:0),I=4*(this._cubeSize-x);bf(t,S,I,3*x,2*x),l.setRenderTarget(t),l.render(h,Dp)}};function nE(r){let e=[],t=[],n=[],i=r,s=r-Ha+1+uy.length;for(let o=0;or-Ha?l=uy[o-r+Ha-1]:o===0&&(l=0),n.push(l);let c=1/(a-2),u=-c,h=1+c,f=[u,u,h,u,h,h,u,u,h,h,u,h],p=6,g=6,y=3,d=2,m=1,_=new Float32Array(y*g*p),v=new Float32Array(d*g*p),x=new Float32Array(m*g*p);for(let I=0;I2?0:-1,E=[A,C,0,A+2/3,C,0,A+2/3,C+1,0,A,C,0,A+2/3,C+1,0,A,C+1,0];_.set(E,y*g*I),v.set(f,d*g*I);let b=[I,I,I,I,I,I];x.set(b,m*g*I)}let S=new It;S.setAttribute("position",new Vn(_,y)),S.setAttribute("uv",new Vn(v,d)),S.setAttribute("faceIndex",new Vn(x,m)),e.push(S),i>Ha&&i--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function dy(r,e,t){let n=new wr(r,e,t);return n.texture.mapping=Ac,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function bf(r,e,t,n,i){r.viewport.set(e,t,n,i),r.scissor.set(e,t,n,i)}function iE(r,e,t){let n=new Float32Array(Ao),i=new se(0,1,0);return new nr({name:"SphericalGaussianBlur",defines:{n:Ao,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:Kp(),fragmentShader:` precision mediump float; precision mediump int; @@ -3602,7 +3626,7 @@ void main() { } } - `,blending:us,depthTest:!1,depthWrite:!1})}function pg(){return new mr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Id(),fragmentShader:` + `,blending:as,depthTest:!1,depthWrite:!1})}function py(){return new nr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Kp(),fragmentShader:` precision mediump float; precision mediump int; @@ -3621,7 +3645,7 @@ void main() { gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:us,depthTest:!1,depthWrite:!1})}function mg(){return new mr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Id(),fragmentShader:` + `,blending:as,depthTest:!1,depthWrite:!1})}function my(){return new nr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Kp(),fragmentShader:` precision mediump float; precision mediump int; @@ -3637,7 +3661,7 @@ void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } - `,blending:us,depthTest:!1,depthWrite:!1})}function Id(){return` + `,blending:as,depthTest:!1,depthWrite:!1})}function Kp(){return` precision mediump float; precision mediump int; @@ -3692,15 +3716,17 @@ void main() { gl_Position = vec4( position, 1.0 ); } - `}function dM(r){let e=new WeakMap,t=null;function n(a){if(a&&a.isTexture){let l=a.mapping,c=l===Fl||l===Xf,u=l===ca||l===ua;if(c||u){let h=e.get(a),f=h!==void 0?h.texture.pmremVersion:0;if(a.isRenderTargetTexture&&a.pmremVersion!==f)return t===null&&(t=new Hu(r)),h=c?t.fromEquirectangular(a,h):t.fromCubemap(a,h),h.texture.pmremVersion=a.pmremVersion,e.set(a,h),h.texture;if(h!==void 0)return h.texture;{let p=a.image;return c&&p&&p.height>0||u&&p&&i(p)?(t===null&&(t=new Hu(r)),h=c?t.fromEquirectangular(a):t.fromCubemap(a),h.texture.pmremVersion=a.pmremVersion,e.set(a,h),a.addEventListener("dispose",s),h.texture):null}}}return a}function i(a){let l=0,c=6;for(let u=0;ue.maxTextureSize&&(w=Math.ceil(x/e.maxTextureSize),x=e.maxTextureSize);let I=new Float32Array(x*w*4*h),C=new Gu(I,x,w,h);C.type=Vr,C.needsUpdate=!0;let P=y*4;for(let M=0;M0)return r;let i=e*t,s=gg[i];if(s===void 0&&(s=new Float32Array(i),gg[i]=s),e!==0){n.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,r[o].toArray(s,a)}return s}function Sn(r,e){if(r.length!==e.length)return!1;for(let t=0,n=r.length;t0||u&&p&&i(p)?(t===null&&(t=new Af(r)),h=c?t.fromEquirectangular(a):t.fromCubemap(a),h.texture.pmremVersion=a.pmremVersion,e.set(a,h),a.addEventListener("dispose",s),h.texture):null}}}return a}function i(a){let l=0,c=6;for(let u=0;ue.maxTextureSize&&(S=Math.ceil(x/e.maxTextureSize),x=e.maxTextureSize);let I=new Float32Array(x*S*4*h),A=new nc(I,x,S,h);A.type=cr,A.needsUpdate=!0;let C=v*4;for(let b=0;b0)return r;let i=e*t,s=yy[i];if(s===void 0&&(s=new Float32Array(i),yy[i]=s),e!==0){n.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,r[o].toArray(s,a)}return s}function Ln(r,e){if(r.length!==e.length)return!1;for(let t=0,n=r.length;t":" "} ${a}: ${t[o]}`)}return n.join(` -`)}function uE(r){let e=Bt.getPrimaries(Bt.workingColorSpace),t=Bt.getPrimaries(r),n;switch(e===t?n="":e===Uu&&t===Fu?n="LinearDisplayP3ToLinearSRGB":e===Fu&&t===Uu&&(n="LinearSRGBToLinearDisplayP3"),r){case li:case ch:return[n,"LinearTransferOETF"];case jt:case Cd:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",r),[n,"LinearTransferOETF"]}}function Eg(r,e,t){let n=r.getShaderParameter(e,r.COMPILE_STATUS),i=r.getShaderInfoLog(e).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\d+)/.exec(i);if(s){let o=parseInt(s[1]);return t.toUpperCase()+` +`)}var by=new gt;function tb(r){mt._getMatrix(by,mt.workingColorSpace,r);let e=`mat3( ${by.elements.map(t=>t.toFixed(4))} )`;switch(mt.getTransfer(r)){case ec:return[e,"LinearTransferOETF"];case Kt:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",r),[e,"LinearTransferOETF"]}}function Sy(r,e,t){let n=r.getShaderParameter(e,r.COMPILE_STATUS),i=r.getShaderInfoLog(e).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\d+)/.exec(i);if(s){let o=parseInt(s[1]);return t.toUpperCase()+` `+i+` -`+cE(r.getShaderSource(e),o)}else return i}function hE(r,e){let t=uE(e);return`vec4 ${r}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`}function fE(r,e){let t;switch(e){case uy:t="Linear";break;case hy:t="Reinhard";break;case fy:t="OptimizedCineon";break;case dy:t="ACESFilmic";break;case my:t="AgX";break;case gy:t="Neutral";break;case py:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+r+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function dE(r){return[r.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",r.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Pl).join(` -`)}function pE(r){let e=[];for(let t in r){let n=r[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` -`)}function mE(r,e){let t={},n=r.getProgramParameter(e,r.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function Qf(r){return r.replace(gE,yE)}var vE=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function yE(r,e){let t=Et[e];if(t===void 0){let n=vE.get(e);if(n!==void 0)t=Et[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return Qf(t)}var xE=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ag(r){return r.replace(xE,_E)}function _E(r,e,t,n){let i="";for(let s=parseInt(e);s/gm;function Wp(r){return r.replace(lb,ub)}var cb=new Map;function ub(r,e){let t=Ct[e];if(t===void 0){let n=cb.get(e);if(n!==void 0)t=Ct[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return Wp(t)}var hb=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Cy(r){return r.replace(hb,fb)}function fb(r,e,t,n){let i="";for(let s=parseInt(e);s0&&(d+=` -`),m=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g].filter(Pl).join(` +`),m=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g].filter(Dc).join(` `),m.length>0&&(m+=` -`)):(d=[wg(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` -`].filter(Pl).join(` -`),m=[wg(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+h:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==hs?"#define TONE_MAPPING":"",t.toneMapping!==hs?Et.tonemapping_pars_fragment:"",t.toneMapping!==hs?fE("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Et.colorspace_pars_fragment,hE("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` -`].filter(Pl).join(` -`)),o=Qf(o),o=bg(o,t),o=Sg(o,t),a=Qf(a),a=bg(a,t),a=Sg(a,t),o=Ag(o),a=Ag(a),t.isRawShaderMaterial!==!0&&(_=`#version 300 es +`)):(d=[Iy(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Dc).join(` +`),m=[Iy(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+h:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==ls?"#define TONE_MAPPING":"",t.toneMapping!==ls?Ct.tonemapping_pars_fragment:"",t.toneMapping!==ls?ib("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Ct.colorspace_pars_fragment,nb("linearToOutputTexel",t.outputColorSpace),rb(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Dc).join(` +`)),o=Wp(o),o=Ay(o,t),o=wy(o,t),a=Wp(a),a=Ay(a,t),a=wy(a,t),o=Cy(o),a=Cy(a),t.isRawShaderMaterial!==!0&&(_=`#version 300 es `,d=[p,"#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` -`+d,m=["#define varying in",t.glslVersion===Hm?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===Hm?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`+d,m=["#define varying in",t.glslVersion===wp?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===wp?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` `)+` -`+m);let y=_+d+o,x=_+m+a,w=Mg(i,i.VERTEX_SHADER,y),I=Mg(i,i.FRAGMENT_SHADER,x);i.attachShader(v,w),i.attachShader(v,I),t.index0AttributeName!==void 0?i.bindAttribLocation(v,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(v,0,"position"),i.linkProgram(v);function C(L){if(r.debug.checkShaderErrors){let N=i.getProgramInfoLog(v).trim(),O=i.getShaderInfoLog(w).trim(),B=i.getShaderInfoLog(I).trim(),ie=!0,$=!0;if(i.getProgramParameter(v,i.LINK_STATUS)===!1)if(ie=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(i,v,w,I);else{let te=Eg(i,w,"vertex"),W=Eg(i,I,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(v,i.VALIDATE_STATUS)+` +`+m);let v=_+d+o,x=_+m+a,S=Ey(i,i.VERTEX_SHADER,v),I=Ey(i,i.FRAGMENT_SHADER,x);i.attachShader(y,S),i.attachShader(y,I),t.index0AttributeName!==void 0?i.bindAttribLocation(y,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(y,0,"position"),i.linkProgram(y);function A(R){if(r.debug.checkShaderErrors){let N=i.getProgramInfoLog(y).trim(),B=i.getShaderInfoLog(S).trim(),V=i.getShaderInfoLog(I).trim(),ie=!0,Y=!0;if(i.getProgramParameter(y,i.LINK_STATUS)===!1)if(ie=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(i,y,S,I);else{let te=Sy(i,S,"vertex"),q=Sy(i,I,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(y,i.VALIDATE_STATUS)+` -Material Name: `+L.name+` -Material Type: `+L.type+` +Material Name: `+R.name+` +Material Type: `+R.type+` Program Info Log: `+N+` `+te+` -`+W)}else N!==""?console.warn("THREE.WebGLProgram: Program Info Log:",N):(O===""||B==="")&&($=!1);$&&(L.diagnostics={runnable:ie,programLog:N,vertexShader:{log:O,prefix:d},fragmentShader:{log:B,prefix:m}})}i.deleteShader(w),i.deleteShader(I),P=new la(i,v),E=mE(i,v)}let P;this.getUniforms=function(){return P===void 0&&C(this),P};let E;this.getAttributes=function(){return E===void 0&&C(this),E};let M=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return M===!1&&(M=i.getProgramParameter(v,aE)),M},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(v),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=lE++,this.cacheKey=e,this.usedTimes=1,this.program=v,this.vertexShader=w,this.fragmentShader=I,this}var wE=0,ed=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),s=this._getShaderStage(n),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new td(e),t.set(e,n)),n}},td=class{constructor(e){this.id=wE++,this.code=e,this.usedTimes=0}};function CE(r,e,t,n,i,s,o){let a=new Bl,l=new ed,c=new Set,u=[],h=i.logarithmicDepthBuffer,f=i.vertexTextures,p=i.precision,g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function v(E){return c.add(E),E===0?"uv":`uv${E}`}function d(E,M,L,N,O){let B=N.fog,ie=O.geometry,$=E.isMeshStandardMaterial?N.environment:null,te=(E.isMeshStandardMaterial?t:e).get(E.envMap||$),W=te&&te.mapping===ah?te.image.height:null,ae=g[E.type];E.precision!==null&&(p=i.getMaxPrecision(E.precision),p!==E.precision&&console.warn("THREE.WebGLProgram.getParameters:",E.precision,"not supported, using",p,"instead."));let de=ie.morphAttributes.position||ie.morphAttributes.normal||ie.morphAttributes.color,ye=de!==void 0?de.length:0,Me=0;ie.morphAttributes.position!==void 0&&(Me=1),ie.morphAttributes.normal!==void 0&&(Me=2),ie.morphAttributes.color!==void 0&&(Me=3);let ve,R,T,S;if(ae){let wt=pr[ae];ve=wt.vertexShader,R=wt.fragmentShader}else ve=E.vertexShader,R=E.fragmentShader,l.update(E),T=l.getVertexShaderID(E),S=l.getFragmentShaderID(E);let b=r.getRenderTarget(),V=O.isInstancedMesh===!0,q=O.isBatchedMesh===!0,Y=!!E.map,z=!!E.matcap,X=!!te,se=!!E.aoMap,re=!!E.lightMap,le=!!E.bumpMap,xe=!!E.normalMap,G=!!E.displacementMap,A=!!E.emissiveMap,U=!!E.metalnessMap,he=!!E.roughnessMap,me=E.anisotropy>0,Te=E.clearcoat>0,ee=E.iridescence>0,k=E.sheen>0,J=E.transmission>0,ue=me&&!!E.anisotropyMap,Z=Te&&!!E.clearcoatMap,ce=Te&&!!E.clearcoatNormalMap,pe=Te&&!!E.clearcoatRoughnessMap,fe=ee&&!!E.iridescenceMap,ge=ee&&!!E.iridescenceThicknessMap,Ae=k&&!!E.sheenColorMap,Ie=k&&!!E.sheenRoughnessMap,Fe=!!E.specularMap,Je=!!E.specularColorMap,dt=!!E.specularIntensityMap,Oe=J&&!!E.transmissionMap,ne=J&&!!E.thicknessMap,Pe=!!E.gradientMap,Ne=!!E.alphaMap,Ue=E.alphaTest>0,De=!!E.alphaHash,ut=!!E.extensions,at=hs;E.toneMapped&&(b===null||b.isXRRenderTarget===!0)&&(at=r.toneMapping);let yt={shaderID:ae,shaderType:E.type,shaderName:E.name,vertexShader:ve,fragmentShader:R,defines:E.defines,customVertexShaderID:T,customFragmentShaderID:S,isRawShaderMaterial:E.isRawShaderMaterial===!0,glslVersion:E.glslVersion,precision:p,batching:q,instancing:V,instancingColor:V&&O.instanceColor!==null,instancingMorph:V&&O.morphTexture!==null,supportsVertexTextures:f,outputColorSpace:b===null?r.outputColorSpace:b.isXRRenderTarget===!0?b.texture.colorSpace:li,alphaToCoverage:!!E.alphaToCoverage,map:Y,matcap:z,envMap:X,envMapMode:X&&te.mapping,envMapCubeUVHeight:W,aoMap:se,lightMap:re,bumpMap:le,normalMap:xe,displacementMap:f&&G,emissiveMap:A,normalMapObjectSpace:xe&&E.normalMapType===Ny,normalMapTangentSpace:xe&&E.normalMapType===lh,metalnessMap:U,roughnessMap:he,anisotropy:me,anisotropyMap:ue,clearcoat:Te,clearcoatMap:Z,clearcoatNormalMap:ce,clearcoatRoughnessMap:pe,iridescence:ee,iridescenceMap:fe,iridescenceThicknessMap:ge,sheen:k,sheenColorMap:Ae,sheenRoughnessMap:Ie,specularMap:Fe,specularColorMap:Je,specularIntensityMap:dt,transmission:J,transmissionMap:Oe,thicknessMap:ne,gradientMap:Pe,opaque:E.transparent===!1&&E.blending===ra&&E.alphaToCoverage===!1,alphaMap:Ne,alphaTest:Ue,alphaHash:De,combine:E.combine,mapUv:Y&&v(E.map.channel),aoMapUv:se&&v(E.aoMap.channel),lightMapUv:re&&v(E.lightMap.channel),bumpMapUv:le&&v(E.bumpMap.channel),normalMapUv:xe&&v(E.normalMap.channel),displacementMapUv:G&&v(E.displacementMap.channel),emissiveMapUv:A&&v(E.emissiveMap.channel),metalnessMapUv:U&&v(E.metalnessMap.channel),roughnessMapUv:he&&v(E.roughnessMap.channel),anisotropyMapUv:ue&&v(E.anisotropyMap.channel),clearcoatMapUv:Z&&v(E.clearcoatMap.channel),clearcoatNormalMapUv:ce&&v(E.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:pe&&v(E.clearcoatRoughnessMap.channel),iridescenceMapUv:fe&&v(E.iridescenceMap.channel),iridescenceThicknessMapUv:ge&&v(E.iridescenceThicknessMap.channel),sheenColorMapUv:Ae&&v(E.sheenColorMap.channel),sheenRoughnessMapUv:Ie&&v(E.sheenRoughnessMap.channel),specularMapUv:Fe&&v(E.specularMap.channel),specularColorMapUv:Je&&v(E.specularColorMap.channel),specularIntensityMapUv:dt&&v(E.specularIntensityMap.channel),transmissionMapUv:Oe&&v(E.transmissionMap.channel),thicknessMapUv:ne&&v(E.thicknessMap.channel),alphaMapUv:Ne&&v(E.alphaMap.channel),vertexTangents:!!ie.attributes.tangent&&(xe||me),vertexColors:E.vertexColors,vertexAlphas:E.vertexColors===!0&&!!ie.attributes.color&&ie.attributes.color.itemSize===4,pointsUvs:O.isPoints===!0&&!!ie.attributes.uv&&(Y||Ne),fog:!!B,useFog:E.fog===!0,fogExp2:!!B&&B.isFogExp2,flatShading:E.flatShading===!0,sizeAttenuation:E.sizeAttenuation===!0,logarithmicDepthBuffer:h,skinning:O.isSkinnedMesh===!0,morphTargets:ie.morphAttributes.position!==void 0,morphNormals:ie.morphAttributes.normal!==void 0,morphColors:ie.morphAttributes.color!==void 0,morphTargetsCount:ye,morphTextureStride:Me,numDirLights:M.directional.length,numPointLights:M.point.length,numSpotLights:M.spot.length,numSpotLightMaps:M.spotLightMap.length,numRectAreaLights:M.rectArea.length,numHemiLights:M.hemi.length,numDirLightShadows:M.directionalShadowMap.length,numPointLightShadows:M.pointShadowMap.length,numSpotLightShadows:M.spotShadowMap.length,numSpotLightShadowsWithMaps:M.numSpotLightShadowsWithMaps,numLightProbes:M.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:E.dithering,shadowMapEnabled:r.shadowMap.enabled&&L.length>0,shadowMapType:r.shadowMap.type,toneMapping:at,useLegacyLights:r._useLegacyLights,decodeVideoTexture:Y&&E.map.isVideoTexture===!0&&Bt.getTransfer(E.map.colorSpace)===Qt,premultipliedAlpha:E.premultipliedAlpha,doubleSided:E.side===On,flipSided:E.side===Tn,useDepthPacking:E.depthPacking>=0,depthPacking:E.depthPacking||0,index0AttributeName:E.index0AttributeName,extensionClipCullDistance:ut&&E.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:ut&&E.extensions.multiDraw===!0&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:E.customProgramCacheKey()};return yt.vertexUv1s=c.has(1),yt.vertexUv2s=c.has(2),yt.vertexUv3s=c.has(3),c.clear(),yt}function m(E){let M=[];if(E.shaderID?M.push(E.shaderID):(M.push(E.customVertexShaderID),M.push(E.customFragmentShaderID)),E.defines!==void 0)for(let L in E.defines)M.push(L),M.push(E.defines[L]);return E.isRawShaderMaterial===!1&&(_(M,E),y(M,E),M.push(r.outputColorSpace)),M.push(E.customProgramCacheKey),M.join()}function _(E,M){E.push(M.precision),E.push(M.outputColorSpace),E.push(M.envMapMode),E.push(M.envMapCubeUVHeight),E.push(M.mapUv),E.push(M.alphaMapUv),E.push(M.lightMapUv),E.push(M.aoMapUv),E.push(M.bumpMapUv),E.push(M.normalMapUv),E.push(M.displacementMapUv),E.push(M.emissiveMapUv),E.push(M.metalnessMapUv),E.push(M.roughnessMapUv),E.push(M.anisotropyMapUv),E.push(M.clearcoatMapUv),E.push(M.clearcoatNormalMapUv),E.push(M.clearcoatRoughnessMapUv),E.push(M.iridescenceMapUv),E.push(M.iridescenceThicknessMapUv),E.push(M.sheenColorMapUv),E.push(M.sheenRoughnessMapUv),E.push(M.specularMapUv),E.push(M.specularColorMapUv),E.push(M.specularIntensityMapUv),E.push(M.transmissionMapUv),E.push(M.thicknessMapUv),E.push(M.combine),E.push(M.fogExp2),E.push(M.sizeAttenuation),E.push(M.morphTargetsCount),E.push(M.morphAttributeCount),E.push(M.numDirLights),E.push(M.numPointLights),E.push(M.numSpotLights),E.push(M.numSpotLightMaps),E.push(M.numHemiLights),E.push(M.numRectAreaLights),E.push(M.numDirLightShadows),E.push(M.numPointLightShadows),E.push(M.numSpotLightShadows),E.push(M.numSpotLightShadowsWithMaps),E.push(M.numLightProbes),E.push(M.shadowMapType),E.push(M.toneMapping),E.push(M.numClippingPlanes),E.push(M.numClipIntersection),E.push(M.depthPacking)}function y(E,M){a.disableAll(),M.supportsVertexTextures&&a.enable(0),M.instancing&&a.enable(1),M.instancingColor&&a.enable(2),M.instancingMorph&&a.enable(3),M.matcap&&a.enable(4),M.envMap&&a.enable(5),M.normalMapObjectSpace&&a.enable(6),M.normalMapTangentSpace&&a.enable(7),M.clearcoat&&a.enable(8),M.iridescence&&a.enable(9),M.alphaTest&&a.enable(10),M.vertexColors&&a.enable(11),M.vertexAlphas&&a.enable(12),M.vertexUv1s&&a.enable(13),M.vertexUv2s&&a.enable(14),M.vertexUv3s&&a.enable(15),M.vertexTangents&&a.enable(16),M.anisotropy&&a.enable(17),M.alphaHash&&a.enable(18),M.batching&&a.enable(19),E.push(a.mask),a.disableAll(),M.fog&&a.enable(0),M.useFog&&a.enable(1),M.flatShading&&a.enable(2),M.logarithmicDepthBuffer&&a.enable(3),M.skinning&&a.enable(4),M.morphTargets&&a.enable(5),M.morphNormals&&a.enable(6),M.morphColors&&a.enable(7),M.premultipliedAlpha&&a.enable(8),M.shadowMapEnabled&&a.enable(9),M.useLegacyLights&&a.enable(10),M.doubleSided&&a.enable(11),M.flipSided&&a.enable(12),M.useDepthPacking&&a.enable(13),M.dithering&&a.enable(14),M.transmission&&a.enable(15),M.sheen&&a.enable(16),M.opaque&&a.enable(17),M.pointsUvs&&a.enable(18),M.decodeVideoTexture&&a.enable(19),M.alphaToCoverage&&a.enable(20),E.push(a.mask)}function x(E){let M=g[E.type],L;if(M){let N=pr[M];L=yx.clone(N.uniforms)}else L=E.uniforms;return L}function w(E,M){let L;for(let N=0,O=u.length;N0?n.push(m):p.transparent===!0?i.push(m):t.push(m)}function l(h,f,p,g,v,d){let m=o(h,f,p,g,v,d);p.transmission>0?n.unshift(m):p.transparent===!0?i.unshift(m):t.unshift(m)}function c(h,f){t.length>1&&t.sort(h||IE),n.length>1&&n.sort(f||Cg),i.length>1&&i.sort(f||Cg)}function u(){for(let h=e,f=r.length;h=s.length?(o=new Rg,s.push(o)):o=s[i],o}function t(){r=new WeakMap}return{get:e,dispose:t}}function NE(){let r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new oe,color:new Ve};break;case"SpotLight":t={position:new oe,direction:new oe,color:new Ve,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new oe,color:new Ve,distance:0,decay:0};break;case"HemisphereLight":t={direction:new oe,skyColor:new Ve,groundColor:new Ve};break;case"RectAreaLight":t={color:new Ve,position:new oe,halfWidth:new oe,halfHeight:new oe};break}return r[e.id]=t,t}}}function LE(){let r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ce};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ce};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ce,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[e.id]=t,t}}}var OE=0;function DE(r,e){return(e.castShadow?2:0)-(r.castShadow?2:0)+(e.map?1:0)-(r.map?1:0)}function FE(r){let e=new NE,t=LE(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new oe);let i=new oe,s=new Ye,o=new Ye;function a(c,u){let h=0,f=0,p=0;for(let L=0;L<9;L++)n.probe[L].set(0,0,0);let g=0,v=0,d=0,m=0,_=0,y=0,x=0,w=0,I=0,C=0,P=0;c.sort(DE);let E=u===!0?Math.PI:1;for(let L=0,N=c.length;L0&&(r.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=Ge.LTC_FLOAT_1,n.rectAreaLTC2=Ge.LTC_FLOAT_2):(n.rectAreaLTC1=Ge.LTC_HALF_1,n.rectAreaLTC2=Ge.LTC_HALF_2)),n.ambient[0]=h,n.ambient[1]=f,n.ambient[2]=p;let M=n.hash;(M.directionalLength!==g||M.pointLength!==v||M.spotLength!==d||M.rectAreaLength!==m||M.hemiLength!==_||M.numDirectionalShadows!==y||M.numPointShadows!==x||M.numSpotShadows!==w||M.numSpotMaps!==I||M.numLightProbes!==P)&&(n.directional.length=g,n.spot.length=d,n.rectArea.length=m,n.point.length=v,n.hemi.length=_,n.directionalShadow.length=y,n.directionalShadowMap.length=y,n.pointShadow.length=x,n.pointShadowMap.length=x,n.spotShadow.length=w,n.spotShadowMap.length=w,n.directionalShadowMatrix.length=y,n.pointShadowMatrix.length=x,n.spotLightMatrix.length=w+I-C,n.spotLightMap.length=I,n.numSpotLightShadowsWithMaps=C,n.numLightProbes=P,M.directionalLength=g,M.pointLength=v,M.spotLength=d,M.rectAreaLength=m,M.hemiLength=_,M.numDirectionalShadows=y,M.numPointShadows=x,M.numSpotShadows=w,M.numSpotMaps=I,M.numLightProbes=P,n.version=OE++)}function l(c,u){let h=0,f=0,p=0,g=0,v=0,d=u.matrixWorldInverse;for(let m=0,_=c.length;m<_;m++){let y=c[m];if(y.isDirectionalLight){let x=n.directional[h];x.direction.setFromMatrixPosition(y.matrixWorld),i.setFromMatrixPosition(y.target.matrixWorld),x.direction.sub(i),x.direction.transformDirection(d),h++}else if(y.isSpotLight){let x=n.spot[p];x.position.setFromMatrixPosition(y.matrixWorld),x.position.applyMatrix4(d),x.direction.setFromMatrixPosition(y.matrixWorld),i.setFromMatrixPosition(y.target.matrixWorld),x.direction.sub(i),x.direction.transformDirection(d),p++}else if(y.isRectAreaLight){let x=n.rectArea[g];x.position.setFromMatrixPosition(y.matrixWorld),x.position.applyMatrix4(d),o.identity(),s.copy(y.matrixWorld),s.premultiply(d),o.extractRotation(s),x.halfWidth.set(y.width*.5,0,0),x.halfHeight.set(0,y.height*.5,0),x.halfWidth.applyMatrix4(o),x.halfHeight.applyMatrix4(o),g++}else if(y.isPointLight){let x=n.point[f];x.position.setFromMatrixPosition(y.matrixWorld),x.position.applyMatrix4(d),f++}else if(y.isHemisphereLight){let x=n.hemi[v];x.direction.setFromMatrixPosition(y.matrixWorld),x.direction.transformDirection(d),v++}}}return{setup:a,setupView:l,state:n}}function Ig(r){let e=new FE(r),t=[],n=[];function i(){t.length=0,n.length=0}function s(u){t.push(u)}function o(u){n.push(u)}function a(u){e.setup(t,u)}function l(u){e.setupView(t,u)}return{init:i,state:{lightsArray:t,shadowsArray:n,lights:e,transmissionRenderTarget:null},setupLights:a,setupLightsView:l,pushLight:s,pushShadow:o}}function UE(r){let e=new WeakMap;function t(i,s=0){let o=e.get(i),a;return o===void 0?(a=new Ig(r),e.set(i,[a])):s>=o.length?(a=new Ig(r),o.push(a)):a=o[s],a}function n(){e=new WeakMap}return{get:t,dispose:n}}var nd=class extends Yi{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Iy,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},id=class extends Yi{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}},kE=`void main() { +`+q)}else N!==""?console.warn("THREE.WebGLProgram: Program Info Log:",N):(B===""||V==="")&&(Y=!1);Y&&(R.diagnostics={runnable:ie,programLog:N,vertexShader:{log:B,prefix:d},fragmentShader:{log:V,prefix:m}})}i.deleteShader(S),i.deleteShader(I),C=new Wa(i,y),E=ab(i,y)}let C;this.getUniforms=function(){return C===void 0&&A(this),C};let E;this.getAttributes=function(){return E===void 0&&A(this),E};let b=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return b===!1&&(b=i.getProgramParameter(y,$E)),b},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(y),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=QE++,this.cacheKey=e,this.usedTimes=1,this.program=y,this.vertexShader=S,this.fragmentShader=I,this}var vb=0,Xp=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),s=this._getShaderStage(n),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new qp(e),t.set(e,n)),n}},qp=class{constructor(e){this.id=vb++,this.code=e,this.usedTimes=0}};function _b(r,e,t,n,i,s,o){let a=new Ca,l=new Xp,c=new Set,u=[],h=i.logarithmicDepthBuffer,f=i.vertexTextures,p=i.precision,g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function y(E){return c.add(E),E===0?"uv":`uv${E}`}function d(E,b,R,N,B){let V=N.fog,ie=B.geometry,Y=E.isMeshStandardMaterial?N.environment:null,te=(E.isMeshStandardMaterial?t:e).get(E.envMap||Y),q=te&&te.mapping===Ac?te.image.height:null,le=g[E.type];E.precision!==null&&(p=i.getMaxPrecision(E.precision),p!==E.precision&&console.warn("THREE.WebGLProgram.getParameters:",E.precision,"not supported, using",p,"instead."));let ye=ie.morphAttributes.position||ie.morphAttributes.normal||ie.morphAttributes.color,Te=ye!==void 0?ye.length:0,Ae=0;ie.morphAttributes.position!==void 0&&(Ae=1),ie.morphAttributes.normal!==void 0&&(Ae=2),ie.morphAttributes.color!==void 0&&(Ae=3);let _e,G,P,M;if(le){let Fe=Rr[le];_e=Fe.vertexShader,G=Fe.fragmentShader}else _e=E.vertexShader,G=E.fragmentShader,l.update(E),P=l.getVertexShaderID(E),M=l.getFragmentShaderID(E);let T=r.getRenderTarget(),k=r.state.buffers.depth.getReversed(),j=B.isInstancedMesh===!0,W=B.isBatchedMesh===!0,re=!!E.map,ce=!!E.matcap,me=!!te,w=!!E.aoMap,ae=!!E.lightMap,pe=!!E.bumpMap,ue=!!E.normalMap,ee=!!E.displacementMap,$=!!E.emissiveMap,ve=!!E.metalnessMap,H=!!E.roughnessMap,L=E.anisotropy>0,O=E.clearcoat>0,D=E.dispersion>0,z=E.iridescence>0,Q=E.sheen>0,ne=E.transmission>0,oe=L&&!!E.anisotropyMap,he=O&&!!E.clearcoatMap,ge=O&&!!E.clearcoatNormalMap,de=O&&!!E.clearcoatRoughnessMap,Ee=z&&!!E.iridescenceMap,Re=z&&!!E.iridescenceThicknessMap,De=Q&&!!E.sheenColorMap,ke=Q&&!!E.sheenRoughnessMap,at=!!E.specularMap,je=!!E.specularColorMap,Ke=!!E.specularIntensityMap,fe=ne&&!!E.transmissionMap,Le=ne&&!!E.thicknessMap,be=!!E.gradientMap,Ce=!!E.alphaMap,Be=E.alphaTest>0,Oe=!!E.alphaHash,rt=!!E.extensions,Et=ls;E.toneMapped&&(T===null||T.isXRRenderTarget===!0)&&(Et=r.toneMapping);let ft={shaderID:le,shaderType:E.type,shaderName:E.name,vertexShader:_e,fragmentShader:G,defines:E.defines,customVertexShaderID:P,customFragmentShaderID:M,isRawShaderMaterial:E.isRawShaderMaterial===!0,glslVersion:E.glslVersion,precision:p,batching:W,batchingColor:W&&B._colorsTexture!==null,instancing:j,instancingColor:j&&B.instanceColor!==null,instancingMorph:j&&B.morphTexture!==null,supportsVertexTextures:f,outputColorSpace:T===null?r.outputColorSpace:T.isXRRenderTarget===!0?T.texture.colorSpace:Ci,alphaToCoverage:!!E.alphaToCoverage,map:re,matcap:ce,envMap:me,envMapMode:me&&te.mapping,envMapCubeUVHeight:q,aoMap:w,lightMap:ae,bumpMap:pe,normalMap:ue,displacementMap:f&&ee,emissiveMap:$,normalMapObjectSpace:ue&&E.normalMapType===W0,normalMapTangentSpace:ue&&E.normalMapType===Lc,metalnessMap:ve,roughnessMap:H,anisotropy:L,anisotropyMap:oe,clearcoat:O,clearcoatMap:he,clearcoatNormalMap:ge,clearcoatRoughnessMap:de,dispersion:D,iridescence:z,iridescenceMap:Ee,iridescenceThicknessMap:Re,sheen:Q,sheenColorMap:De,sheenRoughnessMap:ke,specularMap:at,specularColorMap:je,specularIntensityMap:Ke,transmission:ne,transmissionMap:fe,thicknessMap:Le,gradientMap:be,opaque:E.transparent===!1&&E.blending===io&&E.alphaToCoverage===!1,alphaMap:Ce,alphaTest:Be,alphaHash:Oe,combine:E.combine,mapUv:re&&y(E.map.channel),aoMapUv:w&&y(E.aoMap.channel),lightMapUv:ae&&y(E.lightMap.channel),bumpMapUv:pe&&y(E.bumpMap.channel),normalMapUv:ue&&y(E.normalMap.channel),displacementMapUv:ee&&y(E.displacementMap.channel),emissiveMapUv:$&&y(E.emissiveMap.channel),metalnessMapUv:ve&&y(E.metalnessMap.channel),roughnessMapUv:H&&y(E.roughnessMap.channel),anisotropyMapUv:oe&&y(E.anisotropyMap.channel),clearcoatMapUv:he&&y(E.clearcoatMap.channel),clearcoatNormalMapUv:ge&&y(E.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:de&&y(E.clearcoatRoughnessMap.channel),iridescenceMapUv:Ee&&y(E.iridescenceMap.channel),iridescenceThicknessMapUv:Re&&y(E.iridescenceThicknessMap.channel),sheenColorMapUv:De&&y(E.sheenColorMap.channel),sheenRoughnessMapUv:ke&&y(E.sheenRoughnessMap.channel),specularMapUv:at&&y(E.specularMap.channel),specularColorMapUv:je&&y(E.specularColorMap.channel),specularIntensityMapUv:Ke&&y(E.specularIntensityMap.channel),transmissionMapUv:fe&&y(E.transmissionMap.channel),thicknessMapUv:Le&&y(E.thicknessMap.channel),alphaMapUv:Ce&&y(E.alphaMap.channel),vertexTangents:!!ie.attributes.tangent&&(ue||L),vertexColors:E.vertexColors,vertexAlphas:E.vertexColors===!0&&!!ie.attributes.color&&ie.attributes.color.itemSize===4,pointsUvs:B.isPoints===!0&&!!ie.attributes.uv&&(re||Ce),fog:!!V,useFog:E.fog===!0,fogExp2:!!V&&V.isFogExp2,flatShading:E.flatShading===!0,sizeAttenuation:E.sizeAttenuation===!0,logarithmicDepthBuffer:h,reverseDepthBuffer:k,skinning:B.isSkinnedMesh===!0,morphTargets:ie.morphAttributes.position!==void 0,morphNormals:ie.morphAttributes.normal!==void 0,morphColors:ie.morphAttributes.color!==void 0,morphTargetsCount:Te,morphTextureStride:Ae,numDirLights:b.directional.length,numPointLights:b.point.length,numSpotLights:b.spot.length,numSpotLightMaps:b.spotLightMap.length,numRectAreaLights:b.rectArea.length,numHemiLights:b.hemi.length,numDirLightShadows:b.directionalShadowMap.length,numPointLightShadows:b.pointShadowMap.length,numSpotLightShadows:b.spotShadowMap.length,numSpotLightShadowsWithMaps:b.numSpotLightShadowsWithMaps,numLightProbes:b.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:E.dithering,shadowMapEnabled:r.shadowMap.enabled&&R.length>0,shadowMapType:r.shadowMap.type,toneMapping:Et,decodeVideoTexture:re&&E.map.isVideoTexture===!0&&mt.getTransfer(E.map.colorSpace)===Kt,decodeVideoTextureEmissive:$&&E.emissiveMap.isVideoTexture===!0&&mt.getTransfer(E.emissiveMap.colorSpace)===Kt,premultipliedAlpha:E.premultipliedAlpha,doubleSided:E.side===Nn,flipSided:E.side===_n,useDepthPacking:E.depthPacking>=0,depthPacking:E.depthPacking||0,index0AttributeName:E.index0AttributeName,extensionClipCullDistance:rt&&E.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(rt&&E.extensions.multiDraw===!0||W)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:E.customProgramCacheKey()};return ft.vertexUv1s=c.has(1),ft.vertexUv2s=c.has(2),ft.vertexUv3s=c.has(3),c.clear(),ft}function m(E){let b=[];if(E.shaderID?b.push(E.shaderID):(b.push(E.customVertexShaderID),b.push(E.customFragmentShaderID)),E.defines!==void 0)for(let R in E.defines)b.push(R),b.push(E.defines[R]);return E.isRawShaderMaterial===!1&&(_(b,E),v(b,E),b.push(r.outputColorSpace)),b.push(E.customProgramCacheKey),b.join()}function _(E,b){E.push(b.precision),E.push(b.outputColorSpace),E.push(b.envMapMode),E.push(b.envMapCubeUVHeight),E.push(b.mapUv),E.push(b.alphaMapUv),E.push(b.lightMapUv),E.push(b.aoMapUv),E.push(b.bumpMapUv),E.push(b.normalMapUv),E.push(b.displacementMapUv),E.push(b.emissiveMapUv),E.push(b.metalnessMapUv),E.push(b.roughnessMapUv),E.push(b.anisotropyMapUv),E.push(b.clearcoatMapUv),E.push(b.clearcoatNormalMapUv),E.push(b.clearcoatRoughnessMapUv),E.push(b.iridescenceMapUv),E.push(b.iridescenceThicknessMapUv),E.push(b.sheenColorMapUv),E.push(b.sheenRoughnessMapUv),E.push(b.specularMapUv),E.push(b.specularColorMapUv),E.push(b.specularIntensityMapUv),E.push(b.transmissionMapUv),E.push(b.thicknessMapUv),E.push(b.combine),E.push(b.fogExp2),E.push(b.sizeAttenuation),E.push(b.morphTargetsCount),E.push(b.morphAttributeCount),E.push(b.numDirLights),E.push(b.numPointLights),E.push(b.numSpotLights),E.push(b.numSpotLightMaps),E.push(b.numHemiLights),E.push(b.numRectAreaLights),E.push(b.numDirLightShadows),E.push(b.numPointLightShadows),E.push(b.numSpotLightShadows),E.push(b.numSpotLightShadowsWithMaps),E.push(b.numLightProbes),E.push(b.shadowMapType),E.push(b.toneMapping),E.push(b.numClippingPlanes),E.push(b.numClipIntersection),E.push(b.depthPacking)}function v(E,b){a.disableAll(),b.supportsVertexTextures&&a.enable(0),b.instancing&&a.enable(1),b.instancingColor&&a.enable(2),b.instancingMorph&&a.enable(3),b.matcap&&a.enable(4),b.envMap&&a.enable(5),b.normalMapObjectSpace&&a.enable(6),b.normalMapTangentSpace&&a.enable(7),b.clearcoat&&a.enable(8),b.iridescence&&a.enable(9),b.alphaTest&&a.enable(10),b.vertexColors&&a.enable(11),b.vertexAlphas&&a.enable(12),b.vertexUv1s&&a.enable(13),b.vertexUv2s&&a.enable(14),b.vertexUv3s&&a.enable(15),b.vertexTangents&&a.enable(16),b.anisotropy&&a.enable(17),b.alphaHash&&a.enable(18),b.batching&&a.enable(19),b.dispersion&&a.enable(20),b.batchingColor&&a.enable(21),E.push(a.mask),a.disableAll(),b.fog&&a.enable(0),b.useFog&&a.enable(1),b.flatShading&&a.enable(2),b.logarithmicDepthBuffer&&a.enable(3),b.reverseDepthBuffer&&a.enable(4),b.skinning&&a.enable(5),b.morphTargets&&a.enable(6),b.morphNormals&&a.enable(7),b.morphColors&&a.enable(8),b.premultipliedAlpha&&a.enable(9),b.shadowMapEnabled&&a.enable(10),b.doubleSided&&a.enable(11),b.flipSided&&a.enable(12),b.useDepthPacking&&a.enable(13),b.dithering&&a.enable(14),b.transmission&&a.enable(15),b.sheen&&a.enable(16),b.opaque&&a.enable(17),b.pointsUvs&&a.enable(18),b.decodeVideoTexture&&a.enable(19),b.decodeVideoTextureEmissive&&a.enable(20),b.alphaToCoverage&&a.enable(21),E.push(a.mask)}function x(E){let b=g[E.type],R;if(b){let N=Rr[b];R=iy.clone(N.uniforms)}else R=E.uniforms;return R}function S(E,b){let R;for(let N=0,B=u.length;N0?n.push(m):p.transparent===!0?i.push(m):t.push(m)}function l(h,f,p,g,y,d){let m=o(h,f,p,g,y,d);p.transmission>0?n.unshift(m):p.transparent===!0?i.unshift(m):t.unshift(m)}function c(h,f){t.length>1&&t.sort(h||Mb),n.length>1&&n.sort(f||Ry),i.length>1&&i.sort(f||Ry)}function u(){for(let h=e,f=r.length;h=s.length?(o=new Py,s.push(o)):o=s[i],o}function t(){r=new WeakMap}return{get:e,dispose:t}}function bb(){let r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new se,color:new He};break;case"SpotLight":t={position:new se,direction:new se,color:new He,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new se,color:new He,distance:0,decay:0};break;case"HemisphereLight":t={direction:new se,skyColor:new He,groundColor:new He};break;case"RectAreaLight":t={color:new He,position:new se,halfWidth:new se,halfHeight:new se};break}return r[e.id]=t,t}}}function Sb(){let r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Pe};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Pe};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Pe,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[e.id]=t,t}}}var Ab=0;function wb(r,e){return(e.castShadow?2:0)-(r.castShadow?2:0)+(e.map?1:0)-(r.map?1:0)}function Cb(r){let e=new bb,t=Sb(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new se);let i=new se,s=new Je,o=new Je;function a(c){let u=0,h=0,f=0;for(let E=0;E<9;E++)n.probe[E].set(0,0,0);let p=0,g=0,y=0,d=0,m=0,_=0,v=0,x=0,S=0,I=0,A=0;c.sort(wb);for(let E=0,b=c.length;E0&&(r.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=qe.LTC_FLOAT_1,n.rectAreaLTC2=qe.LTC_FLOAT_2):(n.rectAreaLTC1=qe.LTC_HALF_1,n.rectAreaLTC2=qe.LTC_HALF_2)),n.ambient[0]=u,n.ambient[1]=h,n.ambient[2]=f;let C=n.hash;(C.directionalLength!==p||C.pointLength!==g||C.spotLength!==y||C.rectAreaLength!==d||C.hemiLength!==m||C.numDirectionalShadows!==_||C.numPointShadows!==v||C.numSpotShadows!==x||C.numSpotMaps!==S||C.numLightProbes!==A)&&(n.directional.length=p,n.spot.length=y,n.rectArea.length=d,n.point.length=g,n.hemi.length=m,n.directionalShadow.length=_,n.directionalShadowMap.length=_,n.pointShadow.length=v,n.pointShadowMap.length=v,n.spotShadow.length=x,n.spotShadowMap.length=x,n.directionalShadowMatrix.length=_,n.pointShadowMatrix.length=v,n.spotLightMatrix.length=x+S-I,n.spotLightMap.length=S,n.numSpotLightShadowsWithMaps=I,n.numLightProbes=A,C.directionalLength=p,C.pointLength=g,C.spotLength=y,C.rectAreaLength=d,C.hemiLength=m,C.numDirectionalShadows=_,C.numPointShadows=v,C.numSpotShadows=x,C.numSpotMaps=S,C.numLightProbes=A,n.version=Ab++)}function l(c,u){let h=0,f=0,p=0,g=0,y=0,d=u.matrixWorldInverse;for(let m=0,_=c.length;m<_;m++){let v=c[m];if(v.isDirectionalLight){let x=n.directional[h];x.direction.setFromMatrixPosition(v.matrixWorld),i.setFromMatrixPosition(v.target.matrixWorld),x.direction.sub(i),x.direction.transformDirection(d),h++}else if(v.isSpotLight){let x=n.spot[p];x.position.setFromMatrixPosition(v.matrixWorld),x.position.applyMatrix4(d),x.direction.setFromMatrixPosition(v.matrixWorld),i.setFromMatrixPosition(v.target.matrixWorld),x.direction.sub(i),x.direction.transformDirection(d),p++}else if(v.isRectAreaLight){let x=n.rectArea[g];x.position.setFromMatrixPosition(v.matrixWorld),x.position.applyMatrix4(d),o.identity(),s.copy(v.matrixWorld),s.premultiply(d),o.extractRotation(s),x.halfWidth.set(v.width*.5,0,0),x.halfHeight.set(0,v.height*.5,0),x.halfWidth.applyMatrix4(o),x.halfHeight.applyMatrix4(o),g++}else if(v.isPointLight){let x=n.point[f];x.position.setFromMatrixPosition(v.matrixWorld),x.position.applyMatrix4(d),f++}else if(v.isHemisphereLight){let x=n.hemi[y];x.direction.setFromMatrixPosition(v.matrixWorld),x.direction.transformDirection(d),y++}}}return{setup:a,setupView:l,state:n}}function Ny(r){let e=new Cb(r),t=[],n=[];function i(u){c.camera=u,t.length=0,n.length=0}function s(u){t.push(u)}function o(u){n.push(u)}function a(){e.setup(t)}function l(u){e.setupView(t,u)}let c={lightsArray:t,shadowsArray:n,camera:null,lights:e,transmissionRenderTarget:{}};return{init:i,state:c,setupLights:a,setupLightsView:l,pushLight:s,pushShadow:o}}function Ib(r){let e=new WeakMap;function t(i,s=0){let o=e.get(i),a;return o===void 0?(a=new Ny(r),e.set(i,[a])):s>=o.length?(a=new Ny(r),o.push(a)):a=o[s],a}function n(){e=new WeakMap}return{get:t,dispose:n}}var Rb=`void main() { gl_Position = vec4( position, 1.0 ); -}`,BE=`uniform sampler2D shadow_pass; +}`,Pb=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include @@ -3769,12 +3795,12 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function GE(r,e,t){let n=new Vl,i=new Ce,s=new Ce,o=new Ct,a=new nd({depthPacking:Py}),l=new id,c={},u=t.maxTextureSize,h={[wi]:Tn,[Tn]:wi,[On]:On},f=new mr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ce},radius:{value:4}},vertexShader:kE,fragmentShader:BE}),p=f.clone();p.defines.HORIZONTAL_PASS=1;let g=new St;g.setAttribute("position",new Gn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let v=new Pt(g,f),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=t0;let m=this.type;this.render=function(I,C,P){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||I.length===0)return;let E=r.getRenderTarget(),M=r.getActiveCubeFace(),L=r.getActiveMipmapLevel(),N=r.state;N.setBlending(us),N.buffers.color.setClear(1,1,1,1),N.buffers.depth.setTest(!0),N.setScissorTest(!1);let O=m!==Br&&this.type===Br,B=m===Br&&this.type!==Br;for(let ie=0,$=I.length;ie<$;ie++){let te=I[ie],W=te.shadow;if(W===void 0){console.warn("THREE.WebGLShadowMap:",te,"has no shadow.");continue}if(W.autoUpdate===!1&&W.needsUpdate===!1)continue;i.copy(W.mapSize);let ae=W.getFrameExtents();if(i.multiply(ae),s.copy(W.mapSize),(i.x>u||i.y>u)&&(i.x>u&&(s.x=Math.floor(u/ae.x),i.x=s.x*ae.x,W.mapSize.x=s.x),i.y>u&&(s.y=Math.floor(u/ae.y),i.y=s.y*ae.y,W.mapSize.y=s.y)),W.map===null||O===!0||B===!0){let ye=this.type!==Br?{minFilter:Bn,magFilter:Bn}:{};W.map!==null&&W.map.dispose(),W.map=new Hr(i.x,i.y,ye),W.map.texture.name=te.name+".shadowMap",W.camera.updateProjectionMatrix()}r.setRenderTarget(W.map),r.clear();let de=W.getViewportCount();for(let ye=0;ye0||C.map&&C.alphaTest>0){let N=M.uuid,O=C.uuid,B=c[N];B===void 0&&(B={},c[N]=B);let ie=B[O];ie===void 0&&(ie=M.clone(),B[O]=ie,C.addEventListener("dispose",w)),M=ie}if(M.visible=C.visible,M.wireframe=C.wireframe,E===Br?M.side=C.shadowSide!==null?C.shadowSide:C.side:M.side=C.shadowSide!==null?C.shadowSide:h[C.side],M.alphaMap=C.alphaMap,M.alphaTest=C.alphaTest,M.map=C.map,M.clipShadows=C.clipShadows,M.clippingPlanes=C.clippingPlanes,M.clipIntersection=C.clipIntersection,M.displacementMap=C.displacementMap,M.displacementScale=C.displacementScale,M.displacementBias=C.displacementBias,M.wireframeLinewidth=C.wireframeLinewidth,M.linewidth=C.linewidth,P.isPointLight===!0&&M.isMeshDistanceMaterial===!0){let N=r.properties.get(M);N.light=P}return M}function x(I,C,P,E,M){if(I.visible===!1)return;if(I.layers.test(C.layers)&&(I.isMesh||I.isLine||I.isPoints)&&(I.castShadow||I.receiveShadow&&M===Br)&&(!I.frustumCulled||n.intersectsObject(I))){I.modelViewMatrix.multiplyMatrices(P.matrixWorldInverse,I.matrixWorld);let O=e.update(I),B=I.material;if(Array.isArray(B)){let ie=O.groups;for(let $=0,te=ie.length;$=1):te.indexOf("OpenGL ES")!==-1&&($=parseFloat(/^OpenGL ES (\d)/.exec(te)[1]),ie=$>=2);let W=null,ae={},de=r.getParameter(r.SCISSOR_BOX),ye=r.getParameter(r.VIEWPORT),Me=new Ct().fromArray(de),ve=new Ct().fromArray(ye);function R(ne,Pe,Ne,Ue){let De=new Uint8Array(4),ut=r.createTexture();r.bindTexture(ne,ut),r.texParameteri(ne,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(ne,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let at=0;at"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ce,u=new WeakMap,h,f=new WeakMap,p=!1;try{p=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function g(G,A){return p?new OffscreenCanvas(G,A):kl("canvas")}function v(G,A,U){let he=1,me=xe(G);if((me.width>U||me.height>U)&&(he=U/Math.max(me.width,me.height)),he<1)if(typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&G instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&G instanceof ImageBitmap||typeof VideoFrame<"u"&&G instanceof VideoFrame){let Te=Math.floor(he*me.width),ee=Math.floor(he*me.height);h===void 0&&(h=g(Te,ee));let k=A?g(Te,ee):h;return k.width=Te,k.height=ee,k.getContext("2d").drawImage(G,0,0,Te,ee),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+me.width+"x"+me.height+") to ("+Te+"x"+ee+")."),k}else return"data"in G&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+me.width+"x"+me.height+")."),G;return G}function d(G){return G.generateMipmaps&&G.minFilter!==Bn&&G.minFilter!==bn}function m(G){r.generateMipmap(G)}function _(G,A,U,he,me=!1){if(G!==null){if(r[G]!==void 0)return r[G];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+G+"'")}let Te=A;if(A===r.RED&&(U===r.FLOAT&&(Te=r.R32F),U===r.HALF_FLOAT&&(Te=r.R16F),U===r.UNSIGNED_BYTE&&(Te=r.R8)),A===r.RED_INTEGER&&(U===r.UNSIGNED_BYTE&&(Te=r.R8UI),U===r.UNSIGNED_SHORT&&(Te=r.R16UI),U===r.UNSIGNED_INT&&(Te=r.R32UI),U===r.BYTE&&(Te=r.R8I),U===r.SHORT&&(Te=r.R16I),U===r.INT&&(Te=r.R32I)),A===r.RG&&(U===r.FLOAT&&(Te=r.RG32F),U===r.HALF_FLOAT&&(Te=r.RG16F),U===r.UNSIGNED_BYTE&&(Te=r.RG8)),A===r.RG_INTEGER&&(U===r.UNSIGNED_BYTE&&(Te=r.RG8UI),U===r.UNSIGNED_SHORT&&(Te=r.RG16UI),U===r.UNSIGNED_INT&&(Te=r.RG32UI),U===r.BYTE&&(Te=r.RG8I),U===r.SHORT&&(Te=r.RG16I),U===r.INT&&(Te=r.RG32I)),A===r.RGB&&U===r.UNSIGNED_INT_5_9_9_9_REV&&(Te=r.RGB9_E5),A===r.RGBA){let ee=me?Du:Bt.getTransfer(he);U===r.FLOAT&&(Te=r.RGBA32F),U===r.HALF_FLOAT&&(Te=r.RGBA16F),U===r.UNSIGNED_BYTE&&(Te=ee===Qt?r.SRGB8_ALPHA8:r.RGBA8),U===r.UNSIGNED_SHORT_4_4_4_4&&(Te=r.RGBA4),U===r.UNSIGNED_SHORT_5_5_5_1&&(Te=r.RGB5_A1)}return(Te===r.R16F||Te===r.R32F||Te===r.RG16F||Te===r.RG32F||Te===r.RGBA16F||Te===r.RGBA32F)&&e.get("EXT_color_buffer_float"),Te}function y(G,A){return d(G)===!0||G.isFramebufferTexture&&G.minFilter!==Bn&&G.minFilter!==bn?Math.log2(Math.max(A.width,A.height))+1:G.mipmaps!==void 0&&G.mipmaps.length>0?G.mipmaps.length:G.isCompressedTexture&&Array.isArray(G.image)?A.mipmaps.length:1}function x(G){let A=G.target;A.removeEventListener("dispose",x),I(A),A.isVideoTexture&&u.delete(A)}function w(G){let A=G.target;A.removeEventListener("dispose",w),P(A)}function I(G){let A=n.get(G);if(A.__webglInit===void 0)return;let U=G.source,he=f.get(U);if(he){let me=he[A.__cacheKey];me.usedTimes--,me.usedTimes===0&&C(G),Object.keys(he).length===0&&f.delete(U)}n.remove(G)}function C(G){let A=n.get(G);r.deleteTexture(A.__webglTexture);let U=G.source,he=f.get(U);delete he[A.__cacheKey],o.memory.textures--}function P(G){let A=n.get(G);if(G.depthTexture&&G.depthTexture.dispose(),G.isWebGLCubeRenderTarget)for(let he=0;he<6;he++){if(Array.isArray(A.__webglFramebuffer[he]))for(let me=0;me=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+G+" texture units while this GPU supports only "+i.maxTextures),E+=1,G}function N(G){let A=[];return A.push(G.wrapS),A.push(G.wrapT),A.push(G.wrapR||0),A.push(G.magFilter),A.push(G.minFilter),A.push(G.anisotropy),A.push(G.internalFormat),A.push(G.format),A.push(G.type),A.push(G.generateMipmaps),A.push(G.premultiplyAlpha),A.push(G.flipY),A.push(G.unpackAlignment),A.push(G.colorSpace),A.join()}function O(G,A){let U=n.get(G);if(G.isVideoTexture&&re(G),G.isRenderTargetTexture===!1&&G.version>0&&U.__version!==G.version){let he=G.image;if(he===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(he.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Me(U,G,A);return}}t.bindTexture(r.TEXTURE_2D,U.__webglTexture,r.TEXTURE0+A)}function B(G,A){let U=n.get(G);if(G.version>0&&U.__version!==G.version){Me(U,G,A);return}t.bindTexture(r.TEXTURE_2D_ARRAY,U.__webglTexture,r.TEXTURE0+A)}function ie(G,A){let U=n.get(G);if(G.version>0&&U.__version!==G.version){Me(U,G,A);return}t.bindTexture(r.TEXTURE_3D,U.__webglTexture,r.TEXTURE0+A)}function $(G,A){let U=n.get(G);if(G.version>0&&U.__version!==G.version){ve(U,G,A);return}t.bindTexture(r.TEXTURE_CUBE_MAP,U.__webglTexture,r.TEXTURE0+A)}let te={[rn]:r.REPEAT,[un]:r.CLAMP_TO_EDGE,[ha]:r.MIRRORED_REPEAT},W={[Bn]:r.NEAREST,[yy]:r.NEAREST_MIPMAP_NEAREST,[$c]:r.NEAREST_MIPMAP_LINEAR,[bn]:r.LINEAR,[nf]:r.LINEAR_MIPMAP_NEAREST,[vi]:r.LINEAR_MIPMAP_LINEAR},ae={[Ly]:r.NEVER,[By]:r.ALWAYS,[Oy]:r.LESS,[h0]:r.LEQUAL,[Dy]:r.EQUAL,[ky]:r.GEQUAL,[Fy]:r.GREATER,[Uy]:r.NOTEQUAL};function de(G,A){if(A.type===Vr&&e.has("OES_texture_float_linear")===!1&&(A.magFilter===bn||A.magFilter===nf||A.magFilter===$c||A.magFilter===vi||A.minFilter===bn||A.minFilter===nf||A.minFilter===$c||A.minFilter===vi)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(G,r.TEXTURE_WRAP_S,te[A.wrapS]),r.texParameteri(G,r.TEXTURE_WRAP_T,te[A.wrapT]),(G===r.TEXTURE_3D||G===r.TEXTURE_2D_ARRAY)&&r.texParameteri(G,r.TEXTURE_WRAP_R,te[A.wrapR]),r.texParameteri(G,r.TEXTURE_MAG_FILTER,W[A.magFilter]),r.texParameteri(G,r.TEXTURE_MIN_FILTER,W[A.minFilter]),A.compareFunction&&(r.texParameteri(G,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(G,r.TEXTURE_COMPARE_FUNC,ae[A.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(A.magFilter===Bn||A.minFilter!==$c&&A.minFilter!==vi||A.type===Vr&&e.has("OES_texture_float_linear")===!1)return;if(A.anisotropy>1||n.get(A).__currentAnisotropy){let U=e.get("EXT_texture_filter_anisotropic");r.texParameterf(G,U.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(A.anisotropy,i.getMaxAnisotropy())),n.get(A).__currentAnisotropy=A.anisotropy}}}function ye(G,A){let U=!1;G.__webglInit===void 0&&(G.__webglInit=!0,A.addEventListener("dispose",x));let he=A.source,me=f.get(he);me===void 0&&(me={},f.set(he,me));let Te=N(A);if(Te!==G.__cacheKey){me[Te]===void 0&&(me[Te]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,U=!0),me[Te].usedTimes++;let ee=me[G.__cacheKey];ee!==void 0&&(me[G.__cacheKey].usedTimes--,ee.usedTimes===0&&C(A)),G.__cacheKey=Te,G.__webglTexture=me[Te].texture}return U}function Me(G,A,U){let he=r.TEXTURE_2D;(A.isDataArrayTexture||A.isCompressedArrayTexture)&&(he=r.TEXTURE_2D_ARRAY),A.isData3DTexture&&(he=r.TEXTURE_3D);let me=ye(G,A),Te=A.source;t.bindTexture(he,G.__webglTexture,r.TEXTURE0+U);let ee=n.get(Te);if(Te.version!==ee.__version||me===!0){t.activeTexture(r.TEXTURE0+U);let k=Bt.getPrimaries(Bt.workingColorSpace),J=A.colorSpace===cs?null:Bt.getPrimaries(A.colorSpace),ue=A.colorSpace===cs||k===J?r.NONE:r.BROWSER_DEFAULT_WEBGL;r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,A.flipY),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.premultiplyAlpha),r.pixelStorei(r.UNPACK_ALIGNMENT,A.unpackAlignment),r.pixelStorei(r.UNPACK_COLORSPACE_CONVERSION_WEBGL,ue);let Z=v(A.image,!1,i.maxTextureSize);Z=le(A,Z);let ce=s.convert(A.format,A.colorSpace),pe=s.convert(A.type),fe=_(A.internalFormat,ce,pe,A.colorSpace,A.isVideoTexture);de(he,A);let ge,Ae=A.mipmaps,Ie=A.isVideoTexture!==!0&&fe!==u0,Fe=ee.__version===void 0||me===!0,Je=Te.dataReady,dt=y(A,Z);if(A.isDepthTexture)fe=r.DEPTH_COMPONENT16,A.type===Vr?fe=r.DEPTH_COMPONENT32F:A.type===fa?fe=r.DEPTH_COMPONENT24:A.type===Zl&&(fe=r.DEPTH24_STENCIL8),Fe&&(Ie?t.texStorage2D(r.TEXTURE_2D,1,fe,Z.width,Z.height):t.texImage2D(r.TEXTURE_2D,0,fe,Z.width,Z.height,0,ce,pe,null));else if(A.isDataTexture)if(Ae.length>0){Ie&&Fe&&t.texStorage2D(r.TEXTURE_2D,dt,fe,Ae[0].width,Ae[0].height);for(let Oe=0,ne=Ae.length;Oe>=1,ne>>=1}}else if(Ae.length>0){if(Ie&&Fe){let Oe=xe(Ae[0]);t.texStorage2D(r.TEXTURE_2D,dt,fe,Oe.width,Oe.height)}for(let Oe=0,ne=Ae.length;Oe0&&dt++;let ne=xe(ce[0]);t.texStorage2D(r.TEXTURE_CUBE_MAP,dt,Ae,ne.width,ne.height)}for(let ne=0;ne<6;ne++)if(Z){Ie?Je&&t.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ne,0,0,0,ce[ne].width,ce[ne].height,fe,ge,ce[ne].data):t.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ne,0,Ae,ce[ne].width,ce[ne].height,0,fe,ge,ce[ne].data);for(let Pe=0;Pe>Te),ce=Math.max(1,A.height>>Te);me===r.TEXTURE_3D||me===r.TEXTURE_2D_ARRAY?t.texImage3D(me,Te,J,Z,ce,A.depth,0,ee,k,null):t.texImage2D(me,Te,J,Z,ce,0,ee,k,null)}t.bindFramebuffer(r.FRAMEBUFFER,G),se(A)?a.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,he,me,n.get(U).__webglTexture,0,X(A)):(me===r.TEXTURE_2D||me>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&me<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,he,me,n.get(U).__webglTexture,Te),t.bindFramebuffer(r.FRAMEBUFFER,null)}function T(G,A,U){if(r.bindRenderbuffer(r.RENDERBUFFER,G),A.depthBuffer&&!A.stencilBuffer){let he=r.DEPTH_COMPONENT24;if(U||se(A)){let me=A.depthTexture;me&&me.isDepthTexture&&(me.type===Vr?he=r.DEPTH_COMPONENT32F:me.type===fa&&(he=r.DEPTH_COMPONENT24));let Te=X(A);se(A)?a.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,Te,he,A.width,A.height):r.renderbufferStorageMultisample(r.RENDERBUFFER,Te,he,A.width,A.height)}else r.renderbufferStorage(r.RENDERBUFFER,he,A.width,A.height);r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,G)}else if(A.depthBuffer&&A.stencilBuffer){let he=X(A);U&&se(A)===!1?r.renderbufferStorageMultisample(r.RENDERBUFFER,he,r.DEPTH24_STENCIL8,A.width,A.height):se(A)?a.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,he,r.DEPTH24_STENCIL8,A.width,A.height):r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,A.width,A.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,G)}else{let he=A.textures;for(let me=0;me1;if(ee||(he.__webglTexture===void 0&&(he.__webglTexture=r.createTexture()),he.__version=A.version,o.memory.textures++),Te){U.__webglFramebuffer=[];for(let k=0;k<6;k++)if(A.mipmaps&&A.mipmaps.length>0){U.__webglFramebuffer[k]=[];for(let J=0;J0){U.__webglFramebuffer=[];for(let k=0;k0&&se(G)===!1){U.__webglMultisampledFramebuffer=r.createFramebuffer(),U.__webglColorRenderbuffer=[],t.bindFramebuffer(r.FRAMEBUFFER,U.__webglMultisampledFramebuffer);for(let k=0;k0)for(let J=0;J0)for(let J=0;J0&&se(G)===!1){let A=G.textures,U=G.width,he=G.height,me=r.COLOR_BUFFER_BIT,Te=[],ee=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,k=n.get(G),J=A.length>1;if(J)for(let ue=0;ue0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&A.__useRenderToTexture!==!1}function re(G){let A=o.render.frame;u.get(G)!==A&&(u.set(G,A),G.update())}function le(G,A){let U=G.colorSpace,he=G.format,me=G.type;return G.isCompressedTexture===!0||G.isVideoTexture===!0||U!==li&&U!==cs&&(Bt.getTransfer(U)===Qt?(he!==Xi||me!==fs)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",U)),A}function xe(G){return typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement?(c.width=G.naturalWidth||G.width,c.height=G.naturalHeight||G.height):typeof VideoFrame<"u"&&G instanceof VideoFrame?(c.width=G.displayWidth,c.height=G.displayHeight):(c.width=G.width,c.height=G.height),c}this.allocateTextureUnit=L,this.resetTextureUnits=M,this.setTexture2D=O,this.setTexture2DArray=B,this.setTexture3D=ie,this.setTextureCube=$,this.rebindTextures=V,this.setupRenderTarget=q,this.updateRenderTargetMipmap=Y,this.updateMultisampleRenderTarget=z,this.setupDepthRenderbuffer=b,this.setupFrameBufferTexture=R,this.useMultisampledRTT=se}function HE(r,e){function t(n,i=cs){let s,o=Bt.getTransfer(i);if(n===fs)return r.UNSIGNED_BYTE;if(n===s0)return r.UNSIGNED_SHORT_4_4_4_4;if(n===o0)return r.UNSIGNED_SHORT_5_5_5_1;if(n===Ty)return r.UNSIGNED_INT_5_9_9_9_REV;if(n===xy)return r.BYTE;if(n===_y)return r.SHORT;if(n===i0)return r.UNSIGNED_SHORT;if(n===r0)return r.INT;if(n===fa)return r.UNSIGNED_INT;if(n===Vr)return r.FLOAT;if(n===Nu)return r.HALF_FLOAT;if(n===My)return r.ALPHA;if(n===Ey)return r.RGB;if(n===Xi)return r.RGBA;if(n===by)return r.LUMINANCE;if(n===Sy)return r.LUMINANCE_ALPHA;if(n===sa)return r.DEPTH_COMPONENT;if(n===Ul)return r.DEPTH_STENCIL;if(n===Ay)return r.RED;if(n===a0)return r.RED_INTEGER;if(n===wy)return r.RG;if(n===l0)return r.RG_INTEGER;if(n===c0)return r.RGBA_INTEGER;if(n===rf||n===sf||n===of||n===af)if(o===Qt)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===rf)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===sf)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===of)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===af)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===rf)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===sf)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===of)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===af)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===dm||n===pm||n===mm||n===gm)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===dm)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===pm)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===mm)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===gm)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===u0)return s=e.get("WEBGL_compressed_texture_etc1"),s!==null?s.COMPRESSED_RGB_ETC1_WEBGL:null;if(n===vm||n===ym)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(n===vm)return o===Qt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===ym)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===xm||n===_m||n===Tm||n===Mm||n===Em||n===bm||n===Sm||n===Am||n===wm||n===Cm||n===Rm||n===Im||n===Pm||n===Nm)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(n===xm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===_m)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Tm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Mm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Em)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===bm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Sm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Am)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===wm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Cm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Rm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Im)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Pm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Nm)return o===Qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===lf||n===Lm||n===Om)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(n===lf)return o===Qt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Lm)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Om)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Cy||n===Dm||n===Fm||n===Um)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(n===lf)return s.COMPRESSED_RED_RGTC1_EXT;if(n===Dm)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Fm)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Um)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===Zl?r.UNSIGNED_INT_24_8:r[n]!==void 0?r[n]:null}return{convert:t}}var rd=class extends en{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},dn=class extends Rt{constructor(){super(),this.isGroup=!0,this.type="Group"}},WE={type:"move"},Ll=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new dn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new dn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new oe,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new oe),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new dn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new oe,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new oe),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let i=null,s=null,o=null,a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(let v of e.hand.values()){let d=t.getJointPose(v,n),m=this._getHandJoint(c,v);d!==null&&(m.matrix.fromArray(d.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,m.jointRadius=d.radius),m.visible=d!==null}let u=c.joints["index-finger-tip"],h=c.joints["thumb-tip"],f=u.position.distanceTo(h.position),p=.02,g=.005;c.inputState.pinching&&f>p+g?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&f<=p-g&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(WE)))}return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let n=new dn;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},XE=` +}`;function Nb(r,e,t){let n=new Pa,i=new Pe,s=new Pe,o=new wt,a=new wh({depthPacking:H0}),l=new Ch,c={},u=t.maxTextureSize,h={[wi]:_n,[_n]:wi,[Nn]:Nn},f=new nr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Pe},radius:{value:4}},vertexShader:Rb,fragmentShader:Pb}),p=f.clone();p.defines.HORIZONTAL_PASS=1;let g=new It;g.setAttribute("position",new Vn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let y=new Dt(g,f),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=dp;let m=this.type;this.render=function(I,A,C){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||I.length===0)return;let E=r.getRenderTarget(),b=r.getActiveCubeFace(),R=r.getActiveMipmapLevel(),N=r.state;N.setBlending(as),N.buffers.color.setClear(1,1,1,1),N.buffers.depth.setTest(!0),N.setScissorTest(!1);let B=m!==Ir&&this.type===Ir,V=m===Ir&&this.type!==Ir;for(let ie=0,Y=I.length;ieu||i.y>u)&&(i.x>u&&(s.x=Math.floor(u/le.x),i.x=s.x*le.x,q.mapSize.x=s.x),i.y>u&&(s.y=Math.floor(u/le.y),i.y=s.y*le.y,q.mapSize.y=s.y)),q.map===null||B===!0||V===!0){let Te=this.type!==Ir?{minFilter:Xn,magFilter:Xn}:{};q.map!==null&&q.map.dispose(),q.map=new wr(i.x,i.y,Te),q.map.texture.name=te.name+".shadowMap",q.camera.updateProjectionMatrix()}r.setRenderTarget(q.map),r.clear();let ye=q.getViewportCount();for(let Te=0;Te0||A.map&&A.alphaTest>0||A.alphaToCoverage===!0){let N=b.uuid,B=A.uuid,V=c[N];V===void 0&&(V={},c[N]=V);let ie=V[B];ie===void 0&&(ie=b.clone(),V[B]=ie,A.addEventListener("dispose",S)),b=ie}if(b.visible=A.visible,b.wireframe=A.wireframe,E===Ir?b.side=A.shadowSide!==null?A.shadowSide:A.side:b.side=A.shadowSide!==null?A.shadowSide:h[A.side],b.alphaMap=A.alphaMap,b.alphaTest=A.alphaToCoverage===!0?.5:A.alphaTest,b.map=A.map,b.clipShadows=A.clipShadows,b.clippingPlanes=A.clippingPlanes,b.clipIntersection=A.clipIntersection,b.displacementMap=A.displacementMap,b.displacementScale=A.displacementScale,b.displacementBias=A.displacementBias,b.wireframeLinewidth=A.wireframeLinewidth,b.linewidth=A.linewidth,C.isPointLight===!0&&b.isMeshDistanceMaterial===!0){let N=r.properties.get(b);N.light=C}return b}function x(I,A,C,E,b){if(I.visible===!1)return;if(I.layers.test(A.layers)&&(I.isMesh||I.isLine||I.isPoints)&&(I.castShadow||I.receiveShadow&&b===Ir)&&(!I.frustumCulled||n.intersectsObject(I))){I.modelViewMatrix.multiplyMatrices(C.matrixWorldInverse,I.matrixWorld);let B=e.update(I),V=I.material;if(Array.isArray(V)){let ie=B.groups;for(let Y=0,te=ie.length;Y=1):q.indexOf("OpenGL ES")!==-1&&(te=parseFloat(/^OpenGL ES (\d)/.exec(q)[1]),Y=te>=2);let le=null,ye={},Te=r.getParameter(r.SCISSOR_BOX),Ae=r.getParameter(r.VIEWPORT),_e=new wt().fromArray(Te),G=new wt().fromArray(Ae);function P(fe,Le,be,Ce){let Be=new Uint8Array(4),Oe=r.createTexture();r.bindTexture(fe,Oe),r.texParameteri(fe,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(fe,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let rt=0;rt"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Pe,u=new WeakMap,h,f=new WeakMap,p=!1;try{p=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function g(H,L){return p?new OffscreenCanvas(H,L):Aa("canvas")}function y(H,L,O){let D=1,z=ve(H);if((z.width>O||z.height>O)&&(D=O/Math.max(z.width,z.height)),D<1)if(typeof HTMLImageElement<"u"&&H instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&H instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&H instanceof ImageBitmap||typeof VideoFrame<"u"&&H instanceof VideoFrame){let Q=Math.floor(D*z.width),ne=Math.floor(D*z.height);h===void 0&&(h=g(Q,ne));let oe=L?g(Q,ne):h;return oe.width=Q,oe.height=ne,oe.getContext("2d").drawImage(H,0,0,Q,ne),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+z.width+"x"+z.height+") to ("+Q+"x"+ne+")."),oe}else return"data"in H&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+z.width+"x"+z.height+")."),H;return H}function d(H){return H.generateMipmaps}function m(H){r.generateMipmap(H)}function _(H){return H.isWebGLCubeRenderTarget?r.TEXTURE_CUBE_MAP:H.isWebGL3DRenderTarget?r.TEXTURE_3D:H.isWebGLArrayRenderTarget||H.isCompressedArrayTexture?r.TEXTURE_2D_ARRAY:r.TEXTURE_2D}function v(H,L,O,D,z=!1){if(H!==null){if(r[H]!==void 0)return r[H];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+H+"'")}let Q=L;if(L===r.RED&&(O===r.FLOAT&&(Q=r.R32F),O===r.HALF_FLOAT&&(Q=r.R16F),O===r.UNSIGNED_BYTE&&(Q=r.R8)),L===r.RED_INTEGER&&(O===r.UNSIGNED_BYTE&&(Q=r.R8UI),O===r.UNSIGNED_SHORT&&(Q=r.R16UI),O===r.UNSIGNED_INT&&(Q=r.R32UI),O===r.BYTE&&(Q=r.R8I),O===r.SHORT&&(Q=r.R16I),O===r.INT&&(Q=r.R32I)),L===r.RG&&(O===r.FLOAT&&(Q=r.RG32F),O===r.HALF_FLOAT&&(Q=r.RG16F),O===r.UNSIGNED_BYTE&&(Q=r.RG8)),L===r.RG_INTEGER&&(O===r.UNSIGNED_BYTE&&(Q=r.RG8UI),O===r.UNSIGNED_SHORT&&(Q=r.RG16UI),O===r.UNSIGNED_INT&&(Q=r.RG32UI),O===r.BYTE&&(Q=r.RG8I),O===r.SHORT&&(Q=r.RG16I),O===r.INT&&(Q=r.RG32I)),L===r.RGB_INTEGER&&(O===r.UNSIGNED_BYTE&&(Q=r.RGB8UI),O===r.UNSIGNED_SHORT&&(Q=r.RGB16UI),O===r.UNSIGNED_INT&&(Q=r.RGB32UI),O===r.BYTE&&(Q=r.RGB8I),O===r.SHORT&&(Q=r.RGB16I),O===r.INT&&(Q=r.RGB32I)),L===r.RGBA_INTEGER&&(O===r.UNSIGNED_BYTE&&(Q=r.RGBA8UI),O===r.UNSIGNED_SHORT&&(Q=r.RGBA16UI),O===r.UNSIGNED_INT&&(Q=r.RGBA32UI),O===r.BYTE&&(Q=r.RGBA8I),O===r.SHORT&&(Q=r.RGBA16I),O===r.INT&&(Q=r.RGBA32I)),L===r.RGB&&O===r.UNSIGNED_INT_5_9_9_9_REV&&(Q=r.RGB9_E5),L===r.RGBA){let ne=z?ec:mt.getTransfer(D);O===r.FLOAT&&(Q=r.RGBA32F),O===r.HALF_FLOAT&&(Q=r.RGBA16F),O===r.UNSIGNED_BYTE&&(Q=ne===Kt?r.SRGB8_ALPHA8:r.RGBA8),O===r.UNSIGNED_SHORT_4_4_4_4&&(Q=r.RGBA4),O===r.UNSIGNED_SHORT_5_5_5_1&&(Q=r.RGB5_A1)}return(Q===r.R16F||Q===r.R32F||Q===r.RG16F||Q===r.RG32F||Q===r.RGBA16F||Q===r.RGBA32F)&&e.get("EXT_color_buffer_float"),Q}function x(H,L){let O;return H?L===null||L===Ls||L===Ga?O=r.DEPTH24_STENCIL8:L===cr?O=r.DEPTH32F_STENCIL8:L===ka&&(O=r.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):L===null||L===Ls||L===Ga?O=r.DEPTH_COMPONENT24:L===cr?O=r.DEPTH_COMPONENT32F:L===ka&&(O=r.DEPTH_COMPONENT16),O}function S(H,L){return d(H)===!0||H.isFramebufferTexture&&H.minFilter!==Xn&&H.minFilter!==Pn?Math.log2(Math.max(L.width,L.height))+1:H.mipmaps!==void 0&&H.mipmaps.length>0?H.mipmaps.length:H.isCompressedTexture&&Array.isArray(H.image)?L.mipmaps.length:1}function I(H){let L=H.target;L.removeEventListener("dispose",I),C(L),L.isVideoTexture&&u.delete(L)}function A(H){let L=H.target;L.removeEventListener("dispose",A),b(L)}function C(H){let L=n.get(H);if(L.__webglInit===void 0)return;let O=H.source,D=f.get(O);if(D){let z=D[L.__cacheKey];z.usedTimes--,z.usedTimes===0&&E(H),Object.keys(D).length===0&&f.delete(O)}n.remove(H)}function E(H){let L=n.get(H);r.deleteTexture(L.__webglTexture);let O=H.source,D=f.get(O);delete D[L.__cacheKey],o.memory.textures--}function b(H){let L=n.get(H);if(H.depthTexture&&(H.depthTexture.dispose(),n.remove(H.depthTexture)),H.isWebGLCubeRenderTarget)for(let D=0;D<6;D++){if(Array.isArray(L.__webglFramebuffer[D]))for(let z=0;z=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+H+" texture units while this GPU supports only "+i.maxTextures),R+=1,H}function V(H){let L=[];return L.push(H.wrapS),L.push(H.wrapT),L.push(H.wrapR||0),L.push(H.magFilter),L.push(H.minFilter),L.push(H.anisotropy),L.push(H.internalFormat),L.push(H.format),L.push(H.type),L.push(H.generateMipmaps),L.push(H.premultiplyAlpha),L.push(H.flipY),L.push(H.unpackAlignment),L.push(H.colorSpace),L.join()}function ie(H,L){let O=n.get(H);if(H.isVideoTexture&&ee(H),H.isRenderTargetTexture===!1&&H.version>0&&O.__version!==H.version){let D=H.image;if(D===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(D.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{G(O,H,L);return}}t.bindTexture(r.TEXTURE_2D,O.__webglTexture,r.TEXTURE0+L)}function Y(H,L){let O=n.get(H);if(H.version>0&&O.__version!==H.version){G(O,H,L);return}t.bindTexture(r.TEXTURE_2D_ARRAY,O.__webglTexture,r.TEXTURE0+L)}function te(H,L){let O=n.get(H);if(H.version>0&&O.__version!==H.version){G(O,H,L);return}t.bindTexture(r.TEXTURE_3D,O.__webglTexture,r.TEXTURE0+L)}function q(H,L){let O=n.get(H);if(H.version>0&&O.__version!==H.version){P(O,H,L);return}t.bindTexture(r.TEXTURE_CUBE_MAP,O.__webglTexture,r.TEXTURE0+L)}let le={[on]:r.REPEAT,[un]:r.CLAMP_TO_EDGE,[so]:r.MIRRORED_REPEAT},ye={[Xn]:r.NEAREST,[G0]:r.NEAREST_MIPMAP_NEAREST,[wc]:r.NEAREST_MIPMAP_LINEAR,[Pn]:r.LINEAR,[Hh]:r.LINEAR_MIPMAP_NEAREST,[xi]:r.LINEAR_MIPMAP_LINEAR},Te={[X0]:r.NEVER,[J0]:r.ALWAYS,[q0]:r.LESS,[Ap]:r.LEQUAL,[j0]:r.EQUAL,[Z0]:r.GEQUAL,[Y0]:r.GREATER,[K0]:r.NOTEQUAL};function Ae(H,L){if(L.type===cr&&e.has("OES_texture_float_linear")===!1&&(L.magFilter===Pn||L.magFilter===Hh||L.magFilter===wc||L.magFilter===xi||L.minFilter===Pn||L.minFilter===Hh||L.minFilter===wc||L.minFilter===xi)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(H,r.TEXTURE_WRAP_S,le[L.wrapS]),r.texParameteri(H,r.TEXTURE_WRAP_T,le[L.wrapT]),(H===r.TEXTURE_3D||H===r.TEXTURE_2D_ARRAY)&&r.texParameteri(H,r.TEXTURE_WRAP_R,le[L.wrapR]),r.texParameteri(H,r.TEXTURE_MAG_FILTER,ye[L.magFilter]),r.texParameteri(H,r.TEXTURE_MIN_FILTER,ye[L.minFilter]),L.compareFunction&&(r.texParameteri(H,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(H,r.TEXTURE_COMPARE_FUNC,Te[L.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(L.magFilter===Xn||L.minFilter!==wc&&L.minFilter!==xi||L.type===cr&&e.has("OES_texture_float_linear")===!1)return;if(L.anisotropy>1||n.get(L).__currentAnisotropy){let O=e.get("EXT_texture_filter_anisotropic");r.texParameterf(H,O.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(L.anisotropy,i.getMaxAnisotropy())),n.get(L).__currentAnisotropy=L.anisotropy}}}function _e(H,L){let O=!1;H.__webglInit===void 0&&(H.__webglInit=!0,L.addEventListener("dispose",I));let D=L.source,z=f.get(D);z===void 0&&(z={},f.set(D,z));let Q=V(L);if(Q!==H.__cacheKey){z[Q]===void 0&&(z[Q]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,O=!0),z[Q].usedTimes++;let ne=z[H.__cacheKey];ne!==void 0&&(z[H.__cacheKey].usedTimes--,ne.usedTimes===0&&E(L)),H.__cacheKey=Q,H.__webglTexture=z[Q].texture}return O}function G(H,L,O){let D=r.TEXTURE_2D;(L.isDataArrayTexture||L.isCompressedArrayTexture)&&(D=r.TEXTURE_2D_ARRAY),L.isData3DTexture&&(D=r.TEXTURE_3D);let z=_e(H,L),Q=L.source;t.bindTexture(D,H.__webglTexture,r.TEXTURE0+O);let ne=n.get(Q);if(Q.version!==ne.__version||z===!0){t.activeTexture(r.TEXTURE0+O);let oe=mt.getPrimaries(mt.workingColorSpace),he=L.colorSpace===cs?null:mt.getPrimaries(L.colorSpace),ge=L.colorSpace===cs||oe===he?r.NONE:r.BROWSER_DEFAULT_WEBGL;r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,L.flipY),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),r.pixelStorei(r.UNPACK_ALIGNMENT,L.unpackAlignment),r.pixelStorei(r.UNPACK_COLORSPACE_CONVERSION_WEBGL,ge);let de=y(L.image,!1,i.maxTextureSize);de=$(L,de);let Ee=s.convert(L.format,L.colorSpace),Re=s.convert(L.type),De=v(L.internalFormat,Ee,Re,L.colorSpace,L.isVideoTexture);Ae(D,L);let ke,at=L.mipmaps,je=L.isVideoTexture!==!0,Ke=ne.__version===void 0||z===!0,fe=Q.dataReady,Le=S(L,de);if(L.isDepthTexture)De=x(L.format===Va,L.type),Ke&&(je?t.texStorage2D(r.TEXTURE_2D,1,De,de.width,de.height):t.texImage2D(r.TEXTURE_2D,0,De,de.width,de.height,0,Ee,Re,null));else if(L.isDataTexture)if(at.length>0){je&&Ke&&t.texStorage2D(r.TEXTURE_2D,Le,De,at[0].width,at[0].height);for(let be=0,Ce=at.length;be0){let Be=Op(ke.width,ke.height,L.format,L.type);for(let Oe of L.layerUpdates){let rt=ke.data.subarray(Oe*Be/ke.data.BYTES_PER_ELEMENT,(Oe+1)*Be/ke.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,be,0,0,Oe,ke.width,ke.height,1,Ee,rt)}L.clearLayerUpdates()}else t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,be,0,0,0,ke.width,ke.height,de.depth,Ee,ke.data)}else t.compressedTexImage3D(r.TEXTURE_2D_ARRAY,be,De,ke.width,ke.height,de.depth,0,ke.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else je?fe&&t.texSubImage3D(r.TEXTURE_2D_ARRAY,be,0,0,0,ke.width,ke.height,de.depth,Ee,Re,ke.data):t.texImage3D(r.TEXTURE_2D_ARRAY,be,De,ke.width,ke.height,de.depth,0,Ee,Re,ke.data)}else{je&&Ke&&t.texStorage2D(r.TEXTURE_2D,Le,De,at[0].width,at[0].height);for(let be=0,Ce=at.length;be0){let be=Op(de.width,de.height,L.format,L.type);for(let Ce of L.layerUpdates){let Be=de.data.subarray(Ce*be/de.data.BYTES_PER_ELEMENT,(Ce+1)*be/de.data.BYTES_PER_ELEMENT);t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,Ce,de.width,de.height,1,Ee,Re,Be)}L.clearLayerUpdates()}else t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,0,de.width,de.height,de.depth,Ee,Re,de.data)}else t.texImage3D(r.TEXTURE_2D_ARRAY,0,De,de.width,de.height,de.depth,0,Ee,Re,de.data);else if(L.isData3DTexture)je?(Ke&&t.texStorage3D(r.TEXTURE_3D,Le,De,de.width,de.height,de.depth),fe&&t.texSubImage3D(r.TEXTURE_3D,0,0,0,0,de.width,de.height,de.depth,Ee,Re,de.data)):t.texImage3D(r.TEXTURE_3D,0,De,de.width,de.height,de.depth,0,Ee,Re,de.data);else if(L.isFramebufferTexture){if(Ke)if(je)t.texStorage2D(r.TEXTURE_2D,Le,De,de.width,de.height);else{let be=de.width,Ce=de.height;for(let Be=0;Be>=1,Ce>>=1}}else if(at.length>0){if(je&&Ke){let be=ve(at[0]);t.texStorage2D(r.TEXTURE_2D,Le,De,be.width,be.height)}for(let be=0,Ce=at.length;be0&&Le++;let Ce=ve(Ee[0]);t.texStorage2D(r.TEXTURE_CUBE_MAP,Le,at,Ce.width,Ce.height)}for(let Ce=0;Ce<6;Ce++)if(de){je?fe&&t.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ce,0,0,0,Ee[Ce].width,Ee[Ce].height,De,ke,Ee[Ce].data):t.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ce,0,at,Ee[Ce].width,Ee[Ce].height,0,De,ke,Ee[Ce].data);for(let Be=0;Be>Q),Re=Math.max(1,L.height>>Q);z===r.TEXTURE_3D||z===r.TEXTURE_2D_ARRAY?t.texImage3D(z,Q,he,Ee,Re,L.depth,0,ne,oe,null):t.texImage2D(z,Q,he,Ee,Re,0,ne,oe,null)}t.bindFramebuffer(r.FRAMEBUFFER,H),ue(L)?a.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,D,z,de.__webglTexture,0,pe(L)):(z===r.TEXTURE_2D||z>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&z<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,D,z,de.__webglTexture,Q),t.bindFramebuffer(r.FRAMEBUFFER,null)}function T(H,L,O){if(r.bindRenderbuffer(r.RENDERBUFFER,H),L.depthBuffer){let D=L.depthTexture,z=D&&D.isDepthTexture?D.type:null,Q=x(L.stencilBuffer,z),ne=L.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,oe=pe(L);ue(L)?a.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,oe,Q,L.width,L.height):O?r.renderbufferStorageMultisample(r.RENDERBUFFER,oe,Q,L.width,L.height):r.renderbufferStorage(r.RENDERBUFFER,Q,L.width,L.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,ne,r.RENDERBUFFER,H)}else{let D=L.textures;for(let z=0;z{delete L.__boundDepthTexture,delete L.__depthDisposeCallback,D.removeEventListener("dispose",z)};D.addEventListener("dispose",z),L.__depthDisposeCallback=z}L.__boundDepthTexture=D}if(H.depthTexture&&!L.__autoAllocateDepthBuffer){if(O)throw new Error("target.depthTexture not supported in Cube render targets");let D=H.texture.mipmaps;D&&D.length>0?k(L.__webglFramebuffer[0],H):k(L.__webglFramebuffer,H)}else if(O){L.__webglDepthbuffer=[];for(let D=0;D<6;D++)if(t.bindFramebuffer(r.FRAMEBUFFER,L.__webglFramebuffer[D]),L.__webglDepthbuffer[D]===void 0)L.__webglDepthbuffer[D]=r.createRenderbuffer(),T(L.__webglDepthbuffer[D],H,!1);else{let z=H.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Q=L.__webglDepthbuffer[D];r.bindRenderbuffer(r.RENDERBUFFER,Q),r.framebufferRenderbuffer(r.FRAMEBUFFER,z,r.RENDERBUFFER,Q)}}else{let D=H.texture.mipmaps;if(D&&D.length>0?t.bindFramebuffer(r.FRAMEBUFFER,L.__webglFramebuffer[0]):t.bindFramebuffer(r.FRAMEBUFFER,L.__webglFramebuffer),L.__webglDepthbuffer===void 0)L.__webglDepthbuffer=r.createRenderbuffer(),T(L.__webglDepthbuffer,H,!1);else{let z=H.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Q=L.__webglDepthbuffer;r.bindRenderbuffer(r.RENDERBUFFER,Q),r.framebufferRenderbuffer(r.FRAMEBUFFER,z,r.RENDERBUFFER,Q)}}t.bindFramebuffer(r.FRAMEBUFFER,null)}function W(H,L,O){let D=n.get(H);L!==void 0&&M(D.__webglFramebuffer,H,H.texture,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,0),O!==void 0&&j(H)}function re(H){let L=H.texture,O=n.get(H),D=n.get(L);H.addEventListener("dispose",A);let z=H.textures,Q=H.isWebGLCubeRenderTarget===!0,ne=z.length>1;if(ne||(D.__webglTexture===void 0&&(D.__webglTexture=r.createTexture()),D.__version=L.version,o.memory.textures++),Q){O.__webglFramebuffer=[];for(let oe=0;oe<6;oe++)if(L.mipmaps&&L.mipmaps.length>0){O.__webglFramebuffer[oe]=[];for(let he=0;he0){O.__webglFramebuffer=[];for(let oe=0;oe0&&ue(H)===!1){O.__webglMultisampledFramebuffer=r.createFramebuffer(),O.__webglColorRenderbuffer=[],t.bindFramebuffer(r.FRAMEBUFFER,O.__webglMultisampledFramebuffer);for(let oe=0;oe0)for(let he=0;he0)for(let he=0;he0){if(ue(H)===!1){let L=H.textures,O=H.width,D=H.height,z=r.COLOR_BUFFER_BIT,Q=H.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,ne=n.get(H),oe=L.length>1;if(oe)for(let ge=0;ge0?t.bindFramebuffer(r.DRAW_FRAMEBUFFER,ne.__webglFramebuffer[0]):t.bindFramebuffer(r.DRAW_FRAMEBUFFER,ne.__webglFramebuffer);for(let ge=0;ge0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&L.__useRenderToTexture!==!1}function ee(H){let L=o.render.frame;u.get(H)!==L&&(u.set(H,L),H.update())}function $(H,L){let O=H.colorSpace,D=H.format,z=H.type;return H.isCompressedTexture===!0||H.isVideoTexture===!0||O!==Ci&&O!==cs&&(mt.getTransfer(O)===Kt?(D!==Pi||z!==lr)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",O)),L}function ve(H){return typeof HTMLImageElement<"u"&&H instanceof HTMLImageElement?(c.width=H.naturalWidth||H.width,c.height=H.naturalHeight||H.height):typeof VideoFrame<"u"&&H instanceof VideoFrame?(c.width=H.displayWidth,c.height=H.displayHeight):(c.width=H.width,c.height=H.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=N,this.setTexture2D=ie,this.setTexture2DArray=Y,this.setTexture3D=te,this.setTextureCube=q,this.rebindTextures=W,this.setupRenderTarget=re,this.updateRenderTargetMipmap=ce,this.updateMultisampleRenderTarget=ae,this.setupDepthRenderbuffer=j,this.setupFrameBufferTexture=M,this.useMultisampledRTT=ue}function Fb(r,e){function t(n,i=cs){let s,o=mt.getTransfer(i);if(n===lr)return r.UNSIGNED_BYTE;if(n===Xh)return r.UNSIGNED_SHORT_4_4_4_4;if(n===qh)return r.UNSIGNED_SHORT_5_5_5_1;if(n===_p)return r.UNSIGNED_INT_5_9_9_9_REV;if(n===xp)return r.BYTE;if(n===vp)return r.SHORT;if(n===ka)return r.UNSIGNED_SHORT;if(n===Wh)return r.INT;if(n===Ls)return r.UNSIGNED_INT;if(n===cr)return r.FLOAT;if(n===Ba)return r.HALF_FLOAT;if(n===Tp)return r.ALPHA;if(n===Mp)return r.RGB;if(n===Pi)return r.RGBA;if(n===Sa)return r.DEPTH_COMPONENT;if(n===Va)return r.DEPTH_STENCIL;if(n===Ep)return r.RED;if(n===jh)return r.RED_INTEGER;if(n===bp)return r.RG;if(n===Yh)return r.RG_INTEGER;if(n===Kh)return r.RGBA_INTEGER;if(n===Cc||n===Ic||n===Rc||n===Pc)if(o===Kt)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===Cc)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Ic)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Rc)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Pc)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===Cc)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Ic)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Rc)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Pc)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Zh||n===Jh||n===$h||n===Qh)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===Zh)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Jh)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===$h)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Qh)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===ef||n===tf||n===nf)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(n===ef||n===tf)return o===Kt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===nf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===rf||n===sf||n===of||n===af||n===lf||n===cf||n===uf||n===hf||n===ff||n===df||n===pf||n===mf||n===gf||n===yf)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(n===rf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===sf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===of)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===af)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===lf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===cf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===uf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===hf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===ff)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===df)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===pf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===mf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===gf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===yf)return o===Kt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Nc||n===xf||n===vf)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(n===Nc)return o===Kt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===xf)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===vf)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Sp||n===_f||n===Tf||n===Mf)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(n===Nc)return s.COMPRESSED_RED_RGTC1_EXT;if(n===_f)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Tf)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Mf)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===Ga?r.UNSIGNED_INT_24_8:r[n]!==void 0?r[n]:null}return{convert:t}}var Ub=` void main() { gl_Position = vec4( position, 1.0 ); -}`,jE=` +}`,kb=` uniform sampler2DArray depthColor; uniform float depthWidth; uniform float depthHeight; @@ -3793,72 +3819,72 @@ void main() { } -}`,sd=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){let i=new Dn,s=e.properties.get(i);s.__webglTexture=t.texture,(t.depthNear!=n.depthNear||t.depthFar!=n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}render(e,t){if(this.texture!==null){if(this.mesh===null){let n=t.cameras[0].viewport,i=new mr({vertexShader:XE,fragmentShader:jE,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new Pt(new va(20,20),i)}e.render(this.mesh,t)}}reset(){this.texture=null,this.mesh=null}},od=class extends ps{constructor(e,t){super();let n=this,i=null,s=1,o=null,a="local-floor",l=1,c=null,u=null,h=null,f=null,p=null,g=null,v=new sd,d=t.getContextAttributes(),m=null,_=null,y=[],x=[],w=new Ce,I=null,C=new en;C.layers.enable(1),C.viewport=new Ct;let P=new en;P.layers.enable(2),P.viewport=new Ct;let E=[C,P],M=new rd;M.layers.enable(1),M.layers.enable(2);let L=null,N=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(R){let T=y[R];return T===void 0&&(T=new Ll,y[R]=T),T.getTargetRaySpace()},this.getControllerGrip=function(R){let T=y[R];return T===void 0&&(T=new Ll,y[R]=T),T.getGripSpace()},this.getHand=function(R){let T=y[R];return T===void 0&&(T=new Ll,y[R]=T),T.getHandSpace()};function O(R){let T=x.indexOf(R.inputSource);if(T===-1)return;let S=y[T];S!==void 0&&(S.update(R.inputSource,R.frame,c||o),S.dispatchEvent({type:R.type,data:R.inputSource}))}function B(){i.removeEventListener("select",O),i.removeEventListener("selectstart",O),i.removeEventListener("selectend",O),i.removeEventListener("squeeze",O),i.removeEventListener("squeezestart",O),i.removeEventListener("squeezeend",O),i.removeEventListener("end",B),i.removeEventListener("inputsourceschange",ie);for(let R=0;R=0&&(x[b]=null,y[b].disconnect(S))}for(let T=0;T=x.length){x.push(S),b=q;break}else if(x[q]===null){x[q]=S,b=q;break}if(b===-1)break}let V=y[b];V&&V.connect(S)}}let $=new oe,te=new oe;function W(R,T,S){$.setFromMatrixPosition(T.matrixWorld),te.setFromMatrixPosition(S.matrixWorld);let b=$.distanceTo(te),V=T.projectionMatrix.elements,q=S.projectionMatrix.elements,Y=V[14]/(V[10]-1),z=V[14]/(V[10]+1),X=(V[9]+1)/V[5],se=(V[9]-1)/V[5],re=(V[8]-1)/V[0],le=(q[8]+1)/q[0],xe=Y*re,G=Y*le,A=b/(-re+le),U=A*-re;T.matrixWorld.decompose(R.position,R.quaternion,R.scale),R.translateX(U),R.translateZ(A),R.matrixWorld.compose(R.position,R.quaternion,R.scale),R.matrixWorldInverse.copy(R.matrixWorld).invert();let he=Y+A,me=z+A,Te=xe-U,ee=G+(b-U),k=X*z/me*he,J=se*z/me*he;R.projectionMatrix.makePerspective(Te,ee,k,J,he,me),R.projectionMatrixInverse.copy(R.projectionMatrix).invert()}function ae(R,T){T===null?R.matrixWorld.copy(R.matrix):R.matrixWorld.multiplyMatrices(T.matrixWorld,R.matrix),R.matrixWorldInverse.copy(R.matrixWorld).invert()}this.updateCamera=function(R){if(i===null)return;v.texture!==null&&(R.near=v.depthNear,R.far=v.depthFar),M.near=P.near=C.near=R.near,M.far=P.far=C.far=R.far,(L!==M.near||N!==M.far)&&(i.updateRenderState({depthNear:M.near,depthFar:M.far}),L=M.near,N=M.far,C.near=L,C.far=N,P.near=L,P.far=N,C.updateProjectionMatrix(),P.updateProjectionMatrix(),R.updateProjectionMatrix());let T=R.parent,S=M.cameras;ae(M,T);for(let b=0;b0&&(d.alphaTest.value=m.alphaTest);let _=e.get(m),y=_.envMap,x=_.envMapRotation;if(y&&(d.envMap.value=y,Ws.copy(x),Ws.x*=-1,Ws.y*=-1,Ws.z*=-1,y.isCubeTexture&&y.isRenderTargetTexture===!1&&(Ws.y*=-1,Ws.z*=-1),d.envMapRotation.value.setFromMatrix4(qE.makeRotationFromEuler(Ws)),d.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,d.reflectivity.value=m.reflectivity,d.ior.value=m.ior,d.refractionRatio.value=m.refractionRatio),m.lightMap){d.lightMap.value=m.lightMap;let w=r._useLegacyLights===!0?Math.PI:1;d.lightMapIntensity.value=m.lightMapIntensity*w,t(m.lightMap,d.lightMapTransform)}m.aoMap&&(d.aoMap.value=m.aoMap,d.aoMapIntensity.value=m.aoMapIntensity,t(m.aoMap,d.aoMapTransform))}function o(d,m){d.diffuse.value.copy(m.color),d.opacity.value=m.opacity,m.map&&(d.map.value=m.map,t(m.map,d.mapTransform))}function a(d,m){d.dashSize.value=m.dashSize,d.totalSize.value=m.dashSize+m.gapSize,d.scale.value=m.scale}function l(d,m,_,y){d.diffuse.value.copy(m.color),d.opacity.value=m.opacity,d.size.value=m.size*_,d.scale.value=y*.5,m.map&&(d.map.value=m.map,t(m.map,d.uvTransform)),m.alphaMap&&(d.alphaMap.value=m.alphaMap,t(m.alphaMap,d.alphaMapTransform)),m.alphaTest>0&&(d.alphaTest.value=m.alphaTest)}function c(d,m){d.diffuse.value.copy(m.color),d.opacity.value=m.opacity,d.rotation.value=m.rotation,m.map&&(d.map.value=m.map,t(m.map,d.mapTransform)),m.alphaMap&&(d.alphaMap.value=m.alphaMap,t(m.alphaMap,d.alphaMapTransform)),m.alphaTest>0&&(d.alphaTest.value=m.alphaTest)}function u(d,m){d.specular.value.copy(m.specular),d.shininess.value=Math.max(m.shininess,1e-4)}function h(d,m){m.gradientMap&&(d.gradientMap.value=m.gradientMap)}function f(d,m){d.metalness.value=m.metalness,m.metalnessMap&&(d.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,d.metalnessMapTransform)),d.roughness.value=m.roughness,m.roughnessMap&&(d.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,d.roughnessMapTransform)),m.envMap&&(d.envMapIntensity.value=m.envMapIntensity)}function p(d,m,_){d.ior.value=m.ior,m.sheen>0&&(d.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),d.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(d.sheenColorMap.value=m.sheenColorMap,t(m.sheenColorMap,d.sheenColorMapTransform)),m.sheenRoughnessMap&&(d.sheenRoughnessMap.value=m.sheenRoughnessMap,t(m.sheenRoughnessMap,d.sheenRoughnessMapTransform))),m.clearcoat>0&&(d.clearcoat.value=m.clearcoat,d.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(d.clearcoatMap.value=m.clearcoatMap,t(m.clearcoatMap,d.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(d.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,t(m.clearcoatRoughnessMap,d.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(d.clearcoatNormalMap.value=m.clearcoatNormalMap,t(m.clearcoatNormalMap,d.clearcoatNormalMapTransform),d.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),m.side===Tn&&d.clearcoatNormalScale.value.negate())),m.iridescence>0&&(d.iridescence.value=m.iridescence,d.iridescenceIOR.value=m.iridescenceIOR,d.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],d.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(d.iridescenceMap.value=m.iridescenceMap,t(m.iridescenceMap,d.iridescenceMapTransform)),m.iridescenceThicknessMap&&(d.iridescenceThicknessMap.value=m.iridescenceThicknessMap,t(m.iridescenceThicknessMap,d.iridescenceThicknessMapTransform))),m.transmission>0&&(d.transmission.value=m.transmission,d.transmissionSamplerMap.value=_.texture,d.transmissionSamplerSize.value.set(_.width,_.height),m.transmissionMap&&(d.transmissionMap.value=m.transmissionMap,t(m.transmissionMap,d.transmissionMapTransform)),d.thickness.value=m.thickness,m.thicknessMap&&(d.thicknessMap.value=m.thicknessMap,t(m.thicknessMap,d.thicknessMapTransform)),d.attenuationDistance.value=m.attenuationDistance,d.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(d.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(d.anisotropyMap.value=m.anisotropyMap,t(m.anisotropyMap,d.anisotropyMapTransform))),d.specularIntensity.value=m.specularIntensity,d.specularColor.value.copy(m.specularColor),m.specularColorMap&&(d.specularColorMap.value=m.specularColorMap,t(m.specularColorMap,d.specularColorMapTransform)),m.specularIntensityMap&&(d.specularIntensityMap.value=m.specularIntensityMap,t(m.specularIntensityMap,d.specularIntensityMapTransform))}function g(d,m){m.matcap&&(d.matcap.value=m.matcap)}function v(d,m){let _=e.get(m).light;d.referencePosition.value.setFromMatrixPosition(_.matrixWorld),d.nearDistance.value=_.shadow.camera.near,d.farDistance.value=_.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function KE(r,e,t,n){let i={},s={},o=[],a=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function l(_,y){let x=y.program;n.uniformBlockBinding(_,x)}function c(_,y){let x=i[_.id];x===void 0&&(g(_),x=u(_),i[_.id]=x,_.addEventListener("dispose",d));let w=y.program;n.updateUBOMapping(_,w);let I=e.render.frame;s[_.id]!==I&&(f(_),s[_.id]=I)}function u(_){let y=h();_.__bindingPointIndex=y;let x=r.createBuffer(),w=_.__size,I=_.usage;return r.bindBuffer(r.UNIFORM_BUFFER,x),r.bufferData(r.UNIFORM_BUFFER,w,I),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,y,x),x}function h(){for(let _=0;_0&&(x+=w-I),_.__size=x,_.__cache={},this}function v(_){let y={boundary:0,storage:0};return typeof _=="number"||typeof _=="boolean"?(y.boundary=4,y.storage=4):_.isVector2?(y.boundary=8,y.storage=8):_.isVector3||_.isColor?(y.boundary=16,y.storage=12):_.isVector4?(y.boundary=16,y.storage=16):_.isMatrix3?(y.boundary=48,y.storage=48):_.isMatrix4?(y.boundary=64,y.storage=64):_.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",_),y}function d(_){let y=_.target;y.removeEventListener("dispose",d);let x=o.indexOf(y.__bindingPointIndex);o.splice(x,1),r.deleteBuffer(i[y.id]),delete i[y.id],delete s[y.id]}function m(){for(let _ in i)r.deleteBuffer(i[_]);o=[],i={},s={}}return{bind:l,update:c,dispose:m}}var ya=class{constructor(e={}){let{canvas:t=nx(),context:n=null,depth:i=!0,stencil:s=!1,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:h=!1}=e;this.isWebGLRenderer=!0;let f;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");f=n.getContextAttributes().alpha}else f=o;let p=new Uint32Array(4),g=new Int32Array(4),v=null,d=null,m=[],_=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=jt,this._useLegacyLights=!1,this.toneMapping=hs,this.toneMappingExposure=1;let y=this,x=!1,w=0,I=0,C=null,P=-1,E=null,M=new Ct,L=new Ct,N=null,O=new Ve(0),B=0,ie=t.width,$=t.height,te=1,W=null,ae=null,de=new Ct(0,0,ie,$),ye=new Ct(0,0,ie,$),Me=!1,ve=new Vl,R=!1,T=!1,S=new Ye,b=new Ce,V=new oe,q={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Y(){return C===null?te:1}let z=n;function X(Q,_e){let Se=t.getContext(Q,_e);return Se!==null?Se:null}try{let Q={alpha:!0,depth:i,stencil:s,antialias:a,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:u,failIfMajorPerformanceCaveat:h};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${wd}`),t.addEventListener("webglcontextlost",Pe,!1),t.addEventListener("webglcontextrestored",Ne,!1),t.addEventListener("webglcontextcreationerror",Ue,!1),z===null){let _e="webgl2";if(z=X(_e,Q),z===null)throw X(_e)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(Q){throw console.error("THREE.WebGLRenderer: "+Q.message),Q}let se,re,le,xe,G,A,U,he,me,Te,ee,k,J,ue,Z,ce,pe,fe,ge,Ae,Ie,Fe,Je,dt;function Oe(){se=new pM(z),se.init(),re=new lM(z,se,e),Fe=new HE(z,se),le=new VE(z),xe=new vM(z),G=new RE,A=new zE(z,se,le,G,re,Fe,xe),U=new uM(y),he=new dM(y),me=new Ex(z),Je=new oM(z,me),Te=new mM(z,me,xe,Je),ee=new xM(z,Te,me,xe),ge=new yM(z,re,A),ce=new cM(G),k=new CE(y,U,he,se,re,Je,ce),J=new YE(y,G),ue=new PE,Z=new UE(se),fe=new sM(y,U,he,le,ee,f,l),pe=new GE(y,ee,re),dt=new KE(z,xe,re,le),Ae=new aM(z,se,xe),Ie=new gM(z,se,xe),xe.programs=k.programs,y.capabilities=re,y.extensions=se,y.properties=G,y.renderLists=ue,y.shadowMap=pe,y.state=le,y.info=xe}Oe();let ne=new od(y,z);this.xr=ne,this.getContext=function(){return z},this.getContextAttributes=function(){return z.getContextAttributes()},this.forceContextLoss=function(){let Q=se.get("WEBGL_lose_context");Q&&Q.loseContext()},this.forceContextRestore=function(){let Q=se.get("WEBGL_lose_context");Q&&Q.restoreContext()},this.getPixelRatio=function(){return te},this.setPixelRatio=function(Q){Q!==void 0&&(te=Q,this.setSize(ie,$,!1))},this.getSize=function(Q){return Q.set(ie,$)},this.setSize=function(Q,_e,Se=!0){if(ne.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}ie=Q,$=_e,t.width=Math.floor(Q*te),t.height=Math.floor(_e*te),Se===!0&&(t.style.width=Q+"px",t.style.height=_e+"px"),this.setViewport(0,0,Q,_e)},this.getDrawingBufferSize=function(Q){return Q.set(ie*te,$*te).floor()},this.setDrawingBufferSize=function(Q,_e,Se){ie=Q,$=_e,te=Se,t.width=Math.floor(Q*Se),t.height=Math.floor(_e*Se),this.setViewport(0,0,Q,_e)},this.getCurrentViewport=function(Q){return Q.copy(M)},this.getViewport=function(Q){return Q.copy(de)},this.setViewport=function(Q,_e,Se,we){Q.isVector4?de.set(Q.x,Q.y,Q.z,Q.w):de.set(Q,_e,Se,we),le.viewport(M.copy(de).multiplyScalar(te).round())},this.getScissor=function(Q){return Q.copy(ye)},this.setScissor=function(Q,_e,Se,we){Q.isVector4?ye.set(Q.x,Q.y,Q.z,Q.w):ye.set(Q,_e,Se,we),le.scissor(L.copy(ye).multiplyScalar(te).round())},this.getScissorTest=function(){return Me},this.setScissorTest=function(Q){le.setScissorTest(Me=Q)},this.setOpaqueSort=function(Q){W=Q},this.setTransparentSort=function(Q){ae=Q},this.getClearColor=function(Q){return Q.copy(fe.getClearColor())},this.setClearColor=function(){fe.setClearColor.apply(fe,arguments)},this.getClearAlpha=function(){return fe.getClearAlpha()},this.setClearAlpha=function(){fe.setClearAlpha.apply(fe,arguments)},this.clear=function(Q=!0,_e=!0,Se=!0){let we=0;if(Q){let Ee=!1;if(C!==null){let We=C.texture.format;Ee=We===c0||We===l0||We===a0}if(Ee){let We=C.texture.type,st=We===fs||We===fa||We===i0||We===Zl||We===s0||We===o0,et=fe.getClearColor(),lt=fe.getClearAlpha(),mt=et.r,gt=et.g,xt=et.b;st?(p[0]=mt,p[1]=gt,p[2]=xt,p[3]=lt,z.clearBufferuiv(z.COLOR,0,p)):(g[0]=mt,g[1]=gt,g[2]=xt,g[3]=lt,z.clearBufferiv(z.COLOR,0,g))}else we|=z.COLOR_BUFFER_BIT}_e&&(we|=z.DEPTH_BUFFER_BIT),Se&&(we|=z.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),z.clear(we)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Pe,!1),t.removeEventListener("webglcontextrestored",Ne,!1),t.removeEventListener("webglcontextcreationerror",Ue,!1),ue.dispose(),Z.dispose(),G.dispose(),U.dispose(),he.dispose(),ee.dispose(),Je.dispose(),dt.dispose(),k.dispose(),ne.dispose(),ne.removeEventListener("sessionstart",ke),ne.removeEventListener("sessionend",qe),He.stop()};function Pe(Q){Q.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),x=!0}function Ne(){console.log("THREE.WebGLRenderer: Context Restored."),x=!1;let Q=xe.autoReset,_e=pe.enabled,Se=pe.autoUpdate,we=pe.needsUpdate,Ee=pe.type;Oe(),xe.autoReset=Q,pe.enabled=_e,pe.autoUpdate=Se,pe.needsUpdate=we,pe.type=Ee}function Ue(Q){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",Q.statusMessage)}function De(Q){let _e=Q.target;_e.removeEventListener("dispose",De),ut(_e)}function ut(Q){at(Q),G.remove(Q)}function at(Q){let _e=G.get(Q).programs;_e!==void 0&&(_e.forEach(function(Se){k.releaseProgram(Se)}),Q.isShaderMaterial&&k.releaseShaderCache(Q))}this.renderBufferDirect=function(Q,_e,Se,we,Ee,We){_e===null&&(_e=q);let st=Ee.isMesh&&Ee.matrixWorld.determinant()<0,et=Wh(Q,_e,Se,we,Ee);le.setMaterial(we,st);let lt=Se.index,mt=1;if(we.wireframe===!0){if(lt=Te.getWireframeAttribute(Se),lt===void 0)return;mt=2}let gt=Se.drawRange,xt=Se.attributes.position,tn=gt.start*mt,qn=(gt.start+gt.count)*mt;We!==null&&(tn=Math.max(tn,We.start*mt),qn=Math.min(qn,(We.start+We.count)*mt)),lt!==null?(tn=Math.max(tn,0),qn=Math.min(qn,lt.count)):xt!=null&&(tn=Math.max(tn,0),qn=Math.min(qn,xt.count));let gn=qn-tn;if(gn<0||gn===1/0)return;Je.setup(Ee,we,et,Se,lt);let Di,qt=Ae;if(lt!==null&&(Di=me.get(lt),qt=Ie,qt.setIndex(Di)),Ee.isMesh)we.wireframe===!0?(le.setLineWidth(we.wireframeLinewidth*Y()),qt.setMode(z.LINES)):qt.setMode(z.TRIANGLES);else if(Ee.isLine){let _t=we.linewidth;_t===void 0&&(_t=1),le.setLineWidth(_t*Y()),Ee.isLineSegments?qt.setMode(z.LINES):Ee.isLineLoop?qt.setMode(z.LINE_LOOP):qt.setMode(z.LINE_STRIP)}else Ee.isPoints?qt.setMode(z.POINTS):Ee.isSprite&&qt.setMode(z.TRIANGLES);if(Ee.isBatchedMesh)qt.renderMultiDraw(Ee._multiDrawStarts,Ee._multiDrawCounts,Ee._multiDrawCount);else if(Ee.isInstancedMesh)qt.renderInstances(tn,gn,Ee.count);else if(Se.isInstancedBufferGeometry){let _t=Se._maxInstanceCount!==void 0?Se._maxInstanceCount:1/0,rr=Math.min(Se.instanceCount,_t);qt.renderInstances(tn,gn,rr)}else qt.render(tn,gn)};function yt(Q,_e,Se){Q.transparent===!0&&Q.side===On&&Q.forceSinglePass===!1?(Q.side=Tn,Q.needsUpdate=!0,Oi(Q,_e,Se),Q.side=wi,Q.needsUpdate=!0,Oi(Q,_e,Se),Q.side=On):Oi(Q,_e,Se)}this.compile=function(Q,_e,Se=null){Se===null&&(Se=Q),d=Z.get(Se),d.init(),_.push(d),Se.traverseVisible(function(Ee){Ee.isLight&&Ee.layers.test(_e.layers)&&(d.pushLight(Ee),Ee.castShadow&&d.pushShadow(Ee))}),Q!==Se&&Q.traverseVisible(function(Ee){Ee.isLight&&Ee.layers.test(_e.layers)&&(d.pushLight(Ee),Ee.castShadow&&d.pushShadow(Ee))}),d.setupLights(y._useLegacyLights);let we=new Set;return Q.traverse(function(Ee){let We=Ee.material;if(We)if(Array.isArray(We))for(let st=0;st{function We(){if(we.forEach(function(st){G.get(st).currentProgram.isReady()&&we.delete(st)}),we.size===0){Ee(Q);return}setTimeout(We,10)}se.get("KHR_parallel_shader_compile")!==null?We():setTimeout(We,10)})};let wt=null;function Qe(Q){wt&&wt(Q)}function ke(){He.stop()}function qe(){He.start()}let He=new m0;He.setAnimationLoop(Qe),typeof self<"u"&&He.setContext(self),this.setAnimationLoop=function(Q){wt=Q,ne.setAnimationLoop(Q),Q===null?He.stop():He.start()},ne.addEventListener("sessionstart",ke),ne.addEventListener("sessionend",qe),this.render=function(Q,_e){if(_e!==void 0&&_e.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(x===!0)return;Q.matrixWorldAutoUpdate===!0&&Q.updateMatrixWorld(),_e.parent===null&&_e.matrixWorldAutoUpdate===!0&&_e.updateMatrixWorld(),ne.enabled===!0&&ne.isPresenting===!0&&(ne.cameraAutoUpdate===!0&&ne.updateCamera(_e),_e=ne.getCamera()),Q.isScene===!0&&Q.onBeforeRender(y,Q,_e,C),d=Z.get(Q,_.length),d.init(),_.push(d),S.multiplyMatrices(_e.projectionMatrix,_e.matrixWorldInverse),ve.setFromProjectionMatrix(S),T=this.localClippingEnabled,R=ce.init(this.clippingPlanes,T),v=ue.get(Q,m.length),v.init(),m.push(v),tt(Q,_e,0,y.sortObjects),v.finish(),y.sortObjects===!0&&v.sort(W,ae),this.info.render.frame++,R===!0&&ce.beginShadows();let Se=d.state.shadowsArray;if(pe.render(Se,Q,_e),R===!0&&ce.endShadows(),this.info.autoReset===!0&&this.info.reset(),(ne.enabled===!1||ne.isPresenting===!1||ne.hasDepthSensing()===!1)&&fe.render(v,Q),d.setupLights(y._useLegacyLights),_e.isArrayCamera){let we=_e.cameras;for(let Ee=0,We=we.length;Ee0?d=_[_.length-1]:d=null,m.pop(),m.length>0?v=m[m.length-1]:v=null};function tt(Q,_e,Se,we){if(Q.visible===!1)return;if(Q.layers.test(_e.layers)){if(Q.isGroup)Se=Q.renderOrder;else if(Q.isLOD)Q.autoUpdate===!0&&Q.update(_e);else if(Q.isLight)d.pushLight(Q),Q.castShadow&&d.pushShadow(Q);else if(Q.isSprite){if(!Q.frustumCulled||ve.intersectsSprite(Q)){we&&V.setFromMatrixPosition(Q.matrixWorld).applyMatrix4(S);let st=ee.update(Q),et=Q.material;et.visible&&v.push(Q,st,et,Se,V.z,null)}}else if((Q.isMesh||Q.isLine||Q.isPoints)&&(!Q.frustumCulled||ve.intersectsObject(Q))){let st=ee.update(Q),et=Q.material;if(we&&(Q.boundingSphere!==void 0?(Q.boundingSphere===null&&Q.computeBoundingSphere(),V.copy(Q.boundingSphere.center)):(st.boundingSphere===null&&st.computeBoundingSphere(),V.copy(st.boundingSphere.center)),V.applyMatrix4(Q.matrixWorld).applyMatrix4(S)),Array.isArray(et)){let lt=st.groups;for(let mt=0,gt=lt.length;mt0&&Wt(Ee,We,_e,Se),we&&le.viewport(M.copy(we)),Ee.length>0&&jn(Ee,_e,Se),We.length>0&&jn(We,_e,Se),st.length>0&&jn(st,_e,Se),le.buffers.depth.setTest(!0),le.buffers.depth.setMask(!0),le.buffers.color.setMask(!0),le.setPolygonOffset(!1)}function Wt(Q,_e,Se,we){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;if(d.state.transmissionRenderTarget===null){d.state.transmissionRenderTarget=new Hr(1,1,{generateMipmaps:!0,type:se.has("EXT_color_buffer_half_float")||se.has("EXT_color_buffer_float")?Nu:fs,minFilter:vi,samples:4,stencilBuffer:s});let mt=G.get(d.state.transmissionRenderTarget);mt.__isTransmissionRenderTarget=!0}let We=d.state.transmissionRenderTarget;y.getDrawingBufferSize(b),We.setSize(b.x,b.y);let st=y.getRenderTarget();y.setRenderTarget(We),y.getClearColor(O),B=y.getClearAlpha(),B<1&&y.setClearColor(16777215,.5),y.clear();let et=y.toneMapping;y.toneMapping=hs,jn(Q,Se,we),A.updateMultisampleRenderTarget(We),A.updateRenderTargetMipmap(We);let lt=!1;for(let mt=0,gt=_e.length;mt0),xt=!!Se.morphAttributes.position,tn=!!Se.morphAttributes.normal,qn=!!Se.morphAttributes.color,gn=hs;we.toneMapped&&(C===null||C.isXRRenderTarget===!0)&&(gn=y.toneMapping);let Di=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,qt=Di!==void 0?Di.length:0,_t=G.get(we),rr=d.state.lights;if(R===!0&&(T===!0||Q!==E)){let Nt=Q===E&&we.id===P;ce.setState(we,Q,Nt)}let Yt=!1;we.version===_t.__version?(_t.needsLights&&_t.lightsStateVersion!==rr.state.version||_t.outputColorSpace!==et||Ee.isBatchedMesh&&_t.batching===!1||!Ee.isBatchedMesh&&_t.batching===!0||Ee.isInstancedMesh&&_t.instancing===!1||!Ee.isInstancedMesh&&_t.instancing===!0||Ee.isSkinnedMesh&&_t.skinning===!1||!Ee.isSkinnedMesh&&_t.skinning===!0||Ee.isInstancedMesh&&_t.instancingColor===!0&&Ee.instanceColor===null||Ee.isInstancedMesh&&_t.instancingColor===!1&&Ee.instanceColor!==null||Ee.isInstancedMesh&&_t.instancingMorph===!0&&Ee.morphTexture===null||Ee.isInstancedMesh&&_t.instancingMorph===!1&&Ee.morphTexture!==null||_t.envMap!==lt||we.fog===!0&&_t.fog!==We||_t.numClippingPlanes!==void 0&&(_t.numClippingPlanes!==ce.numPlanes||_t.numIntersection!==ce.numIntersection)||_t.vertexAlphas!==mt||_t.vertexTangents!==gt||_t.morphTargets!==xt||_t.morphNormals!==tn||_t.morphColors!==qn||_t.toneMapping!==gn||_t.morphTargetsCount!==qt)&&(Yt=!0):(Yt=!0,_t.__version=we.version);let sr=_t.currentProgram;Yt===!0&&(sr=Oi(we,_e,Ee));let Tc=!1,Zr=!1,cl=!1,Cn=sr.getUniforms(),or=_t.uniforms;if(le.useProgram(sr.program)&&(Tc=!0,Zr=!0,cl=!0),we.id!==P&&(P=we.id,Zr=!0),Tc||E!==Q){Cn.setValue(z,"projectionMatrix",Q.projectionMatrix),Cn.setValue(z,"viewMatrix",Q.matrixWorldInverse);let Nt=Cn.map.cameraPosition;Nt!==void 0&&Nt.setValue(z,V.setFromMatrixPosition(Q.matrixWorld)),re.logarithmicDepthBuffer&&Cn.setValue(z,"logDepthBufFC",2/(Math.log(Q.far+1)/Math.LN2)),(we.isMeshPhongMaterial||we.isMeshToonMaterial||we.isMeshLambertMaterial||we.isMeshBasicMaterial||we.isMeshStandardMaterial||we.isShaderMaterial)&&Cn.setValue(z,"isOrthographic",Q.isOrthographicCamera===!0),E!==Q&&(E=Q,Zr=!0,cl=!0)}if(Ee.isSkinnedMesh){Cn.setOptional(z,Ee,"bindMatrix"),Cn.setOptional(z,Ee,"bindMatrixInverse");let Nt=Ee.skeleton;Nt&&(Nt.boneTexture===null&&Nt.computeBoneTexture(),Cn.setValue(z,"boneTexture",Nt.boneTexture,A))}Ee.isBatchedMesh&&(Cn.setOptional(z,Ee,"batchingTexture"),Cn.setValue(z,"batchingTexture",Ee._matricesTexture,A));let oo=Se.morphAttributes;if((oo.position!==void 0||oo.normal!==void 0||oo.color!==void 0)&&ge.update(Ee,Se,sr),(Zr||_t.receiveShadow!==Ee.receiveShadow)&&(_t.receiveShadow=Ee.receiveShadow,Cn.setValue(z,"receiveShadow",Ee.receiveShadow)),we.isMeshGouraudMaterial&&we.envMap!==null&&(or.envMap.value=lt,or.flipEnvMap.value=lt.isCubeTexture&<.isRenderTargetTexture===!1?-1:1),we.isMeshStandardMaterial&&we.envMap===null&&_e.environment!==null&&(or.envMapIntensity.value=_e.environmentIntensity),Zr&&(Cn.setValue(z,"toneMappingExposure",y.toneMappingExposure),_t.needsLights&&Xh(or,cl),We&&we.fog===!0&&J.refreshFogUniforms(or,We),J.refreshMaterialUniforms(or,we,te,$,d.state.transmissionRenderTarget),la.upload(z,_c(_t),or,A)),we.isShaderMaterial&&we.uniformsNeedUpdate===!0&&(la.upload(z,_c(_t),or,A),we.uniformsNeedUpdate=!1),we.isSpriteMaterial&&Cn.setValue(z,"center",Ee.center),Cn.setValue(z,"modelViewMatrix",Ee.modelViewMatrix),Cn.setValue(z,"normalMatrix",Ee.normalMatrix),Cn.setValue(z,"modelMatrix",Ee.matrixWorld),we.isShaderMaterial||we.isRawShaderMaterial){let Nt=we.uniformsGroups;for(let Rs=0,qh=Nt.length;Rs0&&A.useMultisampledRTT(Q)===!1?Ee=G.get(Q).__webglMultisampledFramebuffer:Array.isArray(gt)?Ee=gt[Se]:Ee=gt,M.copy(Q.viewport),L.copy(Q.scissor),N=Q.scissorTest}else M.copy(de).multiplyScalar(te).floor(),L.copy(ye).multiplyScalar(te).floor(),N=Me;if(le.bindFramebuffer(z.FRAMEBUFFER,Ee)&&we&&le.drawBuffers(Q,Ee),le.viewport(M),le.scissor(L),le.setScissorTest(N),We){let lt=G.get(Q.texture);z.framebufferTexture2D(z.FRAMEBUFFER,z.COLOR_ATTACHMENT0,z.TEXTURE_CUBE_MAP_POSITIVE_X+_e,lt.__webglTexture,Se)}else if(st){let lt=G.get(Q.texture),mt=_e||0;z.framebufferTextureLayer(z.FRAMEBUFFER,z.COLOR_ATTACHMENT0,lt.__webglTexture,Se||0,mt)}P=-1},this.readRenderTargetPixels=function(Q,_e,Se,we,Ee,We,st){if(!(Q&&Q.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let et=G.get(Q).__webglFramebuffer;if(Q.isWebGLCubeRenderTarget&&st!==void 0&&(et=et[st]),et){le.bindFramebuffer(z.FRAMEBUFFER,et);try{let lt=Q.texture,mt=lt.format,gt=lt.type;if(mt!==Xi&&Fe.convert(mt)!==z.getParameter(z.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let xt=gt===Nu&&(se.has("EXT_color_buffer_half_float")||se.has("EXT_color_buffer_float"));if(gt!==fs&&Fe.convert(gt)!==z.getParameter(z.IMPLEMENTATION_COLOR_READ_TYPE)&>!==Vr&&!xt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}_e>=0&&_e<=Q.width-we&&Se>=0&&Se<=Q.height-Ee&&z.readPixels(_e,Se,we,Ee,Fe.convert(mt),Fe.convert(gt),We)}finally{let lt=C!==null?G.get(C).__webglFramebuffer:null;le.bindFramebuffer(z.FRAMEBUFFER,lt)}}},this.copyFramebufferToTexture=function(Q,_e,Se=0){let we=Math.pow(2,-Se),Ee=Math.floor(_e.image.width*we),We=Math.floor(_e.image.height*we);A.setTexture2D(_e,0),z.copyTexSubImage2D(z.TEXTURE_2D,Se,0,0,Q.x,Q.y,Ee,We),le.unbindTexture()},this.copyTextureToTexture=function(Q,_e,Se,we=0){let Ee=_e.image.width,We=_e.image.height,st=Fe.convert(Se.format),et=Fe.convert(Se.type);A.setTexture2D(Se,0),z.pixelStorei(z.UNPACK_FLIP_Y_WEBGL,Se.flipY),z.pixelStorei(z.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Se.premultiplyAlpha),z.pixelStorei(z.UNPACK_ALIGNMENT,Se.unpackAlignment),_e.isDataTexture?z.texSubImage2D(z.TEXTURE_2D,we,Q.x,Q.y,Ee,We,st,et,_e.image.data):_e.isCompressedTexture?z.compressedTexSubImage2D(z.TEXTURE_2D,we,Q.x,Q.y,_e.mipmaps[0].width,_e.mipmaps[0].height,st,_e.mipmaps[0].data):z.texSubImage2D(z.TEXTURE_2D,we,Q.x,Q.y,st,et,_e.image),we===0&&Se.generateMipmaps&&z.generateMipmap(z.TEXTURE_2D),le.unbindTexture()},this.copyTextureToTexture3D=function(Q,_e,Se,we,Ee=0){let We=Math.round(Q.max.x-Q.min.x),st=Math.round(Q.max.y-Q.min.y),et=Q.max.z-Q.min.z+1,lt=Fe.convert(we.format),mt=Fe.convert(we.type),gt;if(we.isData3DTexture)A.setTexture3D(we,0),gt=z.TEXTURE_3D;else if(we.isDataArrayTexture||we.isCompressedArrayTexture)A.setTexture2DArray(we,0),gt=z.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}z.pixelStorei(z.UNPACK_FLIP_Y_WEBGL,we.flipY),z.pixelStorei(z.UNPACK_PREMULTIPLY_ALPHA_WEBGL,we.premultiplyAlpha),z.pixelStorei(z.UNPACK_ALIGNMENT,we.unpackAlignment);let xt=z.getParameter(z.UNPACK_ROW_LENGTH),tn=z.getParameter(z.UNPACK_IMAGE_HEIGHT),qn=z.getParameter(z.UNPACK_SKIP_PIXELS),gn=z.getParameter(z.UNPACK_SKIP_ROWS),Di=z.getParameter(z.UNPACK_SKIP_IMAGES),qt=Se.isCompressedTexture?Se.mipmaps[Ee]:Se.image;z.pixelStorei(z.UNPACK_ROW_LENGTH,qt.width),z.pixelStorei(z.UNPACK_IMAGE_HEIGHT,qt.height),z.pixelStorei(z.UNPACK_SKIP_PIXELS,Q.min.x),z.pixelStorei(z.UNPACK_SKIP_ROWS,Q.min.y),z.pixelStorei(z.UNPACK_SKIP_IMAGES,Q.min.z),Se.isDataTexture||Se.isData3DTexture?z.texSubImage3D(gt,Ee,_e.x,_e.y,_e.z,We,st,et,lt,mt,qt.data):we.isCompressedArrayTexture?z.compressedTexSubImage3D(gt,Ee,_e.x,_e.y,_e.z,We,st,et,lt,qt.data):z.texSubImage3D(gt,Ee,_e.x,_e.y,_e.z,We,st,et,lt,mt,qt),z.pixelStorei(z.UNPACK_ROW_LENGTH,xt),z.pixelStorei(z.UNPACK_IMAGE_HEIGHT,tn),z.pixelStorei(z.UNPACK_SKIP_PIXELS,qn),z.pixelStorei(z.UNPACK_SKIP_ROWS,gn),z.pixelStorei(z.UNPACK_SKIP_IMAGES,Di),Ee===0&&we.generateMipmaps&&z.generateMipmap(gt),le.unbindTexture()},this.initTexture=function(Q){Q.isCubeTexture?A.setTextureCube(Q,0):Q.isData3DTexture?A.setTexture3D(Q,0):Q.isDataArrayTexture||Q.isCompressedArrayTexture?A.setTexture2DArray(Q,0):A.setTexture2D(Q,0),le.unbindTexture()},this.resetState=function(){w=0,I=0,C=null,le.reset(),Je.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return zr}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=e===Cd?"display-p3":"srgb",t.unpackColorSpace=Bt.workingColorSpace===ch?"display-p3":"srgb"}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}};var vr=class extends Rt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new hn,this.environmentIntensity=1,this.environmentRotation=new hn,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}};var Pg=new oe,Ng=new Ct,Lg=new Ct,ZE=new oe,Og=new Ye,_u=new oe,Of=new qi,Dg=new Ye,Df=new Ks,xa=class extends Pt{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=fm,this.bindMatrix=new Ye,this.bindMatrixInverse=new Ye,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){let e=this.geometry;this.boundingBox===null&&(this.boundingBox=new ji),this.boundingBox.makeEmpty();let t=e.getAttribute("position");for(let n=0;nl)continue;f.applyMatrix4(this.matrixWorld);let P=e.ray.origin.distanceTo(f);Pe.far||t.push({distance:P,point:h.clone().applyMatrix4(this.matrixWorld),index:y,face:null,faceIndex:null,object:this})}}else{let m=Math.max(0,o.start),_=Math.min(d.count,o.start+o.count);for(let y=m,x=_-1;yl)continue;f.applyMatrix4(this.matrixWorld);let I=e.ray.origin.distanceTo(f);Ie.far||t.push({distance:I,point:h.clone().applyMatrix4(this.matrixWorld),index:y,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;si.far)return;s.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}var ai=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,i=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)n=this.getPoint(o/e),s+=n.distanceTo(i),t.push(s),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let n=this.getLengths(),i=0,s=n.length,o;t?o=t:o=e*n[s-1];let a=0,l=s-1,c;for(;a<=l;)if(i=Math.floor(a+(l-a)/2),c=n[i]-o,c<0)a=i+1;else if(c>0)l=i-1;else{l=i;break}if(i=l,n[i]===o)return i/(s-1);let u=n[i],f=n[i+1]-u,p=(o-u)/f;return(i+p)/(s-1)}getTangent(e,t){let i=e-1e-4,s=e+1e-4;i<0&&(i=0),s>1&&(s=1);let o=this.getPoint(i),a=this.getPoint(s),l=t||(o.isVector2?new Ce:new oe);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new oe,i=[],s=[],o=[],a=new oe,l=new Ye;for(let p=0;p<=e;p++){let g=p/e;i[p]=this.getTangentAt(g,new oe)}s[0]=new oe,o[0]=new oe;let c=Number.MAX_VALUE,u=Math.abs(i[0].x),h=Math.abs(i[0].y),f=Math.abs(i[0].z);u<=c&&(c=u,n.set(1,0,0)),h<=c&&(c=h,n.set(0,1,0)),f<=c&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),s[0].crossVectors(i[0],a),o[0].crossVectors(i[0],s[0]);for(let p=1;p<=e;p++){if(s[p]=s[p-1].clone(),o[p]=o[p-1].clone(),a.crossVectors(i[p-1],i[p]),a.length()>Number.EPSILON){a.normalize();let g=Math.acos(kn(i[p-1].dot(i[p]),-1,1));s[p].applyMatrix4(l.makeRotationAxis(a,g))}o[p].crossVectors(i[p],s[p])}if(t===!0){let p=Math.acos(kn(s[0].dot(s[e]),-1,1));p/=e,i[0].dot(a.crossVectors(s[0],s[e]))>0&&(p=-p);for(let g=1;g<=e;g++)s[g].applyMatrix4(l.makeRotationAxis(i[g],p*g)),o[g].crossVectors(i[g],s[g])}return{tangents:i,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},Hl=class extends ai{constructor(e=0,t=0,n=1,i=1,s=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t=new Ce){let n=t,i=Math.PI*2,s=this.aEndAngle-this.aStartAngle,o=Math.abs(s)i;)s-=i;s0?0:(Math.floor(Math.abs(a)/s)+1)*s:l===0&&a===s-1&&(a=s-2,l=1);let c,u;this.closed||a>0?c=i[(a-1)%s]:(bu.subVectors(i[0],i[1]).add(i[0]),c=bu);let h=i[a%s],f=i[(a+1)%s];if(this.closed||a+2i.length-2?i.length-1:o+1],h=i[o>i.length-3?i.length-1:o+2];return n.set(Wg(a,l.x,c.x,u.x,h.x),Wg(a,l.y,c.y,u.y,h.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){let o=i[s]-n,a=this.curves[s],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let h=c.getPoint(0);h.equals(this.currentPoint)||this.lineTo(h.x,h.y)}this.curves.push(c);let u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}};var Wl=class r extends St{constructor(e=1,t=1,n=1,i=32,s=1,o=!1,a=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l};let c=this;i=Math.floor(i),s=Math.floor(s);let u=[],h=[],f=[],p=[],g=0,v=[],d=n/2,m=0;_(),o===!1&&(e>0&&y(!0),t>0&&y(!1)),this.setIndex(u),this.setAttribute("position",new ze(h,3)),this.setAttribute("normal",new ze(f,3)),this.setAttribute("uv",new ze(p,2));function _(){let x=new oe,w=new oe,I=0,C=(t-e)/n;for(let P=0;P<=s;P++){let E=[],M=P/s,L=M*(t-e)+e;for(let N=0;N<=i;N++){let O=N/i,B=O*l+a,ie=Math.sin(B),$=Math.cos(B);w.x=L*ie,w.y=-M*n+d,w.z=L*$,h.push(w.x,w.y,w.z),x.set(ie,C,$).normalize(),f.push(x.x,x.y,x.z),p.push(O,1-M),E.push(g++)}v.push(E)}for(let P=0;P80*t){a=c=r[0],l=u=r[1];for(let g=t;gc&&(c=h),f>u&&(u=f);p=Math.max(c-a,u-l),p=p!==0?32767/p:0}return Xl(s,o,t,a,l,p,0),o}};function T0(r,e,t,n,i){let s,o;if(i===Tb(r,e,t,n)>0)for(s=e;s=e;s-=n)o=Xg(s,r[s],r[s+1],o);return o&&hh(o,o.next)&&(ql(o),o=o.next),o}function $s(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(hh(t,t.next)||cn(t.prev,t,t.next)===0)){if(ql(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function Xl(r,e,t,n,i,s,o){if(!r)return;!o&&s&&mb(r,n,i,s);let a=r,l,c;for(;r.prev!==r.next;){if(l=r.prev,c=r.next,s?ab(r,n,i,s):ob(r)){e.push(l.i/t|0),e.push(r.i/t|0),e.push(c.i/t|0),ql(r),r=c.next,a=c.next;continue}if(r=c,r===a){o?o===1?(r=lb($s(r),e,t),Xl(r,e,t,n,i,s,2)):o===2&&cb(r,e,t,n,i,s):Xl($s(r),e,t,n,i,s,1);break}}}function ob(r){let e=r.prev,t=r,n=r.next;if(cn(e,t,n)>=0)return!1;let i=e.x,s=t.x,o=n.x,a=e.y,l=t.y,c=n.y,u=is?i>o?i:o:s>o?s:o,p=a>l?a>c?a:c:l>c?l:c,g=n.next;for(;g!==e;){if(g.x>=u&&g.x<=f&&g.y>=h&&g.y<=p&&ia(i,a,s,l,o,c,g.x,g.y)&&cn(g.prev,g,g.next)>=0)return!1;g=g.next}return!0}function ab(r,e,t,n){let i=r.prev,s=r,o=r.next;if(cn(i,s,o)>=0)return!1;let a=i.x,l=s.x,c=o.x,u=i.y,h=s.y,f=o.y,p=al?a>c?a:c:l>c?l:c,d=u>h?u>f?u:f:h>f?h:f,m=md(p,g,e,t,n),_=md(v,d,e,t,n),y=r.prevZ,x=r.nextZ;for(;y&&y.z>=m&&x&&x.z<=_;){if(y.x>=p&&y.x<=v&&y.y>=g&&y.y<=d&&y!==i&&y!==o&&ia(a,u,l,h,c,f,y.x,y.y)&&cn(y.prev,y,y.next)>=0||(y=y.prevZ,x.x>=p&&x.x<=v&&x.y>=g&&x.y<=d&&x!==i&&x!==o&&ia(a,u,l,h,c,f,x.x,x.y)&&cn(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;y&&y.z>=m;){if(y.x>=p&&y.x<=v&&y.y>=g&&y.y<=d&&y!==i&&y!==o&&ia(a,u,l,h,c,f,y.x,y.y)&&cn(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;x&&x.z<=_;){if(x.x>=p&&x.x<=v&&x.y>=g&&x.y<=d&&x!==i&&x!==o&&ia(a,u,l,h,c,f,x.x,x.y)&&cn(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function lb(r,e,t){let n=r;do{let i=n.prev,s=n.next.next;!hh(i,s)&&M0(i,n,n.next,s)&&jl(i,s)&&jl(s,i)&&(e.push(i.i/t|0),e.push(n.i/t|0),e.push(s.i/t|0),ql(n),ql(n.next),n=r=s),n=n.next}while(n!==r);return $s(n)}function cb(r,e,t,n,i,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&yb(o,a)){let l=E0(o,a);o=$s(o,o.next),l=$s(l,l.next),Xl(o,e,t,n,i,s,0),Xl(l,e,t,n,i,s,0);return}a=a.next}o=o.next}while(o!==r)}function ub(r,e,t,n){let i=[],s,o,a,l,c;for(s=0,o=e.length;s=t.next.y&&t.next.y!==t.y){let f=t.x+(o-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(f<=s&&f>n&&(n=f,i=t.x=t.x&&t.x>=l&&s!==t.x&&ia(oi.x||t.x===i.x&&pb(i,t)))&&(i=t,u=h)),t=t.next;while(t!==a);return i}function pb(r,e){return cn(r.prev,r,e.prev)<0&&cn(e.next,r,r.next)<0}function mb(r,e,t,n){let i=r;do i.z===0&&(i.z=md(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,gb(i)}function gb(r){let e,t,n,i,s,o,a,l,c=1;do{for(t=r,r=null,s=null,o=0;t;){for(o++,n=t,a=0,e=0;e0||l>0&&n;)a!==0&&(l===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,a--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;t=n}s.nextZ=null,c*=2}while(o>1);return r}function md(r,e,t,n,i){return r=(r-t)*i|0,e=(e-n)*i|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function vb(r){let e=r,t=r;do(e.x=(r-o)*(s-a)&&(r-o)*(n-a)>=(t-o)*(e-a)&&(t-o)*(s-a)>=(i-o)*(n-a)}function yb(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!xb(r,e)&&(jl(r,e)&&jl(e,r)&&_b(r,e)&&(cn(r.prev,r,e.prev)||cn(r,e.prev,e))||hh(r,e)&&cn(r.prev,r,r.next)>0&&cn(e.prev,e,e.next)>0)}function cn(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function hh(r,e){return r.x===e.x&&r.y===e.y}function M0(r,e,t,n){let i=Ru(cn(r,e,t)),s=Ru(cn(r,e,n)),o=Ru(cn(t,n,r)),a=Ru(cn(t,n,e));return!!(i!==s&&o!==a||i===0&&Cu(r,t,e)||s===0&&Cu(r,n,e)||o===0&&Cu(t,r,n)||a===0&&Cu(t,e,n))}function Cu(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function Ru(r){return r>0?1:r<0?-1:0}function xb(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&M0(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function jl(r,e){return cn(r.prev,r,r.next)<0?cn(r,e,r.next)>=0&&cn(r,r.prev,e)>=0:cn(r,e,r.prev)<0||cn(r,r.next,e)<0}function _b(r,e){let t=r,n=!1,i=(r.x+e.x)/2,s=(r.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&i<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function E0(r,e){let t=new gd(r.i,r.x,r.y),n=new gd(e.i,e.x,e.y),i=r.next,s=e.prev;return r.next=e,e.prev=r,t.next=i,i.prev=t,n.next=t,t.prev=n,s.next=n,n.prev=s,n}function Xg(r,e,t,n){let i=new gd(r,e,t);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function ql(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function gd(r,e,t){this.i=r,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Tb(r,e,t,n){let i=0;for(let s=e,o=t-n;s2&&r[e-1].equals(r[0])&&r.pop()}function qg(r,e){for(let t=0;tNumber.EPSILON){let k=Math.sqrt(Te),J=Math.sqrt(he*he+me*me),ue=se.x-U/k,Z=se.y+A/k,ce=re.x-me/J,pe=re.y+he/J,fe=((ce-ue)*me-(pe-Z)*he)/(A*me-U*he);le=ue+A*fe-X.x,xe=Z+U*fe-X.y;let ge=le*le+xe*xe;if(ge<=2)return new Ce(le,xe);G=Math.sqrt(ge/2)}else{let k=!1;A>Number.EPSILON?he>Number.EPSILON&&(k=!0):A<-Number.EPSILON?he<-Number.EPSILON&&(k=!0):Math.sign(U)===Math.sign(me)&&(k=!0),k?(le=-U,xe=A,G=Math.sqrt(Te)):(le=A,xe=U,G=Math.sqrt(Te/2))}return new Ce(le/G,xe/G)}let ae=[];for(let X=0,se=B.length,re=se-1,le=X+1;X=0;X--){let se=X/d,re=p*Math.cos(se*Math.PI/2),le=g*Math.sin(se*Math.PI/2)+v;for(let xe=0,G=B.length;xe=0;){let le=re,xe=re-1;xe<0&&(xe=X.length-1);for(let G=0,A=u+d*2;G0)&&p.push(y,x,I),(m!==n-1||l=s)){let a=t[1];e=s)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=n.slice(s,o),this.values=this.values.slice(s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(i!==void 0&&bb(i))for(let a=0,l=i.length;a!==l;++a){let c=i[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===cf,s=e.length-1,o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*n,l=o*n,c=0;c!==n;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=e.slice(0,o),this.values=t.slice(0,o*n)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};Ri.prototype.TimeBufferType=Float32Array;Ri.prototype.ValueBufferType=Float32Array;Ri.prototype.DefaultInterpolation=Ou;var vs=class extends Ri{};vs.prototype.ValueTypeName="bool";vs.prototype.ValueBufferType=Array;vs.prototype.DefaultInterpolation=Lu;vs.prototype.InterpolantFactoryMethodLinear=void 0;vs.prototype.InterpolantFactoryMethodSmooth=void 0;var Qu=class extends Ri{};Qu.prototype.ValueTypeName="color";var ys=class extends Ri{};ys.prototype.ValueTypeName="number";var _d=class extends ba{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(i-t),c=e*a;for(let u=c+a;c!==u;c+=4)sn.slerpFlat(s,0,o,c-a,o,c,l);return s}},Ii=class extends Ri{InterpolantFactoryMethodLinear(e){return new _d(this.times,this.values,this.getValueSize(),e)}};Ii.prototype.ValueTypeName="quaternion";Ii.prototype.DefaultInterpolation=Ou;Ii.prototype.InterpolantFactoryMethodSmooth=void 0;var xs=class extends Ri{};xs.prototype.ValueTypeName="string";xs.prototype.ValueBufferType=Array;xs.prototype.DefaultInterpolation=Lu;xs.prototype.InterpolantFactoryMethodLinear=void 0;xs.prototype.InterpolantFactoryMethodSmooth=void 0;var Ki=class extends Ri{};Ki.prototype.ValueTypeName="vector";var Qs=class{constructor(e="",t=-1,n=[],i=Ry){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Xr(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let o=0,a=n.length;o!==a;++o)t.push(wb(n[o]).scale(i));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=n.length;s!==o;++s)t.push(Ri.toJSON(n[s]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let s=t.length,o=[];for(let a=0;a1){let h=u[1],f=i[h];f||(i[h]=f=[]),f.push(c)}}let o=[];for(let a in i)o.push(this.CreateFromMorphTargetSequence(a,i[a],t,n));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let n=function(h,f,p,g,v){if(p.length!==0){let d=[],m=[];b0(p,d,m,g),d.length!==0&&v.push(new h(f,d,m))}},i=[],s=e.name||"default",o=e.fps||30,a=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let h=0;h{t&&t(s),this.manager.itemEnd(e)},0),s;if(kr[e]!==void 0){kr[e].push({onLoad:t,onProgress:n,onError:i});return}kr[e]=[],kr[e].push({onLoad:t,onProgress:n,onError:i});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;let u=kr[e],h=c.body.getReader(),f=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),p=f?parseInt(f):0,g=p!==0,v=0,d=new ReadableStream({start(m){_();function _(){h.read().then(({done:y,value:x})=>{if(y)m.close();else{v+=x.byteLength;let w=new ProgressEvent("progress",{lengthComputable:g,loaded:v,total:p});for(let I=0,C=u.length;I{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,a));case"json":return c.json();default:if(a===void 0)return c.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),f=h&&h[1]?h[1].toLowerCase():void 0,p=new TextDecoder(f);return c.arrayBuffer().then(g=>p.decode(g))}}}).then(c=>{eh.add(e,c);let u=kr[e];delete kr[e];for(let h=0,f=u.length;h{let u=kr[e];if(u===void 0)throw this.manager.itemError(e),c;delete kr[e];for(let h=0,f=u.length;h{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}};var th=class extends Dt{constructor(e){super(e)}load(e,t,n,i){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,o=eh.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;let a=kl("img");function l(){u(),eh.add(e,this),t&&t(this),s.manager.itemEnd(e)}function c(h){u(),i&&i(h),s.manager.itemError(e),s.manager.itemEnd(e)}function u(){a.removeEventListener("load",l,!1),a.removeEventListener("error",c,!1)}return a.addEventListener("load",l,!1),a.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(a.crossOrigin=this.crossOrigin),s.manager.itemStart(e),a.src=e,a}},nh=class extends Dt{constructor(e){super(e)}load(e,t,n,i){let s=new Gl;s.colorSpace=jt;let o=new th(this.manager);o.setCrossOrigin(this.crossOrigin),o.setPath(this.path);let a=0;function l(c){o.load(e[c],function(u){s.images[c]=u,a++,a===6&&(s.needsUpdate=!0,t&&t(s))},void 0,i)}for(let c=0;cthis.max.x||e.ythis.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,t){return t.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.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,e0).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)}};var Tr=class{constructor(){this.type="ShapePath",this.color=new Ve,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Wr,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,s,o){return this.currentPath.bezierCurveTo(e,t,n,i,s,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(m){let _=[];for(let y=0,x=m.length;yNumber.EPSILON){if(M<0&&(C=_[I],E=-E,P=_[w],M=-M),m.yP.y)continue;if(m.y===C.y){if(m.x===C.x)return!0}else{let L=M*(m.x-C.x)-E*(m.y-C.y);if(L===0)return!0;if(L<0)continue;x=!x}}else{if(m.y!==C.y)continue;if(P.x<=m.x&&m.x<=C.x||C.x<=m.x&&m.x<=P.x)return!0}}return x}let i=Ai.isClockWise,s=this.subPaths;if(s.length===0)return[];let o,a,l,c=[];if(s.length===1)return a=s[0],l=new ds,l.curves=a.curves,c.push(l),c;let u=!i(s[0].getPoints());u=e?!u:u;let h=[],f=[],p=[],g=0,v;f[g]=void 0,p[g]=[];for(let m=0,_=s.length;m<_;m++)a=s[m],v=a.getPoints(),o=i(v),o=e?!o:o,o?(!u&&f[g]&&g++,f[g]={s:new ds,p:v},f[g].s.curves=a.curves,u&&g++,p[g]=[]):p[g].push({h:a,p:v[0]});if(!f[0])return t(s);if(f.length>1){let m=!1,_=0;for(let y=0,x=f.length;y0&&m===!1&&(p=h)}let d;for(let m=0,_=f.length;m<_;m++){l=f[m].s,c.push(l),d=p[m];for(let y=0,x=d.length;y=t?ci.Phong:ci.Physical}var Ca=class{Convert(e){return null}},to=class extends Ca{Convert(e){return new Ve().copyLinearToSRGB(e)}},Ra=class extends Ca{Convert(e){return new Ve().copySRGBToLinear(e)}};function Jl(r){return di(r.r,r.g,r.b)}function wn(r){return new Ve(r.r/255,r.g/255,r.b/255)}function Zi(r,e,t){let n=new Kt,i=r.attributes.position.array,s=r.attributes.position.itemSize||3;for(let u=0;u{if(e.isMesh||e.isLineSegments){if(Array.isArray(e.material))for(let t of e.material)t.dispose();else e.material.dispose();e.userData=null,e.geometry.dispose()}})}function gh(r,e,t,n,i){function s(c,u,h,f,p,g){let v=new oe(p[3*g],p[3*g+1],p[3*g+2]);v.applyMatrix4(f.matrixWorld);let d=v.project(c);return new At((d.x+1)*u/2,-(d.y-1)*h/2)}let o=n.geometry.attributes.position.array,a=o.length/6,l=1/0;for(let c=0;c{i.IsEmpty()&&n.push(i)});for(let i=0;i=o)}function i(s,o){function a(l,c,u){return!(!n(u.v0,c.VertexCount())||!n(u.v1,c.VertexCount())||!n(u.v2,c.VertexCount())||u.HasVertexColors()&&(!n(u.c0,c.VertexColorCount())||!n(u.c1,c.VertexColorCount())||!n(u.c2,c.VertexColorCount()))||!n(u.n0,c.NormalCount())||!n(u.n1,c.NormalCount())||!n(u.n2,c.NormalCount())||u.HasTextureUVs()&&(!n(u.u0,c.TextureUVCount())||!n(u.u1,c.TextureUVCount())||!n(u.u2,c.TextureUVCount()))||!n(u.mat,l.MaterialCount())||!t(u.curve))}for(let l=0;l{this.CreateResult(i)})}Clear(){this.name=null,this.extension=null,this.callbacks=null,this.model=null,this.error=null,this.message=null,this.ClearContent()}CreateResult(e){if(this.error){e.onError(),e.onComplete();return}if(Uo(this.model)){this.SetError(Ze("The model doesn't contain any meshes.")),e.onError(),e.onComplete();return}vh(this.model,{defaultLineMaterialColor:this.callbacks.getDefaultLineMaterialColor(),defaultMaterialColor:this.callbacks.getDefaultMaterialColor()}),e.onSuccess(),e.onComplete()}CanImportExtension(e){return!1}GetUpDirection(){return pt.Z}ClearContent(){}ResetContent(){}ImportContent(e,t){}GetModel(){return this.model}SetError(e){this.error=!0,e!=null&&(this.message=e)}WasError(){return this.error}GetErrorMessage(){return this.message}};var jr=class r{constructor(e){this.vertices=e,this.mat=null}HasVertices(){return this.vertices!==null&&this.vertices.length>=2}GetVertices(){return this.vertices}SetMaterial(e){return this.mat=e,this}SegmentCount(){return this.vertices===null?0:this.vertices.length-1}Clone(){let e=new r([...this.vertices]);return e.SetMaterial(this.mat),e}};var Ia=class extends Ht{constructor(){super(),this.rhino=null}CanImportExtension(e){return e==="3dm"}GetUpDirection(){return pt.Z}ClearContent(){this.instanceIdToObject=null,this.instanceIdToDefinition=null}ResetContent(){this.instanceIdToObject=new Map,this.instanceIdToDefinition=new Map}ImportContent(e,t){this.rhino===null?cr("rhino3dm").then(()=>{rhino3dm().then(n=>{this.rhino=n,this.ImportRhinoContent(e),t()})}).catch(()=>{this.SetError(Ze("Failed to load rhino3dm.")),t()}):(this.ImportRhinoContent(e),t())}ImportRhinoContent(e){let t=this.rhino.File3dm.fromByteArray(e);if(t===null){this.SetError(Ze("Failed to read Rhino file."));return}this.ImportRhinoDocument(t),Uo(this.model)&&this.SetError(Ze("The model doesn't contain any 3D meshes. Try to save the model while you are in shaded view in Rhino."))}ImportRhinoDocument(e){this.InitRhinoInstances(e),this.ImportRhinoUserStrings(e),this.ImportRhinoGeometry(e)}InitRhinoInstances(e){let t=e.objects();for(let i=0;i0){let n=new Vn(Ze("Document user texts"));for(let i=0;i0){let u=new Vn(Ze("User texts"));for(let h=0;h=0;f--){let v=i[f].geometry().xform.toFloatArray(!1),d=new fn(v);u=u.MultiplyMatrix(d)}let h=new ln(u);hr(a,h)}this.model.AddMeshToRootNode(a)}GetMaterialIndex(e,t,n){function i(l,c,u){let h=c.attributes();if(h.materialSource===l.ObjectMaterialSource.MaterialFromObject){let f=h.materialIndex;if(f>-1)return e.materials().get(f)}else if(h.materialSource===l.ObjectMaterialSource.MaterialFromLayer){let f=h.layerIndex;if(f>-1){let p=e.layers().get(f),g=p.renderMaterialIndex;if(g>-1)return e.materials().get(g);if(c.geometry().objectType===l.ObjectType.Curve){let d=new l.Material;return d.name=p.name,d.diffuseColor=p.color,d}}}else if(h.materialSource===l.ObjectMaterialSource.MaterialFromParent&&u.length!==0)return i(l,u[0],[]);return null}function s(l,c){function u(d,m){d.Set(m.r,m.g,m.b)}function h(d){return d.r===0&&d.g===0&&d.b===0}function f(d){return d.r===255&&d.g===255&&d.b===255}let p=null,g=l.physicallyBased();g.supported?(p=new Qr,p.metalness=g.metallic?1:0,p.roughness=g.roughness):(p=new vn,u(p.ambient,l.ambientColor),u(p.specular,l.specularColor)),p.name=l.name,u(p.color,l.diffuseColor),p.opacity=1-l.transparency,si(p),h(p.color)&&!f(l.reflectionColor)&&u(p.color,l.reflectionColor),h(p.color)&&!f(l.transparentColor)&&u(p.color,l.transparentColor);let v=l.getBitmapTexture();if(v){let d=new ii,m=En(v.fileName),_=c.getFileBuffer(m);d.name=m,d.buffer=_,p.diffuseMap=d}return p}function o(l,c,u){let h=s(c,u);for(let f=0;f=this.arrayBuffer.byteLength}ReadArrayBuffer(e){let t=new Uint8Array(this.arrayBuffer),n=new ArrayBuffer(e),i=new Uint8Array(n),s=t.subarray(this.position,this.position+e);return i.set(s,0),this.position+=e,n}ReadBoolean8(){let e=this.dataView.getInt8(this.position);return this.position=this.position+1,!!e}ReadCharacter8(){let e=this.dataView.getInt8(this.position);return this.position=this.position+1,e}ReadUnsignedCharacter8(){let e=this.dataView.getUint8(this.position);return this.position=this.position+1,e}ReadInteger16(){let e=this.dataView.getInt16(this.position,this.isLittleEndian);return this.position=this.position+2,e}ReadUnsignedInteger16(){let e=this.dataView.getUint16(this.position,this.isLittleEndian);return this.position=this.position+2,e}ReadInteger32(){let e=this.dataView.getInt32(this.position,this.isLittleEndian);return this.position=this.position+4,e}ReadUnsignedInteger32(){let e=this.dataView.getUint32(this.position,this.isLittleEndian);return this.position=this.position+4,e}ReadFloat32(){let e=this.dataView.getFloat32(this.position,this.isLittleEndian);return this.position=this.position+4,e}ReadDouble64(){let e=this.dataView.getFloat64(this.position,this.isLittleEndian);return this.position=this.position+8,e}};var vt={MAIN3DS:19789,EDIT3DS:15677,EDIT_MATERIAL:45055,MAT_NAME:40960,MAT_AMBIENT:40976,MAT_DIFFUSE:40992,MAT_SPECULAR:41008,MAT_SHININESS:41024,MAT_SHININESS_STRENGTH:41025,MAT_TRANSPARENCY:41040,MAT_COLOR_F:16,MAT_COLOR:17,MAT_LIN_COLOR:18,MAT_LIN_COLOR_F:19,MAT_TEXMAP:41472,MAT_TEXMAP_NAME:41728,MAT_TEXMAP_UOFFSET:41816,MAT_TEXMAP_VOFFSET:41818,MAT_TEXMAP_USCALE:41812,MAT_TEXMAP_VSCALE:41814,MAT_TEXMAP_ROTATION:41820,PERCENTAGE:48,PERCENTAGE_F:49,EDIT_OBJECT:16384,OBJ_TRIMESH:16640,OBJ_LIGHT:17920,OBJ_CAMERA:18176,TRI_VERTEX:16656,TRI_TEXVERTEX:16704,TRI_FACE:16672,TRI_TRANSFORMATION:16736,TRI_MATERIAL:16688,TRI_SMOOTH:16720,KF3DS:45056,OBJECT_NODE:45058,OBJECT_HIERARCHY:45072,OBJECT_INSTANCE_NAME:45073,OBJECT_PIVOT:45075,OBJECT_POSITION:45088,OBJECT_ROTATION:45089,OBJECT_SCALE:45090,OBJECT_ID:45104},Fd=class{constructor(){this.id=-1,this.name="",this.flags=-1,this.parentId=-1,this.instanceName="",this.pivot=[0,0,0],this.positions=[],this.rotations=[],this.scales=[]}},Ud=class{constructor(){this.nodes=[],this.nodeIdToNode=new Map}IsEmpty(){return this.nodes.length===0}AddNode(e){this.nodes.push(e),this.nodeIdToNode.set(e.nodeId,e)}GetNodes(){return this.nodes}},Pa=class extends Ht{constructor(){super()}CanImportExtension(e){return e==="3ds"}GetUpDirection(){return pt.Z}ClearContent(){this.materialNameToIndex=null,this.meshNameToIndex=null,this.nodeList=null}ResetContent(){this.materialNameToIndex=new Map,this.meshNameToIndex=new Map,this.nodeList=new Ud}ImportContent(e,t){this.ProcessBinary(e),t()}ProcessBinary(e){let t=new Qn(e,!0),n=t.GetByteLength();this.ReadChunks(t,n,(i,s)=>{i===vt.MAIN3DS?this.ReadMainChunk(t,s):this.SkipChunk(t,s)})}ReadMainChunk(e,t){let n=this.GetChunkEnd(e,t);this.ReadChunks(e,n,(i,s)=>{i===vt.EDIT3DS?this.ReadEditorChunk(e,s):i===vt.KF3DS?this.ReadKeyFrameChunk(e,s):this.SkipChunk(e,s)}),this.BuildNodeHierarchy()}ReadEditorChunk(e,t){let n=this.GetChunkEnd(e,t);this.ReadChunks(e,n,(i,s)=>{i===vt.EDIT_MATERIAL?this.ReadMaterialChunk(e,s):i===vt.EDIT_OBJECT?this.ReadObjectChunk(e,s):this.SkipChunk(e,s)})}ReadMaterialChunk(e,t){let n=new vn,i=this.GetChunkEnd(e,t),s=null,o=null;this.ReadChunks(e,i,(l,c)=>{l===vt.MAT_NAME?n.name=this.ReadName(e):l===vt.MAT_AMBIENT?n.ambient=this.ReadColorChunk(e,c):l===vt.MAT_DIFFUSE?n.color=this.ReadColorChunk(e,c):l===vt.MAT_SPECULAR?n.specular=this.ReadColorChunk(e,c):l===vt.MAT_SHININESS?s=this.ReadPercentageChunk(e,c):l===vt.MAT_SHININESS_STRENGTH?o=this.ReadPercentageChunk(e,c):l===vt.MAT_TRANSPARENCY?(n.opacity=1-this.ReadPercentageChunk(e,c),si(n)):l===vt.MAT_TEXMAP?(n.diffuseMap=this.ReadTextureMapChunk(e,c),si(n)):this.SkipChunk(e,c)}),s!==null&&o!==null&&(n.shininess=s*o/10);let a=this.model.AddMaterial(n);this.materialNameToIndex.set(n.name,a)}ReadTextureMapChunk(e,t){let n=new ii,i=this.GetChunkEnd(e,t);return this.ReadChunks(e,i,(s,o)=>{if(s===vt.MAT_TEXMAP_NAME){let a=this.ReadName(e),l=this.callbacks.getFileBuffer(a);n.name=a,n.buffer=l}else s===vt.MAT_TEXMAP_UOFFSET?n.offset.x=e.ReadFloat32():s===vt.MAT_TEXMAP_VOFFSET?n.offset.y=e.ReadFloat32():s===vt.MAT_TEXMAP_USCALE?n.scale.x=e.ReadFloat32():s===vt.MAT_TEXMAP_VSCALE?n.scale.y=e.ReadFloat32():s===vt.MAT_TEXMAP_ROTATION?n.rotation=e.ReadFloat32()*ar:this.SkipChunk(e,o)}),n}ReadColorChunk(e,t){let n=new Mt(0,0,0),i=this.GetChunkEnd(e,t),s=!1;return this.ReadChunks(e,i,(o,a)=>{o===vt.MAT_COLOR?s||(n.r=e.ReadUnsignedCharacter8(),n.g=e.ReadUnsignedCharacter8(),n.b=e.ReadUnsignedCharacter8()):o===vt.MAT_LIN_COLOR?(n.r=e.ReadUnsignedCharacter8(),n.g=e.ReadUnsignedCharacter8(),n.b=e.ReadUnsignedCharacter8(),s=!0):o===vt.MAT_COLOR_F?s||(n.r=Rn(e.ReadFloat32()),n.g=Rn(e.ReadFloat32()),n.b=Rn(e.ReadFloat32())):o===vt.MAT_LIN_COLOR_F?(n.r=Rn(e.ReadFloat32()),n.g=Rn(e.ReadFloat32()),n.b=Rn(e.ReadFloat32()),s=!0):this.SkipChunk(e,a)}),n}ReadPercentageChunk(e,t){let n=0,i=this.GetChunkEnd(e,t);return this.ReadChunks(e,i,(s,o)=>{s===vt.PERCENTAGE?n=e.ReadUnsignedInteger16()/100:s===vt.PERCENTAGE_F?n=e.ReadFloat32():this.SkipChunk(e,o)}),n}ReadObjectChunk(e,t){let n=this.GetChunkEnd(e,t),i=this.ReadName(e);this.ReadChunks(e,n,(s,o)=>{s===vt.OBJ_TRIMESH?this.ReadMeshChunk(e,o,i):this.SkipChunk(e,o)})}ReadMeshChunk(e,t,n){function i(u,h){if(!h.IsValid())return;let f=h.Determinant(),p=Cr(f);p&&(h=new fn().CreateScale(-1,1,1).MultiplyMatrix(h));let g=h.Invert();if(g===null)return;let v=new ln(g);hr(u,v),p&&jc(u)}let s=new Kt;s.SetName(n);let o=this.GetChunkEnd(e,t),a=null;if(this.ReadChunks(e,o,(u,h)=>{u===vt.TRI_VERTEX?this.ReadVerticesChunk(s,e):u===vt.TRI_TEXVERTEX?this.ReadTextureVerticesChunk(s,e):u===vt.TRI_FACE?this.ReadFacesChunk(s,e,h):u===vt.TRI_TRANSFORMATION?a=this.ReadTransformationChunk(e):this.SkipChunk(e,h)}),s.VertexCount()===s.TextureUVCount())for(let u=0;u{o===vt.TRI_MATERIAL?this.ReadFaceMaterialsChunk(e,t):o===vt.TRI_SMOOTH?this.ReadFaceSmoothingGroupsChunk(e,s,t):this.SkipChunk(t,a)})}ReadFaceMaterialsChunk(e,t){let n=this.ReadName(t),i=this.materialNameToIndex.get(n),s=t.ReadUnsignedInteger16();for(let o=0;o{i===vt.OBJECT_NODE?this.ReadObjectNodeChunk(e,s):this.SkipChunk(e,s)})}BuildNodeHierarchy(){function e(n,i){function s(c){return c.positions.length===0?[0,0,0]:c.positions[0]}function o(c){function u(f){let p=[0,0,0,1],g=Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2]);if(g>0){let v=f[3]*-.5,d=Math.sin(v)/g;p=[d*f[0],d*f[1],d*f[2],Math.cos(v)]}return p}if(c.rotations.length===0)return[0,0,0,1];let h=c.rotations[0];return u(h)}function a(c){return c.scales.length===0?[1,1,1]:c.scales[0]}let l=new fn;if(l.ComposeTRS(Ei(s(n)),bo(o(n)),Ei(a(n))),i){let c=n.pivot;l=new fn().CreateTranslation(-c[0],-c[1],-c[2]).MultiplyMatrix(l)}return new ln(l)}let t=this.model.GetRootNode();if(this.nodeList.IsEmpty())for(let n=0;n0&&i.name!=="$$$DUMMY"&&(s.SetName(i.name),i.instanceName.length>0&&s.SetName(s.GetName()+" "+i.instanceName)),i.parentId===65535||!n.has(i.parentId)?t.AddChildNode(s):n.get(i.parentId).AddChildNode(s),n.set(i.id,s);let o=this.meshNameToIndex.has(i.name);s.SetTransformation(e(i,o)),o&&s.AddMeshIndex(this.meshNameToIndex.get(i.name))}}}ReadObjectNodeChunk(e,t){function n(o,a,l){let c=[];a.Skip(10);let u=a.ReadInteger32();for(let h=0;h{o===vt.OBJECT_HIERARCHY?(i.name=this.ReadName(e),i.flags=e.ReadUnsignedInteger32(),i.parentId=e.ReadUnsignedInteger16()):o===vt.OBJECT_INSTANCE_NAME?i.instanceName=this.ReadName(e):o===vt.OBJECT_PIVOT?i.pivot=this.ReadVector(e):o===vt.OBJECT_POSITION?i.positions=n(this,e,vt.OBJECT_POSITION):o===vt.OBJECT_ROTATION?i.rotations=n(this,e,vt.OBJECT_ROTATION):o===vt.OBJECT_SCALE?i.scales=n(this,e,vt.OBJECT_SCALE):o===vt.OBJECT_ID?i.id=e.ReadUnsignedInteger16():this.SkipChunk(e,a)}),this.nodeList.AddNode(i)}ReadName(e){let t="",n=0,i=0;for(;i<64&&(n=e.ReadCharacter8(),n!==0);)t=t+String.fromCharCode(n),i=i+1;return t}ReadVector(e){return[e.ReadFloat32(),e.ReadFloat32(),e.ReadFloat32()]}ReadChunks(e,t,n){for(;e.GetPosition()<=t-6;){let i=e.ReadUnsignedInteger16(),s=e.ReadUnsignedInteger32();n(i,s)}}GetChunkEnd(e,t){return e.GetPosition()+t-6}SkipChunk(e,t){e.Skip(t-6)}};var ui={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},Ji={SCALAR:0,VEC2:1,VEC3:2,VEC4:3,MAT2:4,MAT3:5,MAT4:6},no={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},kd={GLTF_STRING:1179937895,JSON_CHUNK_TYPE:1313821514,BINARY_CHUNK_TYPE:5130562};function $l(r){return di(Ns(r[0]),Ns(r[1]),Ns(r[2]))}function Ub(r,e){function t(n,i){let s=n;return i===ui.UNSIGNED_BYTE?s/=255:i===ui.UNSIGNED_SHORT&&(s/=65535),Rn(Ns(s))}return new Mt(t(r[0],e),t(r[1],e),t(r[2],e))}var Bd=class{constructor(e){this.reader=new Qn(e,!0),this.componentType=null,this.dataType=null,this.byteStride=null,this.dataCount=null,this.sparseReader=null}SetComponentType(e){this.componentType=e}SetDataType(e){e==="SCALAR"?this.dataType=Ji.SCALAR:e==="VEC2"?this.dataType=Ji.VEC2:e==="VEC3"?this.dataType=Ji.VEC3:e==="VEC4"?this.dataType=Ji.VEC4:e==="MAT2"?this.dataType=Ji.MAT2:e==="MAT3"?this.dataType=Ji.MAT3:e==="MAT4"&&(this.dataType=Ji.MAT4)}SetByteStride(e){this.byteStride=e}SetDataCount(e){this.dataCount=e}SetSparseReader(e,t){this.sparseReader={indexReader:e,valueReader:t}}ReadArrayBuffer(e){return this.reader.ReadArrayBuffer(e)}GetDataCount(){return this.dataCount}ReadData(){if(this.dataType===null)return null;if(this.dataType===Ji.SCALAR){let e=this.ReadComponent();return this.SkipBytesByStride(1),e}else if(this.dataType===Ji.VEC2){let e=this.ReadComponent(),t=this.ReadComponent();return this.SkipBytesByStride(2),new At(e,t)}else if(this.dataType===Ji.VEC3){let e=this.ReadComponent(),t=this.ReadComponent(),n=this.ReadComponent();return this.SkipBytesByStride(3),new Xe(e,t,n)}else if(this.dataType===Ji.VEC4){let e=this.ReadComponent(),t=this.ReadComponent(),n=this.ReadComponent(),i=this.ReadComponent();return this.SkipBytesByStride(4),new Vi(e,t,n,i)}return null}EnumerateData(e){if(this.sparseReader===null)for(let t=0;t{DracoDecoderModule().then(n=>{this.draco=n,t.onSuccess()})}).catch(()=>{t.onError(Ze("Failed to load draco decoder."))}):t.onSuccess()}GetUnsupportedExtensions(e){let t=[];if(e===void 0)return t;for(let n=0;n{i.AddVertex(N)}),m&&s(this.draco,o,p,l.attributes.NORMAL,N=>{i.AddNormal(N)}),_&&s(this.draco,o,p,l.attributes.TEXCOORD_0,N=>{N.y=-N.y,i.AddTextureUV(N)});let P=p.num_faces()*3,E=P*4,M=this.draco._malloc(E);o.GetTrianglesUInt32Array(p,E,M);let L=new Uint32Array(this.draco.HEAPU32.buffer,M,P).slice();for(let N=0;N0){this.SetError(uo("Unsupported extension: {0}.",n.join(", "))),t();return}this.gltfExtensions.LoadLibraries(e.extensionsRequired,{onSuccess:()=>{this.ImportModel(e),t()},onError:i=>{this.SetError(i),t()}})}ImportModel(e){let t=e.materials;if(t!==void 0)for(let i of t)this.ImportMaterial(e,i);let n=e.meshes;if(n!==void 0)for(let i of n)this.ImportMesh(e,i);this.ImportProperties(this.model,e.asset,Ze("Asset properties")),this.ImportScene(e)}ImportProperties(e,t,n){if(t==null)return;let i=new Vn(n);for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s)){let o=null,a=t[s];typeof a=="string"?o=new nn(Vt.Text,s,a):typeof a=="number"&&(Number.isInteger(a)?o=new nn(Vt.Integer,s,a):o=new nn(Vt.Number,s,a)),o!==null&&i.AddProperty(o)}i.PropertyCount()!==0&&e.AddPropertyGroup(i)}GetDefaultScene(e){let t=e.scene||0;return t>=e.scenes.length?null:e.scenes[t]}ImportMaterial(e,t){let n=new Qr;if(t.name!==void 0&&(n.name=t.name),n.color=$l([1,1,1]),t.pbrMetallicRoughness!==void 0){let s=t.pbrMetallicRoughness.baseColorFactor;s!==void 0&&(n.color=$l(s),n.opacity=s[3]);let o=t.pbrMetallicRoughness.metallicFactor;o!==void 0&&(n.metalness=o);let a=t.pbrMetallicRoughness.roughnessFactor;a!==void 0&&(n.roughness=a);let l=t.emissiveFactor;l!==void 0&&(n.emissive=$l(l)),n.diffuseMap=this.ImportTexture(e,t.pbrMetallicRoughness.baseColorTexture),n.metalnessMap=this.ImportTexture(e,t.pbrMetallicRoughness.metallicRoughnessTexture),n.normalMap=this.ImportTexture(e,t.normalTexture),n.emissiveMap=this.ImportTexture(e,t.emissiveTexture),n.diffuseMap!==null&&(n.multiplyDiffuseMap=!0);let c=t.alphaMode;c!==void 0&&(c==="BLEND"?n.transparent=!0:c==="MASK"&&(n.transparent=!0,n.alphaTest=t.alphaCutoff||.5))}let i=this.gltfExtensions.ProcessMaterial(t,n,s=>this.ImportTexture(e,s));i!==null&&(n=i),this.model.AddMaterial(n)}ImportTexture(e,t){if(t==null)return null;let n=new ii,s=e.textures[t.index].source,o=e.images[s],a=null;if(this.imageIndexToTextureParams.has(s))a=this.imageIndexToTextureParams.get(s);else{a={name:null,mimeType:null,buffer:null};let l=s.toString();if(o.uri!==void 0){let c=Ls(o.uri);if(c!==null)a.name="Embedded_"+l+"."+es(c.mimeType),a.mimeType=c.mimeType,a.buffer=c.buffer;else{let u=this.callbacks.getFileBuffer(o.uri);a.name=o.uri,a.buffer=u}}else if(o.bufferView!==void 0){let c=e.bufferViews[o.bufferView],u=this.GetReaderFromBufferView(c);if(u!==null){let h=u.ReadArrayBuffer(c.byteLength);a.name="Binary_"+l+"."+es(o.mimeType),a.mimeType=o.mimeType,a.buffer=h}}this.imageIndexToTextureParams.set(s,a)}return n.name=a.name,n.mimeType=a.mimeType,n.buffer=a.buffer,this.gltfExtensions.ProcessTexture(t,n),n}ImportMesh(e,t){let n=new Kt;this.model.AddMesh(n),t.name!==void 0&&n.SetName(t.name);for(let i=0;i{n.AddVertex(y)})}else return;let v=n.VertexCount()-h;if(o){let m=e.accessors[t.attributes.COLOR_0],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(y=>{let x=Ub([y.x,y.y,y.z],_.componentType);n.AddVertexColor(x)}),n.VertexColorCount()-f!==v&&(o=!1)}if(a){let m=e.accessors[t.attributes.NORMAL],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(y=>{n.AddNormal(y)}),n.NormalCount()-p!==v&&(a=!1)}if(l){let m=e.accessors[t.attributes.TEXCOORD_0],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(y=>{y.y=-y.y,n.AddTextureUV(y)}),n.TextureUVCount()-g!==v&&(l=!1)}let d=[];if(c){let m=e.accessors[t.indices],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(y=>{d.push(y)})}else{let m=n.VertexCount()-h;for(let _=0;_{this.ifc=new WebIFC.IfcAPI,this.ifc.Init().then(()=>{this.ImportIfcContent(e),t()})}).catch(()=>{this.SetError(Ze("Failed to load web-ifc.")),t()}):(this.ImportIfcContent(e),t())}ImportIfcContent(e){let t=new Uint8Array(e),n=this.ifc.OpenModel(t,{COORDINATE_TO_ORIGIN:!0}),i=this.ifc.LoadAllGeometry(n);for(let s=0;s0&&this.ImportIfcMesh(n,o)}this.ImportProperties(n),this.ifc.CloseModel(n)}ImportIfcMesh(e,t){let n=new Kt;n.SetName(uo("Mesh {0}",t.expressID.toString()));let i=0,s=t.geometries;for(let o=0;o{let a=null;if(this.expressIDToMesh.has(o.value)?a=this.expressIDToMesh.get(o.value):this.ifc.GetLine(e,o.value,!0).type===WebIFC.IFCBUILDING&&(a=this.model),a===null)return;let l=s.RelatingPropertyDefinition,c=this.ifc.GetLine(e,l.value,!0);if(!c||!c.HasProperties)return;let u=new Vn(c.Name.value);c.HasProperties.forEach(h=>{if(!h||!h.Name||!h.NominalValue||!h.NominalValue.constructor||h.type!==WebIFC.IFCPROPERTYSINGLEVALUE)return;let f=this.GetIFCString(h.Name.value),p=null,g=null;switch(h.NominalValue.constructor.name){case"IfcText":case"IfcLabel":case"IfcIdentifier":case WebIFC.IFCLABEL:p=new nn(Vt.Text,f,this.GetIFCString(h.NominalValue.value));break;case"IfcBoolean":case"IfcLogical":g=Ze("Unknown"),h.NominalValue.value==="T"?g=Ze("True"):h.NominalValue.value==="F"&&(g=Ze("False")),p=new nn(Vt.Text,f,g);break;case"IfcInteger":case"IfcCountMeasure":p=new nn(Vt.Integer,f,h.NominalValue.value);break;case"IfcReal":case"IfcLengthMeasure":case"IfcPositiveLengthMeasure":case"IfcAreaMeasure":case"IfcVolumeMeasure":case"IfcRatioMeasure":case"IfcPositiveRatioMeasure":case"IfcMassMeasure":case"IfcMassPerLengthMeasure":case"IfcPlaneAngleMeasure":case"IfcThermalTransmittanceMeasure":p=new nn(Vt.Number,f,h.NominalValue.value);break;default:console.log(h);break}p!==null&&u.AddProperty(p)}),u.PropertyCount()>0&&a.AddPropertyGroup(u)})}}GetMaterialIndexByColor(e){let t=di(e.x,e.y,e.z),n=parseInt(e.w*255,10);return this.colorToMaterial.GetMaterialIndex(t.r,t.g,t.b,n)}GetIFCString(e){let t=this.DecodeIFCString(e);return t.length===0&&(t="-"),t}DecodeIFCString(e){let t=/\\X2\\(.*?)\\X0\\/uig,n=e,i=t.exec(e);for(;i;){let s=String.fromCharCode(parseInt(i[1],16));n=n.replace(i[0],s),i=t.exec(e)}return n}};var Vd=class{constructor(e){this.mesh=e,this.globalToMeshVertices=new Map,this.globalToMeshVertexColors=new Map,this.globalToMeshNormals=new Map,this.globalToMeshUvs=new Map}AddVertex(e,t){return this.GetMeshIndex(e,t,this.globalToMeshVertices,n=>this.mesh.AddVertex(new Xe(n.x,n.y,n.z)))}AddVertexColor(e,t){return this.GetMeshIndex(e,t,this.globalToMeshVertexColors,n=>this.mesh.AddVertexColor(new Mt(n.r,n.g,n.b)))}AddNormal(e,t){return this.GetMeshIndex(e,t,this.globalToMeshNormals,n=>this.mesh.AddNormal(new Xe(n.x,n.y,n.z)))}AddUV(e,t){return this.GetMeshIndex(e,t,this.globalToMeshUvs,n=>this.mesh.AddTextureUV(new At(n.x,n.y)))}AddLine(e){this.mesh.AddLine(e)}AddTriangle(e){this.mesh.AddTriangle(e)}GetMeshIndex(e,t,n,i){if(isNaN(e)||e<0||e>=t.length)return null;if(n.has(e))return n.get(e);{let s=t[e],o=i(s);return n.set(e,o),o}}};function yh(r,e,t){return di(parseFloat(r),parseFloat(e),parseFloat(t))}var Oa=class extends Ht{constructor(){super()}CanImportExtension(e){return e==="obj"}GetUpDirection(){return pt.Y}ClearContent(){this.globalVertices=null,this.globalVertexColors=null,this.globalNormals=null,this.globalUvs=null,this.currentMeshConverter=null,this.currentMaterial=null,this.currentMaterialIndex=null,this.meshNameToConverter=null,this.materialNameToIndex=null}ResetContent(){this.globalVertices=[],this.globalVertexColors=[],this.globalNormals=[],this.globalUvs=[],this.currentMeshConverter=null,this.currentMaterial=null,this.currentMaterialIndex=null,this.meshNameToConverter=new Map,this.materialNameToIndex=new Map}ImportContent(e,t){let n=xn(e);Mi(n,i=>{this.WasError()||this.ProcessLine(i)}),t()}ProcessLine(e){if(e[0]==="#")return;let t=Ui(e,"#");if(t.length===0)return;let n=t[0].toLowerCase();t.shift(),!this.ProcessMeshParameter(n,t,e)&&this.ProcessMaterialParameter(n,t,e)}AddNewMesh(e){if(this.meshNameToConverter.has(e))this.currentMeshConverter=this.meshNameToConverter.get(e);else{let t=new Kt;t.SetName(e),this.model.AddMeshToRootNode(t),this.currentMeshConverter=new Vd(t),this.meshNameToConverter.set(e,this.currentMeshConverter)}}ProcessMeshParameter(e,t,n){if(e==="g"||e==="o"){if(t.length===0)return!0;let i=Pr(n,e.length,"#");return this.AddNewMesh(i),!0}else{if(e==="v")return t.length<3||(this.globalVertices.push(new Xe(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]))),t.length>=6&&this.globalVertexColors.push(yh(t[3],t[4],t[5]))),!0;if(e==="vn")return t.length<3||this.globalNormals.push(new Xe(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]))),!0;if(e==="vt")return t.length<2||this.globalUvs.push(new At(parseFloat(t[0]),parseFloat(t[1]))),!0;if(e==="l"){if(t.length<2)return!0;this.ProcessLineCommand(t)}else if(e==="f")return t.length<3||this.ProcessFaceCommand(t),!0}return!1}ProcessMaterialParameter(e,t,n){function i(o){let a=new Map,l=null;for(let c=0;c0&&(l.offset.x=parseFloat(f[0])),f.length>1&&(l.offset.y=parseFloat(f[1]))}if(h.has("-s")){let f=h.get("-s");f.length>0&&(l.scale.x=parseFloat(f[0])),f.length>1&&(l.scale.y=parseFloat(f[1]))}return l}if(e==="newmtl"){if(t.length===0)return!0;let o=new vn,a=Pr(n,e.length,"#"),l=this.model.AddMaterial(o);return o.name=a,this.currentMaterial=o,this.materialNameToIndex.set(a,l),!0}else if(e==="usemtl"){if(t.length===0)return!0;let o=Pr(n,e.length,"#");return this.materialNameToIndex.has(o)&&(this.currentMaterialIndex=this.materialNameToIndex.get(o)),!0}else if(e==="mtllib"){if(t.length===0)return!0;let o=Pr(n,e.length,"#"),a=this.callbacks.getFileBuffer(o);if(a!==null){let l=xn(a);Mi(l,c=>{this.WasError()||this.ProcessLine(c)})}return!0}else{if(e==="map_kd")return this.currentMaterial===null||t.length===0||(this.currentMaterial.diffuseMap=s(t,this.callbacks),si(this.currentMaterial)),!0;if(e==="map_ks")return this.currentMaterial===null||t.length===0||(this.currentMaterial.specularMap=s(t,this.callbacks)),!0;if(e==="map_bump"||e==="bump")return this.currentMaterial===null||t.length===0||(this.currentMaterial.bumpMap=s(t,this.callbacks)),!0;if(e==="ka")return this.currentMaterial===null||t.length<3||(this.currentMaterial.ambient=yh(t[0],t[1],t[2])),!0;if(e==="kd")return this.currentMaterial===null||t.length<3||(this.currentMaterial.color=yh(t[0],t[1],t[2])),!0;if(e==="ks")return this.currentMaterial===null||t.length<3||(this.currentMaterial.specular=yh(t[0],t[1],t[2])),!0;if(e==="ns")return this.currentMaterial===null||t.length<1||(this.currentMaterial.shininess=parseFloat(t[0])/1e3),!0;if(e==="tr")return this.currentMaterial===null||t.length<1||(this.currentMaterial.opacity=1-parseFloat(t[0]),si(this.currentMaterial)),!0;if(e==="d")return this.currentMaterial===null||t.length<1||(this.currentMaterial.opacity=parseFloat(t[0]),si(this.currentMaterial)),!0}return!1}ProcessLineCommand(e){this.currentMeshConverter===null&&this.AddNewMesh("");let t=[];for(let i=0;i1&&a[1].length>0&&s.push(this.GetRelativeIndex(parseInt(a[1],10),this.globalUvs.length)),a.length>2&&a[2].length>0&&i.push(this.GetRelativeIndex(parseInt(a[2],10),this.globalNormals.length))}for(let o=0;o0?e-1:t+e}};var Da=class extends Ht{constructor(){super()}CanImportExtension(e){return e==="off"}GetUpDirection(){return pt.Y}ClearContent(){this.mesh=null,this.status=null,this.colorToMaterial=null}ResetContent(){this.mesh=new Kt,this.model.AddMeshToRootNode(this.mesh),this.status={vertexCount:0,faceCount:0,foundVertex:0,foundFace:0},this.colorToMaterial=new ri(this.model)}ImportContent(e,t){let n=xn(e);Mi(n,i=>{this.WasError()||this.ProcessLine(i)}),t()}ProcessLine(e){function t(s){return s.indexOf(".")!==-1?Rn(parseFloat(s)):parseInt(s,10)}if(e[0]==="#")return;let n=Ui(e,"#");if(n.length===0||n[0]==="OFF")return;if(this.status.vertexCount===0&&this.status.faceCount===0){n.length>1&&(this.status.vertexCount=parseInt(n[0],10),this.status.faceCount=parseInt(n[1],10));return}if(this.status.foundVertex=3&&(this.mesh.AddVertex(new Xe(parseFloat(n[0]),parseFloat(n[1]),parseFloat(n[2]))),this.status.foundVertex+=1),n.length>=6&&this.mesh.AddVertexColor(new Mt(t(n[3]),t(n[4]),t(n[5])));return}let i=this.mesh.VertexCount()===this.mesh.VertexColorCount();if(this.status.foundFace=4){let s=parseInt(n[0],10);if(n.length=s+4){let a=new Mt(t(n[s+1]),t(n[s+2]),t(n[s+3]));o=this.colorToMaterial.GetMaterialIndex(a.r,a.g,a.b)}for(let a=0;a0&&t.format.length>0,s=n!==null&&n.count>0&&n.format.length>0;if(!i&&!s)return Ms.NoFaces}else return Ms.UnknownError;return Ms.Ok}},Hd=class{constructor(e){this.model=e,this.colorToMaterial=new Map}GetMaterialIndexByColor(e){let t="Color "+Mn(e[0])+Mn(e[1])+Mn(e[2])+Mn(e[3]);if(this.colorToMaterial.has(t))return this.colorToMaterial.get(t);{let n=new vn;n.name=t,n.color=new Mt(e[0],e[1],e[2]),n.opacity=e[3]/255,si(n);let i=this.model.AddMaterial(n);return this.colorToMaterial.set(t,i),i}}},Fa=class extends Ht{constructor(){super()}CanImportExtension(e){return e==="ply"}GetUpDirection(){return pt.Y}ClearContent(){this.mesh=null}ResetContent(){this.mesh=new Kt,this.model.AddMeshToRootNode(this.mesh)}ImportContent(e,t){let n=this.GetHeaderContent(e),i=this.ReadHeader(n),s=i.Check();if(s===Ms.Ok)if(i.format==="ascii"){let o=xn(e);o=o.substring(n.length),this.ReadAsciiContent(i,o)}else(i.format==="binary_little_endian"||i.format==="binary_big_endian")&&this.ReadBinaryContent(i,e,n.length);else s===Ms.NoVertices?this.SetError(Ze("The model contains no vertices.")):s===Ms.NoFaces?this.SetError(Ze("The model contains no faces.")):this.SetError(Ze("Invalid header information."));t()}GetHeaderContent(e){let t="",n=new Uint8Array(e),i=0;for(i=0;i{let i=Ui(n,null);i.length===0||i[0]==="comment"||i[0]!=="ply"&&(i[0]==="format"&&i.length>=2?t.SetFormat(i[1]):i[0]==="element"&&i.length>=3?t.AddElement(i[1],parseInt(i[2],10)):i[0]==="property"&&i.length>=3&&(i[1]==="list"&&i.length>=5?t.AddListFormat(i[2],i[3],i[4]):t.AddSingleFormat(i[1],i[2])))}),t}ReadAsciiContent(e,t){let n=e.GetElement("vertex"),i=e.GetElement("face"),s=0,o=0;Mi(t,a=>{if(this.WasError())return;let l=Ui(a,null);if(!(l.length===0||l[0]==="comment")){if(s=3&&(this.mesh.AddVertex(new Xe(parseFloat(l[0]),parseFloat(l[1]),parseFloat(l[2]))),s+=1);return}if(i!==null&&o=4){let c=parseInt(l[0],10);if(l.length0&&y.SetVertexColors(d,m,_),this.mesh.AddTriangle(y)}}else if(h.name==="tristrips")for(let f=0;f{this.worker=n,this.worker.addEventListener("message",a=>{this.ImportResultJson(a.data,t)}),this.worker.addEventListener("error",a=>{this.SetError(Ze("Failed to load occt-import-js.")),t()});let i=null;if(this.extension==="stp"||this.extension==="step")i="step";else if(this.extension==="igs"||this.extension==="iges")i="iges";else if(this.extension==="brp"||this.extension==="brep")i="brep";else{t();return}(i==="step"||i==="iges")&&this.model.SetUnit(ns.Millimeter);let s={linearUnit:"millimeter",linearDeflectionType:"bounding_box_ratio",linearDeflection:.001,angularDeflection:.5},o=new Uint8Array(e);this.worker.postMessage({format:i,buffer:o,params:s})}).catch(()=>{this.SetError(Ze("Failed to load occt-import-js.")),t()})}ImportResultJson(e,t){if(!e.success){t();return}let n=new ri(this.model),i=this.model.GetRootNode();this.ImportNode(e,e.root,i,n),t()}ImportNode(e,t,n,i){for(let s of t.meshes){let o=e.meshes[s],a=this.ImportMesh(o,i),l=this.model.AddMesh(a);n.AddMeshIndex(l)}for(let s of t.children){let o=new Nn;o.SetName(s.name),n.AddChildNode(o),this.ImportNode(e,s,o,i)}}ImportMesh(e,t){let n=null;if(e.color){let s=di(e.color[0],e.color[1],e.color[2]);n=t.GetMaterialIndex(s.r,s.g,s.b,null)}let i=Zi(e,n,null);e.name&&i.SetName(e.name);for(let s of e.brep_faces){if(s.color===null)continue;let o=di(s.color[0],s.color[1],s.color[2]),a=t.GetMaterialIndex(o.r,o.g,o.b,null);for(let l=s.first;l<=s.last;l++)i.GetTriangle(l).SetMaterial(a)}return i}};var ka=class extends Ht{constructor(){super()}CanImportExtension(e){return e==="stl"}GetUpDirection(){return pt.Z}ClearContent(){this.mesh=null,this.triangle=null}ResetContent(){this.mesh=new Kt,this.model.AddMeshToRootNode(this.mesh),this.triangle=null}ImportContent(e,t){if(this.IsBinaryStlFile(e))this.ProcessBinary(e);else{let n=xn(e);Mi(n,i=>{this.WasError()||this.ProcessLine(i)})}t()}IsBinaryStlFile(e){let t=e.byteLength;if(t<84)return!1;let n=new Qn(e,!0);n.Skip(80);let i=n.ReadUnsignedInteger32();return t===i*50+84}ProcessLine(e){if(e[0]==="#")return;let t=Ui(e,"#");if(t.length===0)return;let n=t[0];if(n==="solid"){if(t.length>1){let i=Pr(e,n.length,"#");this.mesh.SetName(i)}return}if(n==="facet"){if(this.triangle=new Xt(-1,-1,-1),t.length>=5&&t[1]==="normal"){let i=new Xe(parseFloat(t[2]),parseFloat(t[3]),parseFloat(t[4]));if(Ti(i.Length())){let s=this.mesh.AddNormal(i);this.triangle.SetNormals(s,s,s)}}return}if(n==="vertex"&&this.triangle!==null){if(t.length>=4){let i=this.mesh.AddVertex(new Xe(parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])));this.triangle.v0===-1?this.triangle.v0=i:this.triangle.v1===-1?this.triangle.v1=i:this.triangle.v2===-1&&(this.triangle.v2=i)}return}if(n==="endfacet"&&this.triangle!==null){this.triangle.v0!==-1&&this.triangle.v1!==-1&&this.triangle.v2!==null&&this.mesh.AddTriangle(this.triangle),this.triangle=null;return}}ProcessBinary(e){function t(o){let a=new Xe;return a.x=o.ReadFloat32(),a.y=o.ReadFloat32(),a.z=o.ReadFloat32(),a}function n(o,a){let l=t(a);return o.AddVertex(l)}let i=new Qn(e,!0);i.Skip(80);let s=i.ReadUnsignedInteger32();for(let o=0;oe.face_colors?this.colorToMaterial.GetMaterialIndex(e.face_colors[f*4+0],e.face_colors[f*4+1],e.face_colors[f*4+2],e.face_colors[f*4+3]):t),o=this.model.AddMesh(s),a=new Nn;a.AddMeshIndex(o);let l=new Xe(0,0,0);e.vector&&(l=new Xe(e.vector.x,e.vector.y,e.vector.z));let c=new Kn(0,0,0,1);e.rotation&&(c=new Kn(e.rotation.qx,e.rotation.qy,e.rotation.qz,e.rotation.qw));let u=new Xe(1,1,1),h=new fn().ComposeTRS(l,c,u);return a.SetTransformation(new ln(h)),n.AddChildNode(a),s}ImportMesh(e,t){let n=new Kt;for(let i=0;i256||$.colormap_size!==24||$.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case p:case g:case d:case m:if($.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case h:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+$.image_type)}if($.width<=0||$.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if($.pixel_size!==8&&$.pixel_size!==16&&$.pixel_size!==24&&$.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+$.pixel_size)}function n($,te,W,ae,de){let ye,Me,ve=W.pixel_size>>3,R=W.width*W.height*ve;if(te&&(Me=de.subarray(ae,ae+=W.colormap_length*(W.colormap_size>>3))),$){ye=new Uint8Array(R);let T,S,b,V=0,q=new Uint8Array(ve);for(;V>7,$[(S+V*b)*4+1]=(R&992)>>2,$[(S+V*b)*4+2]=(R&31)<<3,$[(S+V*b)*4+3]=R&32768?0:255;return $}function o($,te,W,ae,de,ye,Me,ve){let R=0,T,S,b=M.width;for(S=te;S!==ae;S+=W)for(T=de;T!==Me;T+=ye,R+=3)$[(T+b*S)*4+3]=255,$[(T+b*S)*4+2]=ve[R+0],$[(T+b*S)*4+1]=ve[R+1],$[(T+b*S)*4+0]=ve[R+2];return $}function a($,te,W,ae,de,ye,Me,ve){let R=0,T,S,b=M.width;for(S=te;S!==ae;S+=W)for(T=de;T!==Me;T+=ye,R+=4)$[(T+b*S)*4+2]=ve[R+0],$[(T+b*S)*4+1]=ve[R+1],$[(T+b*S)*4+0]=ve[R+2],$[(T+b*S)*4+3]=ve[R+3];return $}function l($,te,W,ae,de,ye,Me,ve){let R,T=0,S,b,V=M.width;for(b=te;b!==ae;b+=W)for(S=de;S!==Me;S+=ye,T++)R=ve[T],$[(S+V*b)*4+0]=R,$[(S+V*b)*4+1]=R,$[(S+V*b)*4+2]=R,$[(S+V*b)*4+3]=255;return $}function c($,te,W,ae,de,ye,Me,ve){let R=0,T,S,b=M.width;for(S=te;S!==ae;S+=W)for(T=de;T!==Me;T+=ye,R+=2)$[(T+b*S)*4+0]=ve[R+0],$[(T+b*S)*4+1]=ve[R+0],$[(T+b*S)*4+2]=ve[R+0],$[(T+b*S)*4+3]=ve[R+1];return $}function u($,te,W,ae,de){let ye,Me,ve,R,T,S;switch((M.flags&_)>>y){default:case I:ye=0,ve=1,T=te,Me=0,R=1,S=W;break;case x:ye=0,ve=1,T=te,Me=W-1,R=-1,S=-1;break;case C:ye=te-1,ve=-1,T=-1,Me=0,R=1,S=W;break;case w:ye=te-1,ve=-1,T=-1,Me=W-1,R=-1,S=-1;break}if(O)switch(M.pixel_size){case 8:l($,Me,R,S,ye,ve,T,ae);break;case 16:c($,Me,R,S,ye,ve,T,ae);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(M.pixel_size){case 8:i($,Me,R,S,ye,ve,T,ae,de);break;case 16:s($,Me,R,S,ye,ve,T,ae);break;case 24:o($,Me,R,S,ye,ve,T,ae);break;case 32:a($,Me,R,S,ye,ve,T,ae);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return $}let h=0,f=1,p=2,g=3,v=9,d=10,m=11,_=48,y=4,x=0,w=1,I=2,C=3;if(e.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let P=0,E=new Uint8Array(e),M={id_length:E[P++],colormap_type:E[P++],image_type:E[P++],colormap_index:E[P++]|E[P++]<<8,colormap_length:E[P++]|E[P++]<<8,colormap_size:E[P++],origin:[E[P++]|E[P++]<<8,E[P++]|E[P++]<<8],width:E[P++]|E[P++]<<8,height:E[P++]|E[P++]<<8,pixel_size:E[P++],flags:E[P++]};if(t(M),M.id_length+P>e.length)throw new Error("THREE.TGALoader: No data.");P+=M.id_length;let L=!1,N=!1,O=!1;switch(M.image_type){case v:L=!0,N=!0;break;case f:N=!0;break;case d:L=!0;break;case p:break;case m:L=!0,O=!0;break;case g:O=!0;break}let B=new Uint8Array(M.width*M.height*4),ie=n(L,N,M,P,E);return u(B,M.width,M.height,ie.pixel_data,ie.palettes),{data:B,width:M.width,height:M.height,flipY:!0,generateMipmaps:!0,minFilter:vi}}};var yi=Uint8Array,Ga=Uint16Array,kb=Int32Array,A0=new yi([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),w0=new yi([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Bb=new yi([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),C0=function(r,e){for(var t=new Ga(31),n=0;n<31;++n)t[n]=e+=1<>1|(Ft&21845)<<1,qr=(qr&52428)>>2|(qr&13107)<<2,qr=(qr&61680)>>4|(qr&3855)<<4,qd[Ft]=((qr&65280)>>8|(qr&255)<<8)>>1;var qr,Ft,Ql=function(r,e,t){for(var n=r.length,i=0,s=new Ga(e);i>l]=c}else for(a=new Ga(n),i=0;i>15-r[i]);return a},ec=new yi(288);for(Ft=0;Ft<144;++Ft)ec[Ft]=8;var Ft;for(Ft=144;Ft<256;++Ft)ec[Ft]=9;var Ft;for(Ft=256;Ft<280;++Ft)ec[Ft]=7;var Ft;for(Ft=280;Ft<288;++Ft)ec[Ft]=8;var Ft,N0=new yi(32);for(Ft=0;Ft<32;++Ft)N0[Ft]=5;var Ft;var zb=Ql(ec,9,1);var Hb=Ql(N0,5,1),Wd=function(r){for(var e=r[0],t=1;te&&(e=r[t]);return e},$i=function(r,e,t){var n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},Xd=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},Wb=function(r){return(r+7)/8|0},Kd=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new yi(r.subarray(e,t))};var Xb=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],hi=function(r,e,t){var n=new Error(e||Xb[r]);if(n.code=r,Error.captureStackTrace&&Error.captureStackTrace(n,hi),!t)throw n;return n},L0=function(r,e,t,n){var i=r.length,s=n?n.length:0;if(!i||e.f&&!e.l)return t||new yi(0);var o=!t,a=o||e.i!=2,l=e.i;o&&(t=new yi(i*3));var c=function(z){var X=t.length;if(z>X){var se=new yi(Math.max(X*2,z));se.set(t),t=se}},u=e.f||0,h=e.p||0,f=e.b||0,p=e.l,g=e.d,v=e.m,d=e.n,m=i*8;do{if(!p){u=$i(r,h,1);var _=$i(r,h+1,3);if(h+=3,_)if(_==1)p=zb,g=Hb,v=9,d=5;else if(_==2){var I=$i(r,h,31)+257,C=$i(r,h+10,15)+4,P=I+$i(r,h+5,31)+1;h+=14;for(var E=new yi(P),M=new yi(19),L=0;L>4;if(y<16)E[L++]=y;else{var $=0,te=0;for(y==16?(te=3+$i(r,h,3),h+=2,$=E[L-1]):y==17?(te=3+$i(r,h,7),h+=3):y==18&&(te=11+$i(r,h,127),h+=7);te--;)E[L++]=$}}var W=E.subarray(0,I),ae=E.subarray(I);v=Wd(W),d=Wd(ae),p=Ql(W,v,1),g=Ql(ae,d,1)}else hi(1);else{var y=Wb(h)+4,x=r[y-4]|r[y-3]<<8,w=y+x;if(w>i){l&&hi(0);break}a&&c(f+x),t.set(r.subarray(y,w),f),e.b=f+=x,e.p=h=w*8,e.f=u;continue}if(h>m){l&&hi(0);break}}a&&c(f+131072);for(var de=(1<>4;if(h+=$&15,h>m){l&&hi(0);break}if($||hi(2),ve<256)t[f++]=ve;else if(ve==256){Me=h,p=null;break}else{var R=ve-254;if(ve>264){var L=ve-257,T=A0[L];R=$i(r,h,(1<>4;S||hi(3),h+=S&15;var ae=Vb[b];if(b>3){var T=w0[b];ae+=Xd(r,h)&(1<m){l&&hi(0);break}a&&c(f+131072);var V=f+R;if(f>>0},jd=function(r,e){return Qi(r,e)+Qi(r,e+4)*4294967296};var qb=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&hi(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&hi(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function Yb(r,e){return L0(r,{i:2},e&&e.out,e&&e.dictionary)}function O0(r,e){return L0(r.subarray(qb(r,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}var Yd=typeof TextDecoder<"u"&&new TextDecoder,Kb=0;try{Yd.decode(jb,{stream:!0}),Kb=1}catch{}var Zb=function(r){for(var e="",t=0;;){var n=r[t++],i=(n>127)+(n>223)+(n>239);if(t+i>r.length)return{s:e,r:Kd(r,t-1)};i?i==3?(n=((n&15)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023)):i&1?e+=String.fromCharCode((n&31)<<6|r[t++]&63):e+=String.fromCharCode((n&15)<<12|(r[t++]&63)<<6|r[t++]&63):e+=String.fromCharCode(n)}};function Jb(r,e){if(e){for(var t="",n=0;n65558)&&hi(13);var i=Mr(r,n+8);if(!i)return{};var s=Qi(r,n+16),o=s==4294967295||i==65535;if(o){var a=Qi(r,n-12);o=Qi(r,a)==101075792,o&&(i=Qi(r,a+32),s=Qi(r,a+48))}for(var l=e&&e.filter,c=0;c=t[n])return n-1;if(e<=t[r])return r;let i=r,s=n,o=Math.floor((i+s)/2);for(;e=t[o+1];)e=v&&(g[p][0]=g[f][0]/a[_+1][m],d=g[p][0]*a[m][_]);let y=m>=-1?1:-m,x=h-1<=_?v-1:t-h;for(let I=y;I<=x;++I)g[p][I]=(g[f][I]-g[f][I-1])/a[_+1][m+I],d+=g[p][I]*a[m+I][_];h<=_&&(g[p][v]=-g[f][v-1]/a[_+1][h],d+=g[p][v]*a[h][_]),o[v][h]=d;let w=f;f=p,p=w}}let u=t;for(let h=1;h<=n;++h){for(let f=0;f<=t;++f)o[h][f]*=u;u*=t-h}return o}function iS(r,e,t,n,i){let s=i0,l=typeof s.Content=="string"&&s.Content!=="";if(a||l){let c=this.parseImage(n[i]);t[s.RelativeFilename||s.Filename]=c}}}}for(let n in e){let i=e[n];t[i]!==void 0?e[n]=t[i]:e[n]=e[n].split("\\").pop()}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase(),s;switch(i){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),s="image/tga";break;default:console.warn('FBXLoader: Image type "'+i+'" is not supported.');return}if(typeof t=="string")return"data:"+s+";base64,"+t;{let o=new Uint8Array(t);return window.URL.createObjectURL(new Blob([o],{type:s}))}}parseTextures(e){let t=new Map;if("Texture"in bt.Objects){let n=bt.Objects.Texture;for(let i in n){let s=this.parseTexture(n[i],e);t.set(parseInt(i),s)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let i=e.WrapModeU,s=e.WrapModeV,o=i!==void 0?i.value:0,a=s!==void 0?s.value:0;if(n.wrapS=o===0?rn:un,n.wrapT=a===0?rn:un,"Scaling"in e){let l=e.Scaling.value;n.repeat.x=l[0],n.repeat.y=l[1]}if("Translation"in e){let l=e.Translation.value;n.offset.x=l[0],n.offset.y=l[1]}return n}loadTexture(e,t){let n,i=this.textureLoader.path,s=mn.get(e.id).children;s!==void 0&&s.length>0&&t[s[0].ID]!==void 0&&(n=t[s[0].ID],(n.indexOf("blob:")===0||n.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let o,a=e.FileName.slice(-3).toLowerCase();if(a==="tga"){let l=this.manager.getHandler(".tga");l===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),o=new Dn):(l.setPath(this.textureLoader.path),o=l.load(n))}else if(a==="dds"){let l=this.manager.getHandler(".dds");l===null?(console.warn("FBXLoader: DDS loader not found, creating placeholder texture for",e.RelativeFilename),o=new Dn):(l.setPath(this.textureLoader.path),o=l.load(n))}else a==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),o=new Dn):o=this.textureLoader.load(n);return this.textureLoader.setPath(i),o}parseMaterials(e){let t=new Map;if("Material"in bt.Objects){let n=bt.Objects.Material;for(let i in n){let s=this.parseMaterial(n[i],e);s!==null&&t.set(parseInt(i),s)}}return t}parseMaterial(e,t){let n=e.id,i=e.attrName,s=e.ShadingModel;if(typeof s=="object"&&(s=s.value),!mn.has(n))return null;let o=this.parseParameters(e,t,n),a;switch(s.toLowerCase()){case"phong":a=new Zt;break;case"lambert":a=new Ea;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),a=new Zt;break}return a.setValues(o),a.name=i,a}parseParameters(e,t,n){let i={};e.BumpFactor&&(i.bumpScale=e.BumpFactor.value),e.Diffuse?i.color=new Ve().fromArray(e.Diffuse.value).convertSRGBToLinear():e.DiffuseColor&&(e.DiffuseColor.type==="Color"||e.DiffuseColor.type==="ColorRGB")&&(i.color=new Ve().fromArray(e.DiffuseColor.value).convertSRGBToLinear()),e.DisplacementFactor&&(i.displacementScale=e.DisplacementFactor.value),e.Emissive?i.emissive=new Ve().fromArray(e.Emissive.value).convertSRGBToLinear():e.EmissiveColor&&(e.EmissiveColor.type==="Color"||e.EmissiveColor.type==="ColorRGB")&&(i.emissive=new Ve().fromArray(e.EmissiveColor.value).convertSRGBToLinear()),e.EmissiveFactor&&(i.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(i.opacity=parseFloat(e.Opacity.value)),i.opacity<1&&(i.transparent=!0),e.ReflectionFactor&&(i.reflectivity=e.ReflectionFactor.value),e.Shininess&&(i.shininess=e.Shininess.value),e.Specular?i.specular=new Ve().fromArray(e.Specular.value).convertSRGBToLinear():e.SpecularColor&&e.SpecularColor.type==="Color"&&(i.specular=new Ve().fromArray(e.SpecularColor.value).convertSRGBToLinear());let s=this;return mn.get(n).children.forEach(function(o){let a=o.relationship;switch(a){case"Bump":i.bumpMap=s.getTexture(t,o.ID);break;case"Maya|TEX_ao_map":i.aoMap=s.getTexture(t,o.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":i.map=s.getTexture(t,o.ID),i.map!==void 0&&(i.map.colorSpace=jt);break;case"DisplacementColor":i.displacementMap=s.getTexture(t,o.ID);break;case"EmissiveColor":i.emissiveMap=s.getTexture(t,o.ID),i.emissiveMap!==void 0&&(i.emissiveMap.colorSpace=jt);break;case"NormalMap":case"Maya|TEX_normal_map":i.normalMap=s.getTexture(t,o.ID);break;case"ReflectionColor":i.envMap=s.getTexture(t,o.ID),i.envMap!==void 0&&(i.envMap.mapping=Fl,i.envMap.colorSpace=jt);break;case"SpecularColor":i.specularMap=s.getTexture(t,o.ID),i.specularMap!==void 0&&(i.specularMap.colorSpace=jt);break;case"TransparentColor":case"TransparencyFactor":i.alphaMap=s.getTexture(t,o.ID),i.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a);break}}),i}getTexture(e,t){return"LayeredTexture"in bt.Objects&&t in bt.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=mn.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if("Deformer"in bt.Objects){let n=bt.Objects.Deformer;for(let i in n){let s=n[i],o=mn.get(parseInt(i));if(s.attrType==="Skin"){let a=this.parseSkeleton(o,n);a.ID=i,o.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=o.parents[0].ID,e[i]=a}else if(s.attrType==="BlendShape"){let a={id:i};a.rawTargets=this.parseMorphTargets(o,n),a.id=i,o.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[i]=a}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let n=[];return e.children.forEach(function(i){let s=t[i.ID];if(s.attrType!=="Cluster")return;let o={ID:i.ID,indices:[],weights:[],transformLink:new Ye().fromArray(s.TransformLink.a)};"Indexes"in s&&(o.indices=s.Indexes.a,o.weights=s.Weights.a),n.push(o)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){let n=[];for(let i=0;i1?o=a:a.length>0?o=a[0]:(o=new Zt({name:Dt.DEFAULT_MATERIAL_NAME,color:13421772}),a.push(o)),"color"in s.attributes&&a.forEach(function(l){l.vertexColors=!0}),s.FBX_Deformer?(i=new xa(s,o),i.normalizeSkinWeights()):i=new Pt(s,o),i}createCurve(e,t){let n=e.children.reduce(function(s,o){return t.has(o.ID)&&(s=t.get(o.ID)),s},null),i=new Wn({name:Dt.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new Js(n,i)}getTransformData(e,t){let n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),"RotationOrder"in t?n.eulerOrder=G0(t.RotationOrder.value):n.eulerOrder="ZYX","Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){"LookAtProperty"in t&&mn.get(e.ID).children.forEach(function(i){if(i.relationship==="LookAtProperty"){let s=bt.Objects.Model[i.ID];if("Lcl_Translation"in s){let o=s.Lcl_Translation.value;e.target!==void 0?(e.target.position.fromArray(o),ei.add(e.target)):e.lookAt(new oe().fromArray(o))}}})}bindSkeleton(e,t,n){let i=this.parsePoseNodes();for(let s in e){let o=e[s];mn.get(parseInt(o.ID)).parents.forEach(function(l){if(t.has(l.ID)){let c=l.ID;mn.get(c).parents.forEach(function(h){n.has(h.ID)&&n.get(h.ID).bind(new Ta(o.bones),i[h.ID])})}})}}parsePoseNodes(){let e={};if("Pose"in bt.Objects){let t=bt.Objects.Pose;for(let n in t)if(t[n].attrType==="BindPose"&&t[n].NbPoseNodes>0){let i=t[n].PoseNode;Array.isArray(i)?i.forEach(function(s){e[s.Node]=new Ye().fromArray(s.Matrix.a)}):e[i.Node]=new Ye().fromArray(i.Matrix.a)}}return e}addGlobalSceneSettings(){if("GlobalSettings"in bt){if("AmbientColor"in bt.GlobalSettings){let e=bt.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],i=e[2];if(t!==0||n!==0||i!==0){let s=new Ve(t,n,i).convertSRGBToLinear();ei.add(new _r(s,1))}}"UnitScaleFactor"in bt.GlobalSettings&&(ei.userData.unitScaleFactor=bt.GlobalSettings.UnitScaleFactor.value)}}},ep=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if("Geometry"in bt.Objects){let n=bt.Objects.Geometry;for(let i in n){let s=mn.get(parseInt(i)),o=this.parseGeometry(s,n[i],e);t.set(parseInt(i),o)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),t}parseGeometry(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let i=n.skeletons,s=[],o=e.parents.map(function(h){return bt.Objects.Model[h.ID]});if(o.length===0)return;let a=e.children.reduce(function(h,f){return i[f.ID]!==void 0&&(h=i[f.ID]),h},null);e.children.forEach(function(h){n.morphTargets[h.ID]!==void 0&&s.push(n.morphTargets[h.ID])});let l=o[0],c={};"RotationOrder"in l&&(c.eulerOrder=G0(l.RotationOrder.value)),"InheritType"in l&&(c.inheritType=parseInt(l.InheritType.value)),"GeometricTranslation"in l&&(c.translation=l.GeometricTranslation.value),"GeometricRotation"in l&&(c.rotation=l.GeometricRotation.value),"GeometricScaling"in l&&(c.scale=l.GeometricScaling.value);let u=B0(c);return this.genGeometry(t,a,s,u)}genGeometry(e,t,n,i){let s=new St;e.attrName&&(s.name=e.attrName);let o=this.parseGeoNode(e,t),a=this.genBuffers(o),l=new ze(a.vertex,3);if(l.applyMatrix4(i),s.setAttribute("position",l),a.colors.length>0&&s.setAttribute("color",new ze(a.colors,3)),t&&(s.setAttribute("skinIndex",new ma(a.weightsIndices,4)),s.setAttribute("skinWeight",new ze(a.vertexWeights,4)),s.FBX_Deformer=t),a.normal.length>0){let c=new ft().getNormalMatrix(i),u=new ze(a.normal,3);u.applyNormalMatrix(c),s.setAttribute("normal",u)}if(a.uvs.forEach(function(c,u){let h=u===0?"uv":`uv${u}`;s.setAttribute(h,new ze(a.uvs[u],2))}),o.material&&o.material.mappingType!=="AllSame"){let c=a.materialIndex[0],u=0;if(a.materialIndex.forEach(function(h,f){h!==c&&(s.addGroup(u,f-u,c),c=h,u=f)}),s.groups.length>0){let h=s.groups[s.groups.length-1],f=h.start+h.count;f!==a.materialIndex.length&&s.addGroup(f,a.materialIndex.length-f,c)}s.groups.length===0&&s.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(s,e,n,i),s}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices!==void 0?e.Vertices.a:[],n.vertexIndices=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let i=0;for(;e.LayerElementUV[i];)e.LayerElementUV[i].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[i])),i++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(i,s){i.indices.forEach(function(o,a){n.weightTable[o]===void 0&&(n.weightTable[o]=[]),n.weightTable[o].push({id:s,weight:i.weights[a]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,i=0,s=!1,o=[],a=[],l=[],c=[],u=[],h=[],f=this;return e.vertexIndices.forEach(function(p,g){let v,d=!1;p<0&&(p=p^-1,d=!0);let m=[],_=[];if(o.push(p*3,p*3+1,p*3+2),e.color){let y=Th(g,n,p,e.color);l.push(y[0],y[1],y[2])}if(e.skeleton){if(e.weightTable[p]!==void 0&&e.weightTable[p].forEach(function(y){_.push(y.weight),m.push(y.id)}),_.length>4){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);let y=[0,0,0,0],x=[0,0,0,0];_.forEach(function(w,I){let C=w,P=m[I];x.forEach(function(E,M,L){if(C>E){L[M]=C,C=E;let N=y[M];y[M]=P,P=N}})}),m=y,_=x}for(;_.length<4;)_.push(0),m.push(0);for(let y=0;y<4;++y)u.push(_[y]),h.push(m[y])}if(e.normal){let y=Th(g,n,p,e.normal);a.push(y[0],y[1],y[2])}e.material&&e.material.mappingType!=="AllSame"&&(v=Th(g,n,p,e.material)[0],v<0&&(f.negativeMaterialIndices=!0,v=0)),e.uv&&e.uv.forEach(function(y,x){let w=Th(g,n,p,y);c[x]===void 0&&(c[x]=[]),c[x].push(w[0]),c[x].push(w[1])}),i++,d&&(f.genFace(t,e,o,v,a,l,c,u,h,i),n++,i=0,o=[],a=[],l=[],c=[],u=[],h=[])}),t}getNormalNewell(e){let t=new oe(0,0,0);for(let n=0;n.5?new oe(0,1,0):new oe(0,0,1)).cross(t).normalize(),s=t.clone().cross(i).normalize();return{normal:t,tangent:i,bitangent:s}}flattenVertex(e,t,n){return new Ce(e.dot(t),e.dot(n))}genFace(e,t,n,i,s,o,a,l,c,u){let h;if(u>3){let f=[];for(let d=0;d1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");let o=e.get(s[0].ID);n[i]={name:t[i].attrName,layer:o}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(i){t=t.concat(n.generateTracks(i))}),new Qs(e.name,-1,t)}generateTracks(e){let t=[],n=new oe,i=new oe;if(e.transform&&e.transform.decompose(n,new sn,i),n=n.toArray(),i=i.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let s=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");s!==void 0&&t.push(s)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let s=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder);s!==void 0&&t.push(s)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let s=this.generateVectorTrack(e.modelName,e.S.curves,i,"scale");s!==void 0&&t.push(s)}if(e.DeformPercent!==void 0){let s=this.generateMorphTrack(e);s!==void 0&&t.push(s)}return t}generateVectorTrack(e,t,n,i){let s=this.getTimesForAllAxes(t),o=this.getKeyframeTrackValues(s,t,n);return new Ki(e+"."+i,s,o)}generateRotationTrack(e,t,n,i,s){let o,a;if(t.x!==void 0&&t.y!==void 0&&t.z!==void 0){let h=this.interpolateRotations(t.x,t.y,t.z,s);o=h[0],a=h[1]}n!==void 0&&(n=n.map(pn.degToRad),n.push(s),n=new hn().fromArray(n),n=new sn().setFromEuler(n)),i!==void 0&&(i=i.map(pn.degToRad),i.push(s),i=new hn().fromArray(i),i=new sn().setFromEuler(i).invert());let l=new sn,c=new hn,u=[];if(!a||!o)return new Ii(e+".quaternion",[0],[0]);for(let h=0;h2&&new sn().fromArray(u,(h-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(u,h/3*4);return new Ii(e+".quaternion",o,u)}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(s){return s/100}),i=ei.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new ys(e.modelName+".morphTargetInfluences["+i+"]",t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(n,i){return n-i}),t.length>1){let n=1,i=t[0];for(let s=1;s=180||p[1]>=180||p[2]>=180){let v=Math.max(...p)/180,d=new hn(...c,i),m=new hn(...h,i),_=new sn().setFromEuler(d),y=new sn().setFromEuler(m);_.dot(y)&&y.set(-y.x,-y.y,-y.z,-y.w);let x=e.times[a-1],w=e.times[a]-x,I=new sn,C=new hn;for(let P=0;P<1;P+=1/v)I.copy(_.clone().slerp(y.clone(),P)),s.push(x+P*w),C.setFromQuaternion(I,i),o.push(C.x),o.push(C.y),o.push(C.z)}else s.push(e.times[a]),o.push(pn.degToRad(e.values[a])),o.push(pn.degToRad(t.values[a])),o.push(pn.degToRad(n.values[a]))}return[s,o]}},np=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new bh,this.nodeStack=[],this.currentProp=[],this.currentPropName="";let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(i,s){let o=i.match(/^[\s\t]*;/),a=i.match(/^[\s\t]*$/);if(o||a)return;let l=i.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),c=i.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),u=i.match("^\\t{"+(t.currentIndent-1)+"}}");l?t.parseNodeBegin(i,l):c?t.parseNodeProperty(i,c,n[++s]):u?t.popStack():i.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(i)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,"").replace(/"$/,""),i=t[2].split(",").map(function(l){return l.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:n},o=this.parseNodeAttr(i),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,s):n in a?(n==="PoseNode"?a.PoseNode.push(s):a[n].id!==void 0&&(a[n]={},a[n][a[n].id]=a[n]),o.id!==""&&(a[n][o.id]=s)):typeof o.id=="number"?(a[n]={},a[n][o.id]=s):n!=="Properties70"&&(n==="PoseNode"?a[n]=[s]:a[n]=s),typeof o.id=="number"&&(s.id=o.id),o.name!==""&&(s.attrName=o.name),o.type!==""&&(s.attrType=o.type),this.pushStack(s)}parseNodeAttr(e){let t=e[0];e[0]!==""&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n="",i="";return e.length>1&&(n=e[1].replace(/^(\w+)::/,""),i=e[2]),{id:t,name:n,type:i}}parseNodeProperty(e,t,n){let i=t[1].replace(/^"/,"").replace(/"$/,"").trim(),s=t[2].replace(/^"/,"").replace(/"$/,"").trim();i==="Content"&&s===","&&(s=n.replace(/"/g,"").replace(/,$/,"").trim());let o=this.getCurrentNode();if(o.name==="Properties70"){this.parseNodeSpecialProperty(e,i,s);return}if(i==="C"){let l=s.split(",").slice(1),c=parseInt(l[0]),u=parseInt(l[1]),h=s.split(",").slice(3);h=h.map(function(f){return f.trim().replace(/^"/,"")}),i="connections",s=[c,u],hS(s,h),o[i]===void 0&&(o[i]=[])}i==="Node"&&(o.id=s),i in o&&Array.isArray(o[i])?o[i].push(s):i!=="a"?o[i]=s:o.a=s,this.setCurrentProp(o,i),i==="a"&&s.slice(-1)!==","&&(o.a=$d(s))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==","&&(t.a=$d(t.a))}parseNodeSpecialProperty(e,t,n){let i=n.split('",').map(function(u){return u.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=i[0],o=i[1],a=i[2],l=i[3],c=i[4];switch(o){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":c=parseFloat(c);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":c=$d(c);break}this.getPrevNode()[s]={type:o,type2:a,flag:l,value:c},this.setCurrentProp(this.getPrevNode(),s)}},ip=class{parse(e){let t=new Eh(e);t.skip(23);let n=t.getUint32();if(n<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+n);let i=new bh;for(;!this.endOfContent(t);){let s=this.parseNode(t,n);s!==null&&i.add(s.name,s)}return i}endOfContent(e){return e.size()%16===0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},i=t>=7500?e.getUint64():e.getUint32(),s=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let o=e.getUint8(),a=e.getString(o);if(i===0)return null;let l=[];for(let f=0;f0?l[0]:"",u=l.length>1?l[1]:"",h=l.length>2?l[2]:"";for(n.singleProperty=s===1&&e.getOffset()===i;i>e.getOffset();){let f=this.parseNode(e,t);f!==null&&this.parseSubNode(a,n,f)}return n.propertyList=l,typeof c=="number"&&(n.id=c),u!==""&&(n.attrName=u),h!==""&&(n.attrType=h),a!==""&&(n.name=a),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let i=n.propertyList[0];Array.isArray(i)?(t[n.name]=n,n.a=i):t[n.name]=i}else if(e==="Connections"&&n.name==="C"){let i=[];n.propertyList.forEach(function(s,o){o!==0&&i.push(s)}),t.connections===void 0&&(t.connections=[]),t.connections.push(i)}else if(n.name==="Properties70")Object.keys(n).forEach(function(s){t[s]=n[s]});else if(e==="Properties70"&&n.name==="P"){let i=n.propertyList[0],s=n.propertyList[1],o=n.propertyList[2],a=n.propertyList[3],l;i.indexOf("Lcl ")===0&&(i=i.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?l=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:l=n.propertyList[4],t[i]={type:s,type2:o,flag:a,value:l}}else t[n.name]===void 0?typeof n.id=="number"?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name==="PoseNode"?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return n=e.getUint32(),e.getArrayBuffer(n);case"S":return n=e.getUint32(),e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":let i=e.getUint32(),s=e.getUint32(),o=e.getUint32();if(s===0)switch(t){case"b":case"c":return e.getBooleanArray(i);case"d":return e.getFloat64Array(i);case"f":return e.getFloat32Array(i);case"i":return e.getInt32Array(i);case"l":return e.getInt64Array(i)}let a=O0(new Uint8Array(e.getArrayBuffer(o))),l=new Eh(a.buffer);switch(t){case"b":case"c":return l.getBooleanArray(i);case"d":return l.getFloat64Array(i);case"f":return l.getFloat32Array(i);case"i":return l.getInt32Array(i);case"l":return l.getInt64Array(i)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}},Eh=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t!==void 0?t:!0,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(e){let t=[];for(let n=0;n=0&&(n=new Uint8Array(this.dv.buffer,t,i)),this._textDecoder.decode(n)}},bh=class{add(e,t){this[e]=t}};function aS(r){let e="Kaydara FBX Binary \0";return r.byteLength>=e.length&&e===V0(r,0,e.length)}function lS(r){let e=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],t=0;function n(i){let s=r[i-1];return r=r.slice(t+i),t++,s}for(let i=0;i0&&D.push(new Ki(H+".position",K,be)),Re.length>0&&D.push(new Ii(H+".quaternion",K,Re)),Ke.length>0&&D.push(new Ki(H+".scale",K,Ke)),D}function L(F,D,j){let H,K=!0,be,Re;for(be=0,Re=F.length;be=0;){let H=F[D];if(H.value[j]!==null)return H;D--}return null}function B(F,D,j){for(;D>>0)+2);switch(j=j.toLowerCase(),j){case"tga":D=Yh;break;default:D=Lp}return D}function Z(F){let D=k(F.url),j=D.profile.technique,H;switch(j.type){case"phong":case"blinn":H=new Zt;break;case"lambert":H=new Ea;break;default:H=new Ci;break}H.name=F.name||"";function K(Be,je=null){let it=D.profile.samplers[Be.id],Le=null;if(it!==void 0){let nt=D.profile.surfaces[it.source];Le=V(nt.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),Le=V(Be.id);if(Le!==null){let nt=ue(Le);if(nt!==void 0){let $e=nt.load(Le),ct=Be.extra;if(ct!==void 0&&ct.technique!==void 0&&c(ct.technique)===!1){let ot=ct.technique;$e.wrapS=ot.wrapU?rn:un,$e.wrapT=ot.wrapV?rn:un,$e.offset.set(ot.offsetU||0,ot.offsetV||0),$e.repeat.set(ot.repeatU||1,ot.repeatV||1)}else $e.wrapS=rn,$e.wrapT=rn;return je!==null&&($e.colorSpace=je),$e}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",Le),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",Be.id),null}let be=j.parameters;for(let Be in be){let je=be[Be];switch(Be){case"diffuse":je.color&&H.color.fromArray(je.color),je.texture&&(H.map=K(je.texture,jt));break;case"specular":je.color&&H.specular&&H.specular.fromArray(je.color),je.texture&&(H.specularMap=K(je.texture));break;case"bump":je.texture&&(H.normalMap=K(je.texture));break;case"ambient":je.texture&&(H.lightMap=K(je.texture,jt));break;case"shininess":je.float&&H.shininess&&(H.shininess=je.float);break;case"emission":je.color&&H.emissive&&H.emissive.fromArray(je.color),je.texture&&(H.emissiveMap=K(je.texture,jt));break}}H.color.convertSRGBToLinear(),H.specular&&H.specular.convertSRGBToLinear(),H.emissive&&H.emissive.convertSRGBToLinear();let Re=be.transparent,Ke=be.transparency;if(Ke===void 0&&Re&&(Ke={float:1}),Re===void 0&&Ke&&(Re={opaque:"A_ONE",data:{color:[1,1,1,1]}}),Re&&Ke)if(Re.data.texture)H.transparent=!0;else{let Be=Re.data.color;switch(Re.opaque){case"A_ONE":H.opacity=Be[3]*Ke.float;break;case"RGB_ZERO":H.opacity=1-Be[0]*Ke.float;break;case"A_ZERO":H.opacity=1-Be[3]*Ke.float;break;case"RGB_ONE":H.opacity=Be[0]*Ke.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',Re.opaque)}H.opacity<1&&(H.transparent=!0)}if(j.extra!==void 0&&j.extra.technique!==void 0){let Be=j.extra.technique;for(let je in Be){let it=Be[je];switch(je){case"double_sided":H.side=it===1?On:wi;break;case"bump":H.normalMap=K(it.texture),H.normalScale=new Ce(1,1);break}}}return H}function ce(F){return v(ht.materials[F],Z)}function pe(F){let D={name:F.getAttribute("name")};for(let j=0,H=F.childNodes.length;j0?Re+Be:Re;D.inputs[je]={id:be,offset:Ke},D.stride=Math.max(D.stride,Ke+1),Re==="TEXCOORD"&&(D.hasUV=!0);break;case"vcount":D.vcount=o(K.textContent);break;case"p":D.p=o(K.textContent);break}}return D}function at(F){let D={};for(let j=0;j0&&D0&&Le.setAttribute("position",new ze(K.array,K.stride)),be.array.length>0&&Le.setAttribute("normal",new ze(be.array,be.stride)),Be.array.length>0&&Le.setAttribute("color",new ze(Be.array,Be.stride)),Re.array.length>0&&Le.setAttribute("uv",new ze(Re.array,Re.stride)),Ke.array.length>0&&Le.setAttribute("uv1",new ze(Ke.array,Ke.stride)),je.array.length>0&&Le.setAttribute("skinIndex",new ze(je.array,je.stride)),it.array.length>0&&Le.setAttribute("skinWeight",new ze(it.array,it.stride)),H.data=Le,H.type=F[0].type,H.materialKeys=nt,H}function ke(F,D,j,H,K=!1){let be=F.p,Re=F.stride,Ke=F.vcount;function Be(Le){let nt=be[Le+j]*it,$e=nt+it;for(;nt<$e;nt++)H.push(je[nt]);if(K){let ct=H.length-it-1;Mc.setRGB(H[ct+0],H[ct+1],H[ct+2]).convertSRGBToLinear(),H[ct+0]=Mc.r,H[ct+1]=Mc.g,H[ct+2]=Mc.b}}let je=D.array,it=D.stride;if(F.vcount!==void 0){let Le=0;for(let nt=0,$e=Ke.length;nt<$e;nt++){let ct=Ke[nt];if(ct===4){let ot=Le+Re*0,on=Le+Re*1,Gt=Le+Re*2,Lt=Le+Re*3;Be(ot),Be(on),Be(Lt),Be(on),Be(Gt),Be(Lt)}else if(ct===3){let ot=Le+Re*0,on=Le+Re*1,Gt=Le+Re*2;Be(ot),Be(on),Be(Gt)}else if(ct>4)for(let ot=1,on=ct-2;ot<=on;ot++){let Gt=Le+Re*0,Lt=Le+Re*ot,Ot=Le+Re*(ot+1);Be(Gt),Be(Lt),Be(Ot)}Le+=Re*ct}}else for(let Le=0,nt=be.length;Le=D.limits.max&&(D.static=!0),D.middlePosition=(D.limits.min+D.limits.max)/2,D}function Oi(F){let D={sid:F.getAttribute("sid"),name:F.getAttribute("name")||"",attachments:[],transforms:[]};for(let j=0;j$e.limits.max||Le<$e.limits.min)console.warn("THREE.ColladaLoader: Joint "+it+" value "+Le+" outside of limits (min: "+$e.limits.min+", max: "+$e.limits.max+").");else if($e.static)console.warn("THREE.ColladaLoader: Joint "+it+" is static.");else{let ct=nt.object,ot=$e.axis,on=nt.transforms;et.identity();for(let Gt=0;Gt()=>(e||(e={exports:{}},r(e.exports,e)),e.exports),z0=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.VERSION=void 0,r.VERSION="9.0.1"}),Ut=Tt((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e){for(var t=0,n=e.length,i=r.length;t{(function(t,n){typeof define=="function"&&define.amd?define([],n):typeof e=="object"&&e.exports?e.exports=n():t.regexpToAst=n()})(typeof self<"u"?self:r,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(d){this.idx=d.idx,this.input=d.input,this.groupIdx=d.groupIdx},t.prototype.pattern=function(d){this.idx=0,this.input=d,this.groupIdx=0,this.consumeChar("/");var m=this.disjunction();this.consumeChar("/");for(var _={type:"Flags",loc:{begin:this.idx,end:d.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":l(_,"global");break;case"i":l(_,"ignoreCase");break;case"m":l(_,"multiLine");break;case"u":l(_,"unicode");break;case"y":l(_,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:_,value:m,loc:this.loc(0)}},t.prototype.disjunction=function(){var d=[],m=this.idx;for(d.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),d.push(this.alternative());return{type:"Disjunction",value:d,loc:this.loc(m)}},t.prototype.alternative=function(){for(var d=[],m=this.idx;this.isTerm();)d.push(this.term());return{type:"Alternative",value:d,loc:this.loc(m)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var d=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(d)};case"$":return{type:"EndAnchor",loc:this.loc(d)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(d)};case"B":return{type:"NonWordBoundary",loc:this.loc(d)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var m;switch(this.popChar()){case"=":m="Lookahead";break;case"!":m="NegativeLookahead";break}c(m);var _=this.disjunction();return this.consumeChar(")"),{type:m,value:_,loc:this.loc(d)}}u()},t.prototype.quantifier=function(d){var m,_=this.idx;switch(this.popChar()){case"*":m={atLeast:0,atMost:1/0};break;case"+":m={atLeast:1,atMost:1/0};break;case"?":m={atLeast:0,atMost:1};break;case"{":var y=this.integerIncludingZero();switch(this.popChar()){case"}":m={atLeast:y,atMost:y};break;case",":var x;this.isDigit()?(x=this.integerIncludingZero(),m={atLeast:y,atMost:x}):m={atLeast:y,atMost:1/0},this.consumeChar("}");break}if(d===!0&&m===void 0)return;c(m);break}if(!(d===!0&&m===void 0))return c(m),this.peekChar(0)==="?"?(this.consumeChar("?"),m.greedy=!1):m.greedy=!0,m.type="Quantifier",m.loc=this.loc(_),m},t.prototype.atom=function(){var d,m=this.idx;switch(this.peekChar()){case".":d=this.dotAll();break;case"\\":d=this.atomEscape();break;case"[":d=this.characterClass();break;case"(":d=this.group();break}return d===void 0&&this.isPatternCharacter()&&(d=this.patternCharacter()),c(d),d.loc=this.loc(m),this.isQuantifier()&&(d.quantifier=this.quantifier()),d},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[o(` +}`,jp=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){let i=new qn,s=e.properties.get(i);s.__webglTexture=t.texture,(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,n=new nr({vertexShader:Ub,fragmentShader:kb,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Dt(new po(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},Yp=class extends Qr{constructor(e,t){super();let n=this,i=null,s=1,o=null,a="local-floor",l=1,c=null,u=null,h=null,f=null,p=null,g=null,y=new jp,d=t.getContextAttributes(),m=null,_=null,v=[],x=[],S=new Pe,I=null,A=new nn;A.viewport=new wt;let C=new nn;C.viewport=new wt;let E=[A,C],b=new Lh,R=null,N=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(G){let P=v[G];return P===void 0&&(P=new Ra,v[G]=P),P.getTargetRaySpace()},this.getControllerGrip=function(G){let P=v[G];return P===void 0&&(P=new Ra,v[G]=P),P.getGripSpace()},this.getHand=function(G){let P=v[G];return P===void 0&&(P=new Ra,v[G]=P),P.getHandSpace()};function B(G){let P=x.indexOf(G.inputSource);if(P===-1)return;let M=v[P];M!==void 0&&(M.update(G.inputSource,G.frame,c||o),M.dispatchEvent({type:G.type,data:G.inputSource}))}function V(){i.removeEventListener("select",B),i.removeEventListener("selectstart",B),i.removeEventListener("selectend",B),i.removeEventListener("squeeze",B),i.removeEventListener("squeezestart",B),i.removeEventListener("squeezeend",B),i.removeEventListener("end",V),i.removeEventListener("inputsourceschange",ie);for(let G=0;G=0&&(x[T]=null,v[T].disconnect(M))}for(let P=0;P=x.length){x.push(M),T=j;break}else if(x[j]===null){x[j]=M,T=j;break}if(T===-1)break}let k=v[T];k&&k.connect(M)}}let Y=new se,te=new se;function q(G,P,M){Y.setFromMatrixPosition(P.matrixWorld),te.setFromMatrixPosition(M.matrixWorld);let T=Y.distanceTo(te),k=P.projectionMatrix.elements,j=M.projectionMatrix.elements,W=k[14]/(k[10]-1),re=k[14]/(k[10]+1),ce=(k[9]+1)/k[5],me=(k[9]-1)/k[5],w=(k[8]-1)/k[0],ae=(j[8]+1)/j[0],pe=W*w,ue=W*ae,ee=T/(-w+ae),$=ee*-w;if(P.matrixWorld.decompose(G.position,G.quaternion,G.scale),G.translateX($),G.translateZ(ee),G.matrixWorld.compose(G.position,G.quaternion,G.scale),G.matrixWorldInverse.copy(G.matrixWorld).invert(),k[10]===-1)G.projectionMatrix.copy(P.projectionMatrix),G.projectionMatrixInverse.copy(P.projectionMatrixInverse);else{let ve=W+ee,H=re+ee,L=pe-$,O=ue+(T-$),D=ce*re/H*ve,z=me*re/H*ve;G.projectionMatrix.makePerspective(L,O,D,z,ve,H),G.projectionMatrixInverse.copy(G.projectionMatrix).invert()}}function le(G,P){P===null?G.matrixWorld.copy(G.matrix):G.matrixWorld.multiplyMatrices(P.matrixWorld,G.matrix),G.matrixWorldInverse.copy(G.matrixWorld).invert()}this.updateCamera=function(G){if(i===null)return;let P=G.near,M=G.far;y.texture!==null&&(y.depthNear>0&&(P=y.depthNear),y.depthFar>0&&(M=y.depthFar)),b.near=C.near=A.near=P,b.far=C.far=A.far=M,(R!==b.near||N!==b.far)&&(i.updateRenderState({depthNear:b.near,depthFar:b.far}),R=b.near,N=b.far),A.layers.mask=G.layers.mask|2,C.layers.mask=G.layers.mask|4,b.layers.mask=A.layers.mask|C.layers.mask;let T=G.parent,k=b.cameras;le(b,T);for(let j=0;j0&&(d.alphaTest.value=m.alphaTest);let _=e.get(m),v=_.envMap,x=_.envMapRotation;v&&(d.envMap.value=v,bo.copy(x),bo.x*=-1,bo.y*=-1,bo.z*=-1,v.isCubeTexture&&v.isRenderTargetTexture===!1&&(bo.y*=-1,bo.z*=-1),d.envMapRotation.value.setFromMatrix4(Bb.makeRotationFromEuler(bo)),d.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,d.reflectivity.value=m.reflectivity,d.ior.value=m.ior,d.refractionRatio.value=m.refractionRatio),m.lightMap&&(d.lightMap.value=m.lightMap,d.lightMapIntensity.value=m.lightMapIntensity,t(m.lightMap,d.lightMapTransform)),m.aoMap&&(d.aoMap.value=m.aoMap,d.aoMapIntensity.value=m.aoMapIntensity,t(m.aoMap,d.aoMapTransform))}function o(d,m){d.diffuse.value.copy(m.color),d.opacity.value=m.opacity,m.map&&(d.map.value=m.map,t(m.map,d.mapTransform))}function a(d,m){d.dashSize.value=m.dashSize,d.totalSize.value=m.dashSize+m.gapSize,d.scale.value=m.scale}function l(d,m,_,v){d.diffuse.value.copy(m.color),d.opacity.value=m.opacity,d.size.value=m.size*_,d.scale.value=v*.5,m.map&&(d.map.value=m.map,t(m.map,d.uvTransform)),m.alphaMap&&(d.alphaMap.value=m.alphaMap,t(m.alphaMap,d.alphaMapTransform)),m.alphaTest>0&&(d.alphaTest.value=m.alphaTest)}function c(d,m){d.diffuse.value.copy(m.color),d.opacity.value=m.opacity,d.rotation.value=m.rotation,m.map&&(d.map.value=m.map,t(m.map,d.mapTransform)),m.alphaMap&&(d.alphaMap.value=m.alphaMap,t(m.alphaMap,d.alphaMapTransform)),m.alphaTest>0&&(d.alphaTest.value=m.alphaTest)}function u(d,m){d.specular.value.copy(m.specular),d.shininess.value=Math.max(m.shininess,1e-4)}function h(d,m){m.gradientMap&&(d.gradientMap.value=m.gradientMap)}function f(d,m){d.metalness.value=m.metalness,m.metalnessMap&&(d.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,d.metalnessMapTransform)),d.roughness.value=m.roughness,m.roughnessMap&&(d.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,d.roughnessMapTransform)),m.envMap&&(d.envMapIntensity.value=m.envMapIntensity)}function p(d,m,_){d.ior.value=m.ior,m.sheen>0&&(d.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),d.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(d.sheenColorMap.value=m.sheenColorMap,t(m.sheenColorMap,d.sheenColorMapTransform)),m.sheenRoughnessMap&&(d.sheenRoughnessMap.value=m.sheenRoughnessMap,t(m.sheenRoughnessMap,d.sheenRoughnessMapTransform))),m.clearcoat>0&&(d.clearcoat.value=m.clearcoat,d.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(d.clearcoatMap.value=m.clearcoatMap,t(m.clearcoatMap,d.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(d.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,t(m.clearcoatRoughnessMap,d.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(d.clearcoatNormalMap.value=m.clearcoatNormalMap,t(m.clearcoatNormalMap,d.clearcoatNormalMapTransform),d.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),m.side===_n&&d.clearcoatNormalScale.value.negate())),m.dispersion>0&&(d.dispersion.value=m.dispersion),m.iridescence>0&&(d.iridescence.value=m.iridescence,d.iridescenceIOR.value=m.iridescenceIOR,d.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],d.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(d.iridescenceMap.value=m.iridescenceMap,t(m.iridescenceMap,d.iridescenceMapTransform)),m.iridescenceThicknessMap&&(d.iridescenceThicknessMap.value=m.iridescenceThicknessMap,t(m.iridescenceThicknessMap,d.iridescenceThicknessMapTransform))),m.transmission>0&&(d.transmission.value=m.transmission,d.transmissionSamplerMap.value=_.texture,d.transmissionSamplerSize.value.set(_.width,_.height),m.transmissionMap&&(d.transmissionMap.value=m.transmissionMap,t(m.transmissionMap,d.transmissionMapTransform)),d.thickness.value=m.thickness,m.thicknessMap&&(d.thicknessMap.value=m.thicknessMap,t(m.thicknessMap,d.thicknessMapTransform)),d.attenuationDistance.value=m.attenuationDistance,d.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(d.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(d.anisotropyMap.value=m.anisotropyMap,t(m.anisotropyMap,d.anisotropyMapTransform))),d.specularIntensity.value=m.specularIntensity,d.specularColor.value.copy(m.specularColor),m.specularColorMap&&(d.specularColorMap.value=m.specularColorMap,t(m.specularColorMap,d.specularColorMapTransform)),m.specularIntensityMap&&(d.specularIntensityMap.value=m.specularIntensityMap,t(m.specularIntensityMap,d.specularIntensityMapTransform))}function g(d,m){m.matcap&&(d.matcap.value=m.matcap)}function y(d,m){let _=e.get(m).light;d.referencePosition.value.setFromMatrixPosition(_.matrixWorld),d.nearDistance.value=_.shadow.camera.near,d.farDistance.value=_.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function Vb(r,e,t,n){let i={},s={},o=[],a=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function l(_,v){let x=v.program;n.uniformBlockBinding(_,x)}function c(_,v){let x=i[_.id];x===void 0&&(g(_),x=u(_),i[_.id]=x,_.addEventListener("dispose",d));let S=v.program;n.updateUBOMapping(_,S);let I=e.render.frame;s[_.id]!==I&&(f(_),s[_.id]=I)}function u(_){let v=h();_.__bindingPointIndex=v;let x=r.createBuffer(),S=_.__size,I=_.usage;return r.bindBuffer(r.UNIFORM_BUFFER,x),r.bufferData(r.UNIFORM_BUFFER,S,I),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,v,x),x}function h(){for(let _=0;_0&&(x+=S-I),_.__size=x,_.__cache={},this}function y(_){let v={boundary:0,storage:0};return typeof _=="number"||typeof _=="boolean"?(v.boundary=4,v.storage=4):_.isVector2?(v.boundary=8,v.storage=8):_.isVector3||_.isColor?(v.boundary=16,v.storage=12):_.isVector4?(v.boundary=16,v.storage=16):_.isMatrix3?(v.boundary=48,v.storage=48):_.isMatrix4?(v.boundary=64,v.storage=64):_.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",_),v}function d(_){let v=_.target;v.removeEventListener("dispose",d);let x=o.indexOf(v.__bindingPointIndex);o.splice(x,1),r.deleteBuffer(i[v.id]),delete i[v.id],delete s[v.id]}function m(){for(let _ in i)r.deleteBuffer(i[_]);o=[],i={},s={}}return{bind:l,update:c,dispose:m}}var Xa=class{constructor(e={}){let{canvas:t=$0(),context:n=null,depth:i=!0,stencil:s=!1,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:h=!1,reverseDepthBuffer:f=!1}=e;this.isWebGLRenderer=!0;let p;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");p=n.getContextAttributes().alpha}else p=o;let g=new Uint32Array(4),y=new Int32Array(4),d=null,m=null,_=[],v=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=ls,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let x=this,S=!1;this._outputColorSpace=yt;let I=0,A=0,C=null,E=-1,b=null,R=new wt,N=new wt,B=null,V=new He(0),ie=0,Y=t.width,te=t.height,q=1,le=null,ye=null,Te=new wt(0,0,Y,te),Ae=new wt(0,0,Y,te),_e=!1,G=new Pa,P=!1,M=!1,T=new Je,k=new Je,j=new se,W=new wt,re={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},ce=!1;function me(){return C===null?q:1}let w=n;function ae(K,xe){return t.getContext(K,xe)}try{let K={alpha:!0,depth:i,stencil:s,antialias:a,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:u,failIfMajorPerformanceCaveat:h};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${Oh}`),t.addEventListener("webglcontextlost",Ce,!1),t.addEventListener("webglcontextrestored",Be,!1),t.addEventListener("webglcontextcreationerror",Oe,!1),w===null){let xe="webgl2";if(w=ae(xe,K),w===null)throw ae(xe)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(K){throw console.error("THREE.WebGLRenderer: "+K.message),K}let pe,ue,ee,$,ve,H,L,O,D,z,Q,ne,oe,he,ge,de,Ee,Re,De,ke,at,je,Ke,fe;function Le(){pe=new sE(w),pe.init(),je=new Fb(w,pe),ue=new $M(w,pe,e,je),ee=new Ob(w,pe),ue.reverseDepthBuffer&&f&&ee.buffers.depth.setReversed(!0),$=new lE(w),ve=new Tb,H=new Db(w,pe,ee,ve,ue,je,$),L=new eE(x),O=new rE(x),D=new p_(w),Ke=new ZM(w,D),z=new oE(w,D,$,Ke),Q=new uE(w,z,D,$),De=new cE(w,ue,H),de=new QM(ve),ne=new _b(x,L,O,pe,ue,Ke,de),oe=new Gb(x,ve),he=new Eb,ge=new Ib(pe),Re=new KM(x,L,O,ee,Q,p,l),Ee=new Nb(x,Q,ue),fe=new Vb(w,$,ue,ee),ke=new JM(w,pe,$),at=new aE(w,pe,$),$.programs=ne.programs,x.capabilities=ue,x.extensions=pe,x.properties=ve,x.renderLists=he,x.shadowMap=Ee,x.state=ee,x.info=$}Le();let be=new Yp(x,w);this.xr=be,this.getContext=function(){return w},this.getContextAttributes=function(){return w.getContextAttributes()},this.forceContextLoss=function(){let K=pe.get("WEBGL_lose_context");K&&K.loseContext()},this.forceContextRestore=function(){let K=pe.get("WEBGL_lose_context");K&&K.restoreContext()},this.getPixelRatio=function(){return q},this.setPixelRatio=function(K){K!==void 0&&(q=K,this.setSize(Y,te,!1))},this.getSize=function(K){return K.set(Y,te)},this.setSize=function(K,xe,Se=!0){if(be.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Y=K,te=xe,t.width=Math.floor(K*q),t.height=Math.floor(xe*q),Se===!0&&(t.style.width=K+"px",t.style.height=xe+"px"),this.setViewport(0,0,K,xe)},this.getDrawingBufferSize=function(K){return K.set(Y*q,te*q).floor()},this.setDrawingBufferSize=function(K,xe,Se){Y=K,te=xe,q=Se,t.width=Math.floor(K*Se),t.height=Math.floor(xe*Se),this.setViewport(0,0,K,xe)},this.getCurrentViewport=function(K){return K.copy(R)},this.getViewport=function(K){return K.copy(Te)},this.setViewport=function(K,xe,Se,we){K.isVector4?Te.set(K.x,K.y,K.z,K.w):Te.set(K,xe,Se,we),ee.viewport(R.copy(Te).multiplyScalar(q).round())},this.getScissor=function(K){return K.copy(Ae)},this.setScissor=function(K,xe,Se,we){K.isVector4?Ae.set(K.x,K.y,K.z,K.w):Ae.set(K,xe,Se,we),ee.scissor(N.copy(Ae).multiplyScalar(q).round())},this.getScissorTest=function(){return _e},this.setScissorTest=function(K){ee.setScissorTest(_e=K)},this.setOpaqueSort=function(K){le=K},this.setTransparentSort=function(K){ye=K},this.getClearColor=function(K){return K.copy(Re.getClearColor())},this.setClearColor=function(){Re.setClearColor(...arguments)},this.getClearAlpha=function(){return Re.getClearAlpha()},this.setClearAlpha=function(){Re.setClearAlpha(...arguments)},this.clear=function(K=!0,xe=!0,Se=!0){let we=0;if(K){let Me=!1;if(C!==null){let Ge=C.texture.format;Me=Ge===Kh||Ge===Yh||Ge===jh}if(Me){let Ge=C.texture.type,Xe=Ge===lr||Ge===Ls||Ge===ka||Ge===Ga||Ge===Xh||Ge===qh,Qe=Re.getClearColor(),tt=Re.getClearAlpha(),Tt=Qe.r,xt=Qe.g,ut=Qe.b;Xe?(g[0]=Tt,g[1]=xt,g[2]=ut,g[3]=tt,w.clearBufferuiv(w.COLOR,0,g)):(y[0]=Tt,y[1]=xt,y[2]=ut,y[3]=tt,w.clearBufferiv(w.COLOR,0,y))}else we|=w.COLOR_BUFFER_BIT}xe&&(we|=w.DEPTH_BUFFER_BIT),Se&&(we|=w.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),w.clear(we)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Ce,!1),t.removeEventListener("webglcontextrestored",Be,!1),t.removeEventListener("webglcontextcreationerror",Oe,!1),Re.dispose(),he.dispose(),ge.dispose(),ve.dispose(),L.dispose(),O.dispose(),Q.dispose(),Ke.dispose(),fe.dispose(),ne.dispose(),be.dispose(),be.removeEventListener("sessionstart",st),be.removeEventListener("sessionend",ct),Ft.stop()};function Ce(K){K.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),S=!0}function Be(){console.log("THREE.WebGLRenderer: Context Restored."),S=!1;let K=$.autoReset,xe=Ee.enabled,Se=Ee.autoUpdate,we=Ee.needsUpdate,Me=Ee.type;Le(),$.autoReset=K,Ee.enabled=xe,Ee.autoUpdate=Se,Ee.needsUpdate=we,Ee.type=Me}function Oe(K){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",K.statusMessage)}function rt(K){let xe=K.target;xe.removeEventListener("dispose",rt),Et(xe)}function Et(K){ft(K),ve.remove(K)}function ft(K){let xe=ve.get(K).programs;xe!==void 0&&(xe.forEach(function(Se){ne.releaseProgram(Se)}),K.isShaderMaterial&&ne.releaseShaderCache(K))}this.renderBufferDirect=function(K,xe,Se,we,Me,Ge){xe===null&&(xe=re);let Xe=Me.isMesh&&Me.matrixWorld.determinant()<0,Qe=ad(K,xe,Se,we,Me);ee.setMaterial(we,Xe);let tt=Se.index,Tt=1;if(we.wireframe===!0){if(tt=z.getWireframeAttribute(Se),tt===void 0)return;Tt=2}let xt=Se.drawRange,ut=Se.attributes.position,At=xt.start*Tt,kt=(xt.start+xt.count)*Tt;Ge!==null&&(At=Math.max(At,Ge.start*Tt),kt=Math.min(kt,(Ge.start+Ge.count)*Tt)),tt!==null?(At=Math.max(At,0),kt=Math.min(kt,tt.count)):ut!=null&&(At=Math.max(At,0),kt=Math.min(kt,ut.count));let hn=kt-At;if(hn<0||hn===1/0)return;Ke.setup(Me,we,Qe,Se,tt);let ln,Ot=ke;if(tt!==null&&(ln=D.get(tt),Ot=at,Ot.setIndex(ln)),Me.isMesh)we.wireframe===!0?(ee.setLineWidth(we.wireframeLinewidth*me()),Ot.setMode(w.LINES)):Ot.setMode(w.TRIANGLES);else if(Me.isLine){let dt=we.linewidth;dt===void 0&&(dt=1),ee.setLineWidth(dt*me()),Me.isLineSegments?Ot.setMode(w.LINES):Me.isLineLoop?Ot.setMode(w.LINE_LOOP):Ot.setMode(w.LINE_STRIP)}else Me.isPoints?Ot.setMode(w.POINTS):Me.isSprite&&Ot.setMode(w.TRIANGLES);if(Me.isBatchedMesh)if(Me._multiDrawInstances!==null)Oc("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Ot.renderMultiDrawInstances(Me._multiDrawStarts,Me._multiDrawCounts,Me._multiDrawCount,Me._multiDrawInstances);else if(pe.get("WEBGL_multi_draw"))Ot.renderMultiDraw(Me._multiDrawStarts,Me._multiDrawCounts,Me._multiDrawCount);else{let dt=Me._multiDrawStarts,wn=Me._multiDrawCounts,Bt=Me._multiDrawCount,ui=tt?D.get(tt).bytesPerElement:1,en=ve.get(we).currentProgram.getUniforms();for(let Hn=0;Hn{function Ge(){if(we.forEach(function(Xe){ve.get(Xe).currentProgram.isReady()&&we.delete(Xe)}),we.size===0){Me(K);return}setTimeout(Ge,10)}pe.get("KHR_parallel_shader_compile")!==null?Ge():setTimeout(Ge,10)})};let $e=null;function ze(K){$e&&$e(K)}function st(){Ft.stop()}function ct(){Ft.start()}let Ft=new Ly;Ft.setAnimationLoop(ze),typeof self<"u"&&Ft.setContext(self),this.setAnimationLoop=function(K){$e=K,be.setAnimationLoop(K),K===null?Ft.stop():Ft.start()},be.addEventListener("sessionstart",st),be.addEventListener("sessionend",ct),this.render=function(K,xe){if(xe!==void 0&&xe.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(S===!0)return;if(K.matrixWorldAutoUpdate===!0&&K.updateMatrixWorld(),xe.parent===null&&xe.matrixWorldAutoUpdate===!0&&xe.updateMatrixWorld(),be.enabled===!0&&be.isPresenting===!0&&(be.cameraAutoUpdate===!0&&be.updateCamera(xe),xe=be.getCamera()),K.isScene===!0&&K.onBeforeRender(x,K,xe,C),m=ge.get(K,v.length),m.init(xe),v.push(m),k.multiplyMatrices(xe.projectionMatrix,xe.matrixWorldInverse),G.setFromProjectionMatrix(k),M=this.localClippingEnabled,P=de.init(this.clippingPlanes,M),d=he.get(K,_.length),d.init(),_.push(d),be.enabled===!0&&be.isPresenting===!0){let Ge=x.xr.getDepthSensingMesh();Ge!==null&&ci(Ge,xe,-1/0,x.sortObjects)}ci(K,xe,0,x.sortObjects),d.finish(),x.sortObjects===!0&&d.sort(le,ye),ce=be.enabled===!1||be.isPresenting===!1||be.hasDepthSensing()===!1,ce&&Re.addToRenderList(d,K),this.info.render.frame++,P===!0&&de.beginShadows();let Se=m.state.shadowsArray;Ee.render(Se,K,xe),P===!0&&de.endShadows(),this.info.autoReset===!0&&this.info.reset();let we=d.opaque,Me=d.transmissive;if(m.setupLights(),xe.isArrayCamera){let Ge=xe.cameras;if(Me.length>0)for(let Xe=0,Qe=Ge.length;Xe0&&Dr(we,Me,K,xe),ce&&Re.render(K),Mi(d,K,xe);C!==null&&A===0&&(H.updateMultisampleRenderTarget(C),H.updateRenderTargetMipmap(C)),K.isScene===!0&&K.onAfterRender(x,K,xe),Ke.resetDefaultState(),E=-1,b=null,v.pop(),v.length>0?(m=v[v.length-1],P===!0&&de.setGlobalState(x.clippingPlanes,m.state.camera)):m=null,_.pop(),_.length>0?d=_[_.length-1]:d=null};function ci(K,xe,Se,we){if(K.visible===!1)return;if(K.layers.test(xe.layers)){if(K.isGroup)Se=K.renderOrder;else if(K.isLOD)K.autoUpdate===!0&&K.update(xe);else if(K.isLight)m.pushLight(K),K.castShadow&&m.pushShadow(K);else if(K.isSprite){if(!K.frustumCulled||G.intersectsSprite(K)){we&&W.setFromMatrixPosition(K.matrixWorld).applyMatrix4(k);let Xe=Q.update(K),Qe=K.material;Qe.visible&&d.push(K,Xe,Qe,Se,W.z,null)}}else if((K.isMesh||K.isLine||K.isPoints)&&(!K.frustumCulled||G.intersectsObject(K))){let Xe=Q.update(K),Qe=K.material;if(we&&(K.boundingSphere!==void 0?(K.boundingSphere===null&&K.computeBoundingSphere(),W.copy(K.boundingSphere.center)):(Xe.boundingSphere===null&&Xe.computeBoundingSphere(),W.copy(Xe.boundingSphere.center)),W.applyMatrix4(K.matrixWorld).applyMatrix4(k)),Array.isArray(Qe)){let tt=Xe.groups;for(let Tt=0,xt=tt.length;Tt0&&Po(Me,xe,Se),Ge.length>0&&Po(Ge,xe,Se),Xe.length>0&&Po(Xe,xe,Se),ee.buffers.depth.setTest(!0),ee.buffers.depth.setMask(!0),ee.buffers.color.setMask(!0),ee.setPolygonOffset(!1)}function Dr(K,xe,Se,we){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;m.state.transmissionRenderTarget[we.id]===void 0&&(m.state.transmissionRenderTarget[we.id]=new wr(1,1,{generateMipmaps:!0,type:pe.has("EXT_color_buffer_half_float")||pe.has("EXT_color_buffer_float")?Ba:lr,minFilter:xi,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:mt.workingColorSpace}));let Ge=m.state.transmissionRenderTarget[we.id],Xe=we.viewport||R;Ge.setSize(Xe.z*x.transmissionResolutionScale,Xe.w*x.transmissionResolutionScale);let Qe=x.getRenderTarget();x.setRenderTarget(Ge),x.getClearColor(V),ie=x.getClearAlpha(),ie<1&&x.setClearColor(16777215,.5),x.clear(),ce&&Re.render(Se);let tt=x.toneMapping;x.toneMapping=ls;let Tt=we.viewport;if(we.viewport!==void 0&&(we.viewport=void 0),m.setupLightsView(we),P===!0&&de.setGlobalState(x.clippingPlanes,we),Po(K,Se,we),H.updateMultisampleRenderTarget(Ge),H.updateRenderTargetMipmap(Ge),pe.has("WEBGL_multisampled_render_to_texture")===!1){let xt=!1;for(let ut=0,At=xe.length;ut0),ut=!!Se.morphAttributes.position,At=!!Se.morphAttributes.normal,kt=!!Se.morphAttributes.color,hn=ls;we.toneMapped&&(C===null||C.isXRRenderTarget===!0)&&(hn=x.toneMapping);let ln=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,Ot=ln!==void 0?ln.length:0,dt=ve.get(we),wn=m.state.lights;if(P===!0&&(M===!0||K!==b)){let Mn=K===b&&we.id===E;de.setState(we,K,Mn)}let Bt=!1;we.version===dt.__version?(dt.needsLights&&dt.lightsStateVersion!==wn.state.version||dt.outputColorSpace!==Qe||Me.isBatchedMesh&&dt.batching===!1||!Me.isBatchedMesh&&dt.batching===!0||Me.isBatchedMesh&&dt.batchingColor===!0&&Me.colorTexture===null||Me.isBatchedMesh&&dt.batchingColor===!1&&Me.colorTexture!==null||Me.isInstancedMesh&&dt.instancing===!1||!Me.isInstancedMesh&&dt.instancing===!0||Me.isSkinnedMesh&&dt.skinning===!1||!Me.isSkinnedMesh&&dt.skinning===!0||Me.isInstancedMesh&&dt.instancingColor===!0&&Me.instanceColor===null||Me.isInstancedMesh&&dt.instancingColor===!1&&Me.instanceColor!==null||Me.isInstancedMesh&&dt.instancingMorph===!0&&Me.morphTexture===null||Me.isInstancedMesh&&dt.instancingMorph===!1&&Me.morphTexture!==null||dt.envMap!==tt||we.fog===!0&&dt.fog!==Ge||dt.numClippingPlanes!==void 0&&(dt.numClippingPlanes!==de.numPlanes||dt.numIntersection!==de.numIntersection)||dt.vertexAlphas!==Tt||dt.vertexTangents!==xt||dt.morphTargets!==ut||dt.morphNormals!==At||dt.morphColors!==kt||dt.toneMapping!==hn||dt.morphTargetsCount!==Ot)&&(Bt=!0):(Bt=!0,dt.__version=we.version);let ui=dt.currentProgram;Bt===!0&&(ui=No(we,xe,Me));let en=!1,Hn=!1,zs=!1,$t=ui.getUniforms(),ti=dt.uniforms;if(ee.useProgram(ui.program)&&(en=!0,Hn=!0,zs=!0),we.id!==E&&(E=we.id,Hn=!0),en||b!==K){ee.buffers.depth.getReversed()?(T.copy(K.projectionMatrix),ey(T),ty(T),$t.setValue(w,"projectionMatrix",T)):$t.setValue(w,"projectionMatrix",K.projectionMatrix),$t.setValue(w,"viewMatrix",K.matrixWorldInverse);let Cn=$t.map.cameraPosition;Cn!==void 0&&Cn.setValue(w,j.setFromMatrixPosition(K.matrixWorld)),ue.logarithmicDepthBuffer&&$t.setValue(w,"logDepthBufFC",2/(Math.log(K.far+1)/Math.LN2)),(we.isMeshPhongMaterial||we.isMeshToonMaterial||we.isMeshLambertMaterial||we.isMeshBasicMaterial||we.isMeshStandardMaterial||we.isShaderMaterial)&&$t.setValue(w,"isOrthographic",K.isOrthographicCamera===!0),b!==K&&(b=K,Hn=!0,zs=!0)}if(Me.isSkinnedMesh){$t.setOptional(w,Me,"bindMatrix"),$t.setOptional(w,Me,"bindMatrixInverse");let Mn=Me.skeleton;Mn&&(Mn.boneTexture===null&&Mn.computeBoneTexture(),$t.setValue(w,"boneTexture",Mn.boneTexture,H))}Me.isBatchedMesh&&($t.setOptional(w,Me,"batchingTexture"),$t.setValue(w,"batchingTexture",Me._matricesTexture,H),$t.setOptional(w,Me,"batchingIdTexture"),$t.setValue(w,"batchingIdTexture",Me._indirectTexture,H),$t.setOptional(w,Me,"batchingColorTexture"),Me._colorsTexture!==null&&$t.setValue(w,"batchingColorTexture",Me._colorsTexture,H));let Yn=Se.morphAttributes;if((Yn.position!==void 0||Yn.normal!==void 0||Yn.color!==void 0)&&De.update(Me,Se,ui),(Hn||dt.receiveShadow!==Me.receiveShadow)&&(dt.receiveShadow=Me.receiveShadow,$t.setValue(w,"receiveShadow",Me.receiveShadow)),we.isMeshGouraudMaterial&&we.envMap!==null&&(ti.envMap.value=tt,ti.flipEnvMap.value=tt.isCubeTexture&&tt.isRenderTargetTexture===!1?-1:1),we.isMeshStandardMaterial&&we.envMap===null&&xe.environment!==null&&(ti.envMapIntensity.value=xe.environmentIntensity),Hn&&($t.setValue(w,"toneMappingExposure",x.toneMappingExposure),dt.needsLights&&ld(ti,zs),Ge&&we.fog===!0&&oe.refreshFogUniforms(ti,Ge),oe.refreshMaterialUniforms(ti,we,q,te,m.state.transmissionRenderTarget[K.id]),Wa.upload(w,ou(dt),ti,H)),we.isShaderMaterial&&we.uniformsNeedUpdate===!0&&(Wa.upload(w,ou(dt),ti,H),we.uniformsNeedUpdate=!1),we.isSpriteMaterial&&$t.setValue(w,"center",Me.center),$t.setValue(w,"modelViewMatrix",Me.modelViewMatrix),$t.setValue(w,"normalMatrix",Me.normalMatrix),$t.setValue(w,"modelMatrix",Me.matrixWorld),we.isShaderMaterial||we.isRawShaderMaterial){let Mn=we.uniformsGroups;for(let Cn=0,Lo=Mn.length;Cn0&&H.useMultisampledRTT(K)===!1?Me=ve.get(K).__webglMultisampledFramebuffer:Array.isArray(xt)?Me=xt[Se]:Me=xt,R.copy(K.viewport),N.copy(K.scissor),B=K.scissorTest}else R.copy(Te).multiplyScalar(q).floor(),N.copy(Ae).multiplyScalar(q).floor(),B=_e;if(Se!==0&&(Me=ud),ee.bindFramebuffer(w.FRAMEBUFFER,Me)&&we&&ee.drawBuffers(K,Me),ee.viewport(R),ee.scissor(N),ee.setScissorTest(B),Ge){let tt=ve.get(K.texture);w.framebufferTexture2D(w.FRAMEBUFFER,w.COLOR_ATTACHMENT0,w.TEXTURE_CUBE_MAP_POSITIVE_X+xe,tt.__webglTexture,Se)}else if(Xe){let tt=ve.get(K.texture),Tt=xe;w.framebufferTextureLayer(w.FRAMEBUFFER,w.COLOR_ATTACHMENT0,tt.__webglTexture,Se,Tt)}else if(K!==null&&Se!==0){let tt=ve.get(K.texture);w.framebufferTexture2D(w.FRAMEBUFFER,w.COLOR_ATTACHMENT0,w.TEXTURE_2D,tt.__webglTexture,Se)}E=-1},this.readRenderTargetPixels=function(K,xe,Se,we,Me,Ge,Xe){if(!(K&&K.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Qe=ve.get(K).__webglFramebuffer;if(K.isWebGLCubeRenderTarget&&Xe!==void 0&&(Qe=Qe[Xe]),Qe){ee.bindFramebuffer(w.FRAMEBUFFER,Qe);try{let tt=K.texture,Tt=tt.format,xt=tt.type;if(!ue.textureFormatReadable(Tt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!ue.textureTypeReadable(xt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}xe>=0&&xe<=K.width-we&&Se>=0&&Se<=K.height-Me&&w.readPixels(xe,Se,we,Me,je.convert(Tt),je.convert(xt),Ge)}finally{let tt=C!==null?ve.get(C).__webglFramebuffer:null;ee.bindFramebuffer(w.FRAMEBUFFER,tt)}}},this.readRenderTargetPixelsAsync=async function(K,xe,Se,we,Me,Ge,Xe){if(!(K&&K.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Qe=ve.get(K).__webglFramebuffer;if(K.isWebGLCubeRenderTarget&&Xe!==void 0&&(Qe=Qe[Xe]),Qe)if(xe>=0&&xe<=K.width-we&&Se>=0&&Se<=K.height-Me){ee.bindFramebuffer(w.FRAMEBUFFER,Qe);let tt=K.texture,Tt=tt.format,xt=tt.type;if(!ue.textureFormatReadable(Tt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!ue.textureTypeReadable(xt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let ut=w.createBuffer();w.bindBuffer(w.PIXEL_PACK_BUFFER,ut),w.bufferData(w.PIXEL_PACK_BUFFER,Ge.byteLength,w.STREAM_READ),w.readPixels(xe,Se,we,Me,je.convert(Tt),je.convert(xt),0);let At=C!==null?ve.get(C).__webglFramebuffer:null;ee.bindFramebuffer(w.FRAMEBUFFER,At);let kt=w.fenceSync(w.SYNC_GPU_COMMANDS_COMPLETE,0);return w.flush(),await Q0(w,kt,4),w.bindBuffer(w.PIXEL_PACK_BUFFER,ut),w.getBufferSubData(w.PIXEL_PACK_BUFFER,0,Ge),w.deleteBuffer(ut),w.deleteSync(kt),Ge}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(K,xe=null,Se=0){let we=Math.pow(2,-Se),Me=Math.floor(K.image.width*we),Ge=Math.floor(K.image.height*we),Xe=xe!==null?xe.x:0,Qe=xe!==null?xe.y:0;H.setTexture2D(K,0),w.copyTexSubImage2D(w.TEXTURE_2D,Se,0,0,Xe,Qe,Me,Ge),ee.unbindTexture()};let hd=w.createFramebuffer(),fd=w.createFramebuffer();this.copyTextureToTexture=function(K,xe,Se=null,we=null,Me=0,Ge=null){Ge===null&&(Me!==0?(Oc("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Ge=Me,Me=0):Ge=0);let Xe,Qe,tt,Tt,xt,ut,At,kt,hn,ln=K.isCompressedTexture?K.mipmaps[Ge]:K.image;if(Se!==null)Xe=Se.max.x-Se.min.x,Qe=Se.max.y-Se.min.y,tt=Se.isBox3?Se.max.z-Se.min.z:1,Tt=Se.min.x,xt=Se.min.y,ut=Se.isBox3?Se.min.z:0;else{let Yn=Math.pow(2,-Me);Xe=Math.floor(ln.width*Yn),Qe=Math.floor(ln.height*Yn),K.isDataArrayTexture?tt=ln.depth:K.isData3DTexture?tt=Math.floor(ln.depth*Yn):tt=1,Tt=0,xt=0,ut=0}we!==null?(At=we.x,kt=we.y,hn=we.z):(At=0,kt=0,hn=0);let Ot=je.convert(xe.format),dt=je.convert(xe.type),wn;xe.isData3DTexture?(H.setTexture3D(xe,0),wn=w.TEXTURE_3D):xe.isDataArrayTexture||xe.isCompressedArrayTexture?(H.setTexture2DArray(xe,0),wn=w.TEXTURE_2D_ARRAY):(H.setTexture2D(xe,0),wn=w.TEXTURE_2D),w.pixelStorei(w.UNPACK_FLIP_Y_WEBGL,xe.flipY),w.pixelStorei(w.UNPACK_PREMULTIPLY_ALPHA_WEBGL,xe.premultiplyAlpha),w.pixelStorei(w.UNPACK_ALIGNMENT,xe.unpackAlignment);let Bt=w.getParameter(w.UNPACK_ROW_LENGTH),ui=w.getParameter(w.UNPACK_IMAGE_HEIGHT),en=w.getParameter(w.UNPACK_SKIP_PIXELS),Hn=w.getParameter(w.UNPACK_SKIP_ROWS),zs=w.getParameter(w.UNPACK_SKIP_IMAGES);w.pixelStorei(w.UNPACK_ROW_LENGTH,ln.width),w.pixelStorei(w.UNPACK_IMAGE_HEIGHT,ln.height),w.pixelStorei(w.UNPACK_SKIP_PIXELS,Tt),w.pixelStorei(w.UNPACK_SKIP_ROWS,xt),w.pixelStorei(w.UNPACK_SKIP_IMAGES,ut);let $t=K.isDataArrayTexture||K.isData3DTexture,ti=xe.isDataArrayTexture||xe.isData3DTexture;if(K.isDepthTexture){let Yn=ve.get(K),Mn=ve.get(xe),Cn=ve.get(Yn.__renderTarget),Lo=ve.get(Mn.__renderTarget);ee.bindFramebuffer(w.READ_FRAMEBUFFER,Cn.__webglFramebuffer),ee.bindFramebuffer(w.DRAW_FRAMEBUFFER,Lo.__webglFramebuffer);for(let Fr=0;Fr=t?vi.Phong:vi.Physical}var ja=class{Convert(e){return null}},Cf=class extends ja{Convert(e){return new He().copyLinearToSRGB(e)}},Ya=class extends ja{Convert(e){return new He().copySRGBToLinear(e)}};function Fc(r){return Ei(r.r,r.g,r.b)}function Dn(r){return new He(r.r/255,r.g/255,r.b/255)}function ur(r,e,t){let n=new tn,i=r.attributes.position.array,s=r.attributes.position.itemSize||3;for(let u=0;u{if(e.isMesh||e.isLineSegments){if(Array.isArray(e.material))for(let t of e.material)t.dispose();else e.material.dispose();e.userData=null,e.geometry.dispose()}})}function Lf(r,e,t,n,i){function s(c,u,h,f,p,g){let y=new se(p[3*g],p[3*g+1],p[3*g+2]);y.applyMatrix4(f.matrixWorld);let d=y.project(c);return new Nt((d.x+1)*u/2,-(d.y-1)*h/2)}let o=n.geometry.attributes.position.array,a=o.length/6,l=1/0;for(let c=0;c{i.IsEmpty()&&n.push(i)});for(let i=0;i=o)}function i(s,o){function a(l,c,u){return!(!n(u.v0,c.VertexCount())||!n(u.v1,c.VertexCount())||!n(u.v2,c.VertexCount())||u.HasVertexColors()&&(!n(u.c0,c.VertexColorCount())||!n(u.c1,c.VertexColorCount())||!n(u.c2,c.VertexColorCount()))||!n(u.n0,c.NormalCount())||!n(u.n1,c.NormalCount())||!n(u.n2,c.NormalCount())||u.HasTextureUVs()&&(!n(u.u0,c.TextureUVCount())||!n(u.u1,c.TextureUVCount())||!n(u.u2,c.TextureUVCount()))||!n(u.mat,l.MaterialCount())||!t(u.curve))}for(let l=0;l{this.CreateResult(i)})}Clear(){this.name=null,this.extension=null,this.callbacks=null,this.model=null,this.error=null,this.message=null,this.ClearContent()}CreateResult(e){if(this.error){e.onError(),e.onComplete();return}if(ca(this.model)){this.SetError(nt("The model doesn't contain any meshes.")),e.onError(),e.onComplete();return}Of(this.model,{defaultLineMaterialColor:this.callbacks.getDefaultLineMaterialColor(),defaultMaterialColor:this.callbacks.getDefaultMaterialColor()}),e.onSuccess(),e.onComplete()}CanImportExtension(e){return!1}GetUpDirection(){return _t.Z}ClearContent(){}ResetContent(){}ImportContent(e,t){}GetModel(){return this.model}SetError(e){this.error=!0,e!=null&&(this.message=e)}WasError(){return this.error}GetErrorMessage(){return this.message}};var hs=class r{constructor(e){this.vertices=e,this.mat=null}HasVertices(){return this.vertices!==null&&this.vertices.length>=2}GetVertices(){return this.vertices}SetMaterial(e){return this.mat=e,this}SegmentCount(){return this.vertices===null?0:this.vertices.length-1}Clone(){let e=new r([...this.vertices]);return e.SetMaterial(this.mat),e}};var Ka=class extends Jt{constructor(){super(),this.rhino=null}CanImportExtension(e){return e==="3dm"}GetUpDirection(){return _t.Z}ClearContent(){this.instanceIdToObject=null,this.instanceIdToDefinition=null}ResetContent(){this.instanceIdToObject=new Map,this.instanceIdToDefinition=new Map}ImportContent(e,t){this.rhino===null?_r("rhino3dm").then(()=>{rhino3dm().then(n=>{this.rhino=n,this.ImportRhinoContent(e),t()})}).catch(()=>{this.SetError(nt("Failed to load rhino3dm.")),t()}):(this.ImportRhinoContent(e),t())}ImportRhinoContent(e){let t=this.rhino.File3dm.fromByteArray(e);if(t===null){this.SetError(nt("Failed to read Rhino file."));return}this.ImportRhinoDocument(t),ca(this.model)&&this.SetError(nt("The model doesn't contain any 3D meshes. Try to save the model while you are in shaded view in Rhino."))}ImportRhinoDocument(e){this.InitRhinoInstances(e),this.ImportRhinoUserStrings(e),this.ImportRhinoGeometry(e)}InitRhinoInstances(e){let t=e.objects();for(let i=0;i0){let n=new Kn(nt("Document user texts"));for(let i=0;i0){let u=new Kn(nt("User texts"));for(let h=0;h=0;f--){let y=i[f].geometry().xform.toFloatArray(!1),d=new xn(y);u=u.MultiplyMatrix(d)}let h=new pn(u);Mr(a,h)}this.model.AddMeshToRootNode(a)}GetMaterialIndex(e,t,n){function i(l,c,u){let h=c.attributes();if(h.materialSource===l.ObjectMaterialSource.MaterialFromObject){let f=h.materialIndex;if(f>-1)return e.materials().get(f)}else if(h.materialSource===l.ObjectMaterialSource.MaterialFromLayer){let f=h.layerIndex;if(f>-1){let p=e.layers().get(f),g=p.renderMaterialIndex;if(g>-1)return e.materials().get(g);if(c.geometry().objectType===l.ObjectType.Curve){let d=new l.Material;return d.name=p.name,d.diffuseColor=p.color,d}}}else if(h.materialSource===l.ObjectMaterialSource.MaterialFromParent&&u.length!==0)return i(l,u[0],[]);return null}function s(l,c){function u(d,m){d.Set(m.r,m.g,m.b)}function h(d){return d.r===0&&d.g===0&&d.b===0}function f(d){return d.r===255&&d.g===255&&d.b===255}let p=null,g=l.physicallyBased();g.supported?(p=new ys,p.metalness=g.metallic?1:0,p.roughness=g.roughness):(p=new En,u(p.ambient,l.ambientColor),u(p.specular,l.specularColor)),p.name=l.name,u(p.color,l.diffuseColor),p.opacity=1-l.transparency,pi(p),h(p.color)&&!f(l.reflectionColor)&&u(p.color,l.reflectionColor),h(p.color)&&!f(l.transparentColor)&&u(p.color,l.transparentColor);let y=l.getBitmapTexture();if(y){let d=new fi,m=Rn(y.fileName),_=c.getFileBuffer(m);d.name=m,d.buffer=_,p.diffuseMap=d}return p}function o(l,c,u){let h=s(c,u);for(let f=0;f=this.arrayBuffer.byteLength}ReadArrayBuffer(e){let t=new Uint8Array(this.arrayBuffer),n=new ArrayBuffer(e),i=new Uint8Array(n),s=t.subarray(this.position,this.position+e);return i.set(s,0),this.position+=e,n}ReadBoolean8(){let e=this.dataView.getInt8(this.position);return this.position=this.position+1,!!e}ReadCharacter8(){let e=this.dataView.getInt8(this.position);return this.position=this.position+1,e}ReadUnsignedCharacter8(){let e=this.dataView.getUint8(this.position);return this.position=this.position+1,e}ReadInteger16(){let e=this.dataView.getInt16(this.position,this.isLittleEndian);return this.position=this.position+2,e}ReadUnsignedInteger16(){let e=this.dataView.getUint16(this.position,this.isLittleEndian);return this.position=this.position+2,e}ReadInteger32(){let e=this.dataView.getInt32(this.position,this.isLittleEndian);return this.position=this.position+4,e}ReadUnsignedInteger32(){let e=this.dataView.getUint32(this.position,this.isLittleEndian);return this.position=this.position+4,e}ReadFloat32(){let e=this.dataView.getFloat32(this.position,this.isLittleEndian);return this.position=this.position+4,e}ReadDouble64(){let e=this.dataView.getFloat64(this.position,this.isLittleEndian);return this.position=this.position+8,e}};var Mt={MAIN3DS:19789,EDIT3DS:15677,EDIT_MATERIAL:45055,MAT_NAME:40960,MAT_AMBIENT:40976,MAT_DIFFUSE:40992,MAT_SPECULAR:41008,MAT_SHININESS:41024,MAT_SHININESS_STRENGTH:41025,MAT_TRANSPARENCY:41040,MAT_COLOR_F:16,MAT_COLOR:17,MAT_LIN_COLOR:18,MAT_LIN_COLOR_F:19,MAT_TEXMAP:41472,MAT_TEXMAP_NAME:41728,MAT_TEXMAP_UOFFSET:41816,MAT_TEXMAP_VOFFSET:41818,MAT_TEXMAP_USCALE:41812,MAT_TEXMAP_VSCALE:41814,MAT_TEXMAP_ROTATION:41820,PERCENTAGE:48,PERCENTAGE_F:49,EDIT_OBJECT:16384,OBJ_TRIMESH:16640,OBJ_LIGHT:17920,OBJ_CAMERA:18176,TRI_VERTEX:16656,TRI_TEXVERTEX:16704,TRI_FACE:16672,TRI_TRANSFORMATION:16736,TRI_MATERIAL:16688,TRI_SMOOTH:16720,KF3DS:45056,OBJECT_NODE:45058,OBJECT_HIERARCHY:45072,OBJECT_INSTANCE_NAME:45073,OBJECT_PIVOT:45075,OBJECT_POSITION:45088,OBJECT_ROTATION:45089,OBJECT_SCALE:45090,OBJECT_ID:45104},$p=class{constructor(){this.id=-1,this.name="",this.flags=-1,this.parentId=-1,this.instanceName="",this.pivot=[0,0,0],this.positions=[],this.rotations=[],this.scales=[]}},Qp=class{constructor(){this.nodes=[],this.nodeIdToNode=new Map}IsEmpty(){return this.nodes.length===0}AddNode(e){this.nodes.push(e),this.nodeIdToNode.set(e.nodeId,e)}GetNodes(){return this.nodes}},Za=class extends Jt{constructor(){super()}CanImportExtension(e){return e==="3ds"}GetUpDirection(){return _t.Z}ClearContent(){this.materialNameToIndex=null,this.meshNameToIndex=null,this.nodeList=null}ResetContent(){this.materialNameToIndex=new Map,this.meshNameToIndex=new Map,this.nodeList=new Qp}ImportContent(e,t){this.ProcessBinary(e),t()}ProcessBinary(e){let t=new oi(e,!0),n=t.GetByteLength();this.ReadChunks(t,n,(i,s)=>{i===Mt.MAIN3DS?this.ReadMainChunk(t,s):this.SkipChunk(t,s)})}ReadMainChunk(e,t){let n=this.GetChunkEnd(e,t);this.ReadChunks(e,n,(i,s)=>{i===Mt.EDIT3DS?this.ReadEditorChunk(e,s):i===Mt.KF3DS?this.ReadKeyFrameChunk(e,s):this.SkipChunk(e,s)}),this.BuildNodeHierarchy()}ReadEditorChunk(e,t){let n=this.GetChunkEnd(e,t);this.ReadChunks(e,n,(i,s)=>{i===Mt.EDIT_MATERIAL?this.ReadMaterialChunk(e,s):i===Mt.EDIT_OBJECT?this.ReadObjectChunk(e,s):this.SkipChunk(e,s)})}ReadMaterialChunk(e,t){let n=new En,i=this.GetChunkEnd(e,t),s=null,o=null;this.ReadChunks(e,i,(l,c)=>{l===Mt.MAT_NAME?n.name=this.ReadName(e):l===Mt.MAT_AMBIENT?n.ambient=this.ReadColorChunk(e,c):l===Mt.MAT_DIFFUSE?n.color=this.ReadColorChunk(e,c):l===Mt.MAT_SPECULAR?n.specular=this.ReadColorChunk(e,c):l===Mt.MAT_SHININESS?s=this.ReadPercentageChunk(e,c):l===Mt.MAT_SHININESS_STRENGTH?o=this.ReadPercentageChunk(e,c):l===Mt.MAT_TRANSPARENCY?(n.opacity=1-this.ReadPercentageChunk(e,c),pi(n)):l===Mt.MAT_TEXMAP?(n.diffuseMap=this.ReadTextureMapChunk(e,c),pi(n)):this.SkipChunk(e,c)}),s!==null&&o!==null&&(n.shininess=s*o/10);let a=this.model.AddMaterial(n);this.materialNameToIndex.set(n.name,a)}ReadTextureMapChunk(e,t){let n=new fi,i=this.GetChunkEnd(e,t);return this.ReadChunks(e,i,(s,o)=>{if(s===Mt.MAT_TEXMAP_NAME){let a=this.ReadName(e),l=this.callbacks.getFileBuffer(a);n.name=a,n.buffer=l}else s===Mt.MAT_TEXMAP_UOFFSET?n.offset.x=e.ReadFloat32():s===Mt.MAT_TEXMAP_VOFFSET?n.offset.y=e.ReadFloat32():s===Mt.MAT_TEXMAP_USCALE?n.scale.x=e.ReadFloat32():s===Mt.MAT_TEXMAP_VSCALE?n.scale.y=e.ReadFloat32():s===Mt.MAT_TEXMAP_ROTATION?n.rotation=e.ReadFloat32()*xr:this.SkipChunk(e,o)}),n}ReadColorChunk(e,t){let n=new St(0,0,0),i=this.GetChunkEnd(e,t),s=!1;return this.ReadChunks(e,i,(o,a)=>{o===Mt.MAT_COLOR?s||(n.r=e.ReadUnsignedCharacter8(),n.g=e.ReadUnsignedCharacter8(),n.b=e.ReadUnsignedCharacter8()):o===Mt.MAT_LIN_COLOR?(n.r=e.ReadUnsignedCharacter8(),n.g=e.ReadUnsignedCharacter8(),n.b=e.ReadUnsignedCharacter8(),s=!0):o===Mt.MAT_COLOR_F?s||(n.r=Fn(e.ReadFloat32()),n.g=Fn(e.ReadFloat32()),n.b=Fn(e.ReadFloat32())):o===Mt.MAT_LIN_COLOR_F?(n.r=Fn(e.ReadFloat32()),n.g=Fn(e.ReadFloat32()),n.b=Fn(e.ReadFloat32()),s=!0):this.SkipChunk(e,a)}),n}ReadPercentageChunk(e,t){let n=0,i=this.GetChunkEnd(e,t);return this.ReadChunks(e,i,(s,o)=>{s===Mt.PERCENTAGE?n=e.ReadUnsignedInteger16()/100:s===Mt.PERCENTAGE_F?n=e.ReadFloat32():this.SkipChunk(e,o)}),n}ReadObjectChunk(e,t){let n=this.GetChunkEnd(e,t),i=this.ReadName(e);this.ReadChunks(e,n,(s,o)=>{s===Mt.OBJ_TRIMESH?this.ReadMeshChunk(e,o,i):this.SkipChunk(e,o)})}ReadMeshChunk(e,t,n){function i(u,h){if(!h.IsValid())return;let f=h.Determinant(),p=Br(f);p&&(h=new xn().CreateScale(-1,1,1).MultiplyMatrix(h));let g=h.Invert();if(g===null)return;let y=new pn(g);Mr(u,y),p&&Ru(u)}let s=new tn;s.SetName(n);let o=this.GetChunkEnd(e,t),a=null;if(this.ReadChunks(e,o,(u,h)=>{u===Mt.TRI_VERTEX?this.ReadVerticesChunk(s,e):u===Mt.TRI_TEXVERTEX?this.ReadTextureVerticesChunk(s,e):u===Mt.TRI_FACE?this.ReadFacesChunk(s,e,h):u===Mt.TRI_TRANSFORMATION?a=this.ReadTransformationChunk(e):this.SkipChunk(e,h)}),s.VertexCount()===s.TextureUVCount())for(let u=0;u{o===Mt.TRI_MATERIAL?this.ReadFaceMaterialsChunk(e,t):o===Mt.TRI_SMOOTH?this.ReadFaceSmoothingGroupsChunk(e,s,t):this.SkipChunk(t,a)})}ReadFaceMaterialsChunk(e,t){let n=this.ReadName(t),i=this.materialNameToIndex.get(n),s=t.ReadUnsignedInteger16();for(let o=0;o{i===Mt.OBJECT_NODE?this.ReadObjectNodeChunk(e,s):this.SkipChunk(e,s)})}BuildNodeHierarchy(){function e(n,i){function s(c){return c.positions.length===0?[0,0,0]:c.positions[0]}function o(c){function u(f){let p=[0,0,0,1],g=Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2]);if(g>0){let y=f[3]*-.5,d=Math.sin(y)/g;p=[d*f[0],d*f[1],d*f[2],Math.cos(y)]}return p}if(c.rotations.length===0)return[0,0,0,1];let h=c.rotations[0];return u(h)}function a(c){return c.scales.length===0?[1,1,1]:c.scales[0]}let l=new xn;if(l.ComposeTRS(Ui(s(n)),Zo(o(n)),Ui(a(n))),i){let c=n.pivot;l=new xn().CreateTranslation(-c[0],-c[1],-c[2]).MultiplyMatrix(l)}return new pn(l)}let t=this.model.GetRootNode();if(this.nodeList.IsEmpty())for(let n=0;n0&&i.name!=="$$$DUMMY"&&(s.SetName(i.name),i.instanceName.length>0&&s.SetName(s.GetName()+" "+i.instanceName)),i.parentId===65535||!n.has(i.parentId)?t.AddChildNode(s):n.get(i.parentId).AddChildNode(s),n.set(i.id,s);let o=this.meshNameToIndex.has(i.name);s.SetTransformation(e(i,o)),o&&s.AddMeshIndex(this.meshNameToIndex.get(i.name))}}}ReadObjectNodeChunk(e,t){function n(o,a,l){let c=[];a.Skip(10);let u=a.ReadInteger32();for(let h=0;h{o===Mt.OBJECT_HIERARCHY?(i.name=this.ReadName(e),i.flags=e.ReadUnsignedInteger32(),i.parentId=e.ReadUnsignedInteger16()):o===Mt.OBJECT_INSTANCE_NAME?i.instanceName=this.ReadName(e):o===Mt.OBJECT_PIVOT?i.pivot=this.ReadVector(e):o===Mt.OBJECT_POSITION?i.positions=n(this,e,Mt.OBJECT_POSITION):o===Mt.OBJECT_ROTATION?i.rotations=n(this,e,Mt.OBJECT_ROTATION):o===Mt.OBJECT_SCALE?i.scales=n(this,e,Mt.OBJECT_SCALE):o===Mt.OBJECT_ID?i.id=e.ReadUnsignedInteger16():this.SkipChunk(e,a)}),this.nodeList.AddNode(i)}ReadName(e){let t="",n=0,i=0;for(;i<64&&(n=e.ReadCharacter8(),n!==0);)t=t+String.fromCharCode(n),i=i+1;return t}ReadVector(e){return[e.ReadFloat32(),e.ReadFloat32(),e.ReadFloat32()]}ReadChunks(e,t,n){for(;e.GetPosition()<=t-6;){let i=e.ReadUnsignedInteger16(),s=e.ReadUnsignedInteger32();n(i,s)}}GetChunkEnd(e,t){return e.GetPosition()+t-6}SkipChunk(e,t){e.Skip(t-6)}};var _i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},hr={SCALAR:0,VEC2:1,VEC3:2,VEC4:3,MAT2:4,MAT3:5,MAT4:6},wo={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},em={GLTF_STRING:1179937895,JSON_CHUNK_TYPE:1313821514,BINARY_CHUNK_TYPE:5130562};function Uc(r){return Ei(Xs(r[0]),Xs(r[1]),Xs(r[2]))}function zb(r,e){function t(n,i){let s=n;return i===_i.UNSIGNED_BYTE?s/=255:i===_i.UNSIGNED_SHORT&&(s/=65535),Fn(Xs(s))}return new St(t(r[0],e),t(r[1],e),t(r[2],e))}var tm=class{constructor(e){this.reader=new oi(e,!0),this.componentType=null,this.dataType=null,this.byteStride=null,this.dataCount=null,this.sparseReader=null}SetComponentType(e){this.componentType=e}SetDataType(e){e==="SCALAR"?this.dataType=hr.SCALAR:e==="VEC2"?this.dataType=hr.VEC2:e==="VEC3"?this.dataType=hr.VEC3:e==="VEC4"?this.dataType=hr.VEC4:e==="MAT2"?this.dataType=hr.MAT2:e==="MAT3"?this.dataType=hr.MAT3:e==="MAT4"&&(this.dataType=hr.MAT4)}SetByteStride(e){this.byteStride=e}SetDataCount(e){this.dataCount=e}SetSparseReader(e,t){this.sparseReader={indexReader:e,valueReader:t}}ReadArrayBuffer(e){return this.reader.ReadArrayBuffer(e)}GetDataCount(){return this.dataCount}ReadData(){if(this.dataType===null)return null;if(this.dataType===hr.SCALAR){let e=this.ReadComponent();return this.SkipBytesByStride(1),e}else if(this.dataType===hr.VEC2){let e=this.ReadComponent(),t=this.ReadComponent();return this.SkipBytesByStride(2),new Nt(e,t)}else if(this.dataType===hr.VEC3){let e=this.ReadComponent(),t=this.ReadComponent(),n=this.ReadComponent();return this.SkipBytesByStride(3),new Ye(e,t,n)}else if(this.dataType===hr.VEC4){let e=this.ReadComponent(),t=this.ReadComponent(),n=this.ReadComponent(),i=this.ReadComponent();return this.SkipBytesByStride(4),new $i(e,t,n,i)}return null}EnumerateData(e){if(this.sparseReader===null)for(let t=0;t{DracoDecoderModule().then(n=>{this.draco=n,t.onSuccess()})}).catch(()=>{t.onError(nt("Failed to load draco decoder."))}):t.onSuccess()}GetUnsupportedExtensions(e){let t=[];if(e===void 0)return t;for(let n=0;n{i.AddVertex(N)}),m&&s(this.draco,o,p,l.attributes.NORMAL,N=>{i.AddNormal(N)}),_&&s(this.draco,o,p,l.attributes.TEXCOORD_0,N=>{N.y=-N.y,i.AddTextureUV(N)});let C=p.num_faces()*3,E=C*4,b=this.draco._malloc(E);o.GetTrianglesUInt32Array(p,E,b);let R=new Uint32Array(this.draco.HEAPU32.buffer,b,C).slice();for(let N=0;N0){this.SetError(Uo("Unsupported extension: {0}.",n.join(", "))),t();return}this.gltfExtensions.LoadLibraries(e.extensionsRequired,{onSuccess:()=>{this.ImportModel(e),t()},onError:i=>{this.SetError(i),t()}})}ImportModel(e){let t=e.materials;if(t!==void 0)for(let i of t)this.ImportMaterial(e,i);let n=e.meshes;if(n!==void 0)for(let i of n)this.ImportMesh(e,i);this.ImportProperties(this.model,e.asset,nt("Asset properties")),this.ImportScene(e)}ImportProperties(e,t,n){if(t==null)return;let i=new Kn(n);for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s)){let o=null,a=t[s];typeof a=="string"?o=new cn(Yt.Text,s,a):typeof a=="number"&&(Number.isInteger(a)?o=new cn(Yt.Integer,s,a):o=new cn(Yt.Number,s,a)),o!==null&&i.AddProperty(o)}i.PropertyCount()!==0&&e.AddPropertyGroup(i)}GetDefaultScene(e){let t=e.scene||0;return t>=e.scenes.length?null:e.scenes[t]}ImportMaterial(e,t){let n=new ys;if(t.name!==void 0&&(n.name=t.name),n.color=Uc([1,1,1]),t.pbrMetallicRoughness!==void 0){let s=t.pbrMetallicRoughness.baseColorFactor;s!==void 0&&(n.color=Uc(s),n.opacity=s[3]);let o=t.pbrMetallicRoughness.metallicFactor;o!==void 0&&(n.metalness=o);let a=t.pbrMetallicRoughness.roughnessFactor;a!==void 0&&(n.roughness=a);let l=t.emissiveFactor;l!==void 0&&(n.emissive=Uc(l)),n.diffuseMap=this.ImportTexture(e,t.pbrMetallicRoughness.baseColorTexture),n.metalnessMap=this.ImportTexture(e,t.pbrMetallicRoughness.metallicRoughnessTexture),n.normalMap=this.ImportTexture(e,t.normalTexture),n.emissiveMap=this.ImportTexture(e,t.emissiveTexture),n.diffuseMap!==null&&(n.multiplyDiffuseMap=!0);let c=t.alphaMode;c!==void 0&&(c==="BLEND"?n.transparent=!0:c==="MASK"&&(n.transparent=!0,n.alphaTest=t.alphaCutoff||.5))}let i=this.gltfExtensions.ProcessMaterial(t,n,s=>this.ImportTexture(e,s));i!==null&&(n=i),this.model.AddMaterial(n)}ImportTexture(e,t){if(t==null)return null;let n=new fi,s=e.textures[t.index].source,o=e.images[s],a=null;if(this.imageIndexToTextureParams.has(s))a=this.imageIndexToTextureParams.get(s);else{a={name:null,mimeType:null,buffer:null};let l=s.toString();if(o.uri!==void 0){let c=qs(o.uri);if(c!==null)a.name="Embedded_"+l+"."+xs(c.mimeType),a.mimeType=c.mimeType,a.buffer=c.buffer;else{let u=this.callbacks.getFileBuffer(o.uri);a.name=o.uri,a.buffer=u}}else if(o.bufferView!==void 0){let c=e.bufferViews[o.bufferView],u=this.GetReaderFromBufferView(c);if(u!==null){let h=u.ReadArrayBuffer(c.byteLength);a.name="Binary_"+l+"."+xs(o.mimeType),a.mimeType=o.mimeType,a.buffer=h}}this.imageIndexToTextureParams.set(s,a)}return n.name=a.name,n.mimeType=a.mimeType,n.buffer=a.buffer,this.gltfExtensions.ProcessTexture(t,n),n}ImportMesh(e,t){let n=new tn;this.model.AddMesh(n),t.name!==void 0&&n.SetName(t.name);for(let i=0;i{n.AddVertex(v)})}else return;let y=n.VertexCount()-h;if(o){let m=e.accessors[t.attributes.COLOR_0],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(v=>{let x=zb([v.x,v.y,v.z],_.componentType);n.AddVertexColor(x)}),n.VertexColorCount()-f!==y&&(o=!1)}if(a){let m=e.accessors[t.attributes.NORMAL],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(v=>{n.AddNormal(v)}),n.NormalCount()-p!==y&&(a=!1)}if(l){let m=e.accessors[t.attributes.TEXCOORD_0],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(v=>{v.y=-v.y,n.AddTextureUV(v)}),n.TextureUVCount()-g!==y&&(l=!1)}let d=[];if(c){let m=e.accessors[t.indices],_=this.GetReaderFromAccessor(e,m);if(_===null)return;_.EnumerateData(v=>{d.push(v)})}else{let m=n.VertexCount()-h;for(let _=0;_{this.ifc=new WebIFC.IfcAPI,this.ifc.Init().then(()=>{this.ImportIfcContent(e),t()})}).catch(()=>{this.SetError(nt("Failed to load web-ifc.")),t()}):(this.ImportIfcContent(e),t())}ImportIfcContent(e){let t=new Uint8Array(e),n=this.ifc.OpenModel(t,{COORDINATE_TO_ORIGIN:!0}),i=this.ifc.LoadAllGeometry(n);for(let s=0;s0&&this.ImportIfcMesh(n,o)}this.ImportProperties(n),this.ifc.CloseModel(n)}ImportIfcMesh(e,t){let n=new tn;n.SetName(Uo("Mesh {0}",t.expressID.toString()));let i=0,s=t.geometries;for(let o=0;o{let a=null;if(this.expressIDToMesh.has(o.value)?a=this.expressIDToMesh.get(o.value):this.ifc.GetLine(e,o.value,!0).type===WebIFC.IFCBUILDING&&(a=this.model),a===null)return;let l=s.RelatingPropertyDefinition,c=this.ifc.GetLine(e,l.value,!0);if(!c||!c.HasProperties)return;let u=new Kn(c.Name.value);c.HasProperties.forEach(h=>{if(!h||!h.Name||!h.NominalValue||!h.NominalValue.constructor||h.type!==WebIFC.IFCPROPERTYSINGLEVALUE)return;let f=this.GetIFCString(h.Name.value),p=null,g=null;switch(h.NominalValue.constructor.name){case"IfcText":case"IfcLabel":case"IfcIdentifier":case WebIFC.IFCLABEL:p=new cn(Yt.Text,f,this.GetIFCString(h.NominalValue.value));break;case"IfcBoolean":case"IfcLogical":g=nt("Unknown"),h.NominalValue.value==="T"?g=nt("True"):h.NominalValue.value==="F"&&(g=nt("False")),p=new cn(Yt.Text,f,g);break;case"IfcInteger":case"IfcCountMeasure":p=new cn(Yt.Integer,f,h.NominalValue.value);break;case"IfcReal":case"IfcLengthMeasure":case"IfcPositiveLengthMeasure":case"IfcAreaMeasure":case"IfcVolumeMeasure":case"IfcRatioMeasure":case"IfcPositiveRatioMeasure":case"IfcMassMeasure":case"IfcMassPerLengthMeasure":case"IfcPlaneAngleMeasure":case"IfcThermalTransmittanceMeasure":p=new cn(Yt.Number,f,h.NominalValue.value);break;default:console.log(h);break}p!==null&&u.AddProperty(p)}),u.PropertyCount()>0&&a.AddPropertyGroup(u)})}}GetMaterialIndexByColor(e){let t=Ei(e.x,e.y,e.z),n=parseInt(e.w*255,10);return this.colorToMaterial.GetMaterialIndex(t.r,t.g,t.b,n)}GetIFCString(e){let t=this.DecodeIFCString(e);return t.length===0&&(t="-"),t}DecodeIFCString(e){let t=/\\X2\\(.*?)\\X0\\/uig,n=e,i=t.exec(e);for(;i;){let s=String.fromCharCode(parseInt(i[1],16));n=n.replace(i[0],s),i=t.exec(e)}return n}};var im=class{constructor(e){this.mesh=e,this.globalToMeshVertices=new Map,this.globalToMeshVertexColors=new Map,this.globalToMeshNormals=new Map,this.globalToMeshUvs=new Map}AddVertex(e,t){return this.GetMeshIndex(e,t,this.globalToMeshVertices,n=>this.mesh.AddVertex(new Ye(n.x,n.y,n.z)))}AddVertexColor(e,t){return this.GetMeshIndex(e,t,this.globalToMeshVertexColors,n=>this.mesh.AddVertexColor(new St(n.r,n.g,n.b)))}AddNormal(e,t){return this.GetMeshIndex(e,t,this.globalToMeshNormals,n=>this.mesh.AddNormal(new Ye(n.x,n.y,n.z)))}AddUV(e,t){return this.GetMeshIndex(e,t,this.globalToMeshUvs,n=>this.mesh.AddTextureUV(new Nt(n.x,n.y)))}AddLine(e){this.mesh.AddLine(e)}AddTriangle(e){this.mesh.AddTriangle(e)}GetMeshIndex(e,t,n,i){if(isNaN(e)||e<0||e>=t.length)return null;if(n.has(e))return n.get(e);{let s=t[e],o=i(s);return n.set(e,o),o}}};function Df(r,e,t){return Ei(parseFloat(r),parseFloat(e),parseFloat(t))}var Qa=class extends Jt{constructor(){super()}CanImportExtension(e){return e==="obj"}GetUpDirection(){return _t.Y}ClearContent(){this.globalVertices=null,this.globalVertexColors=null,this.globalNormals=null,this.globalUvs=null,this.currentMeshConverter=null,this.currentMaterial=null,this.currentMaterialIndex=null,this.meshNameToConverter=null,this.materialNameToIndex=null}ResetContent(){this.globalVertices=[],this.globalVertexColors=[],this.globalNormals=[],this.globalUvs=[],this.currentMeshConverter=null,this.currentMaterial=null,this.currentMaterialIndex=null,this.meshNameToConverter=new Map,this.materialNameToIndex=new Map}ImportContent(e,t){let n=Sn(e);Fi(n,i=>{this.WasError()||this.ProcessLine(i)}),t()}ProcessLine(e){if(e[0]==="#")return;let t=Yi(e,"#");if(t.length===0)return;let n=t[0].toLowerCase();t.shift(),!this.ProcessMeshParameter(n,t,e)&&this.ProcessMaterialParameter(n,t,e)}AddNewMesh(e){if(this.meshNameToConverter.has(e))this.currentMeshConverter=this.meshNameToConverter.get(e);else{let t=new tn;t.SetName(e),this.model.AddMeshToRootNode(t),this.currentMeshConverter=new im(t),this.meshNameToConverter.set(e,this.currentMeshConverter)}}ProcessMeshParameter(e,t,n){if(e==="g"||e==="o"){if(t.length===0)return!0;let i=zr(n,e.length,"#");return this.AddNewMesh(i),!0}else{if(e==="v")return t.length<3||(this.globalVertices.push(new Ye(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]))),t.length>=6&&this.globalVertexColors.push(Df(t[3],t[4],t[5]))),!0;if(e==="vn")return t.length<3||this.globalNormals.push(new Ye(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]))),!0;if(e==="vt")return t.length<2||this.globalUvs.push(new Nt(parseFloat(t[0]),parseFloat(t[1]))),!0;if(e==="l"){if(t.length<2)return!0;this.ProcessLineCommand(t)}else if(e==="f")return t.length<3||this.ProcessFaceCommand(t),!0}return!1}ProcessMaterialParameter(e,t,n){function i(o){let a=new Map,l=null;for(let c=0;c0&&(l.offset.x=parseFloat(f[0])),f.length>1&&(l.offset.y=parseFloat(f[1]))}if(h.has("-s")){let f=h.get("-s");f.length>0&&(l.scale.x=parseFloat(f[0])),f.length>1&&(l.scale.y=parseFloat(f[1]))}return l}if(e==="newmtl"){if(t.length===0)return!0;let o=new En,a=zr(n,e.length,"#"),l=this.model.AddMaterial(o);return o.name=a,this.currentMaterial=o,this.materialNameToIndex.set(a,l),!0}else if(e==="usemtl"){if(t.length===0)return!0;let o=zr(n,e.length,"#");return this.materialNameToIndex.has(o)&&(this.currentMaterialIndex=this.materialNameToIndex.get(o)),!0}else if(e==="mtllib"){if(t.length===0)return!0;let o=zr(n,e.length,"#"),a=this.callbacks.getFileBuffer(o);if(a!==null){let l=Sn(a);Fi(l,c=>{this.WasError()||this.ProcessLine(c)})}return!0}else{if(e==="map_kd")return this.currentMaterial===null||t.length===0||(this.currentMaterial.diffuseMap=s(t,this.callbacks),pi(this.currentMaterial)),!0;if(e==="map_ks")return this.currentMaterial===null||t.length===0||(this.currentMaterial.specularMap=s(t,this.callbacks)),!0;if(e==="map_bump"||e==="bump")return this.currentMaterial===null||t.length===0||(this.currentMaterial.bumpMap=s(t,this.callbacks)),!0;if(e==="ka")return this.currentMaterial===null||t.length<3||(this.currentMaterial.ambient=Df(t[0],t[1],t[2])),!0;if(e==="kd")return this.currentMaterial===null||t.length<3||(this.currentMaterial.color=Df(t[0],t[1],t[2])),!0;if(e==="ks")return this.currentMaterial===null||t.length<3||(this.currentMaterial.specular=Df(t[0],t[1],t[2])),!0;if(e==="ns")return this.currentMaterial===null||t.length<1||(this.currentMaterial.shininess=parseFloat(t[0])/1e3),!0;if(e==="tr")return this.currentMaterial===null||t.length<1||(this.currentMaterial.opacity=1-parseFloat(t[0]),pi(this.currentMaterial)),!0;if(e==="d")return this.currentMaterial===null||t.length<1||(this.currentMaterial.opacity=parseFloat(t[0]),pi(this.currentMaterial)),!0}return!1}ProcessLineCommand(e){this.currentMeshConverter===null&&this.AddNewMesh("");let t=[];for(let i=0;i1&&a[1].length>0&&s.push(this.GetRelativeIndex(parseInt(a[1],10),this.globalUvs.length)),a.length>2&&a[2].length>0&&i.push(this.GetRelativeIndex(parseInt(a[2],10),this.globalNormals.length))}for(let o=0;o0?e-1:t+e}};var el=class extends Jt{constructor(){super()}CanImportExtension(e){return e==="off"}GetUpDirection(){return _t.Y}ClearContent(){this.mesh=null,this.status=null,this.colorToMaterial=null}ResetContent(){this.mesh=new tn,this.model.AddMeshToRootNode(this.mesh),this.status={vertexCount:0,faceCount:0,foundVertex:0,foundFace:0},this.colorToMaterial=new di(this.model)}ImportContent(e,t){let n=Sn(e);Fi(n,i=>{this.WasError()||this.ProcessLine(i)}),t()}ProcessLine(e){function t(s){return s.indexOf(".")!==-1?Fn(parseFloat(s)):parseInt(s,10)}if(e[0]==="#")return;let n=Yi(e,"#");if(n.length===0||n[0]==="OFF")return;if(this.status.vertexCount===0&&this.status.faceCount===0){n.length>1&&(this.status.vertexCount=parseInt(n[0],10),this.status.faceCount=parseInt(n[1],10));return}if(this.status.foundVertex=3&&(this.mesh.AddVertex(new Ye(parseFloat(n[0]),parseFloat(n[1]),parseFloat(n[2]))),this.status.foundVertex+=1),n.length>=6&&this.mesh.AddVertexColor(new St(t(n[3]),t(n[4]),t(n[5])));return}let i=this.mesh.VertexCount()===this.mesh.VertexColorCount();if(this.status.foundFace=4){let s=parseInt(n[0],10);if(n.length=s+4){let a=new St(t(n[s+1]),t(n[s+2]),t(n[s+3]));o=this.colorToMaterial.GetMaterialIndex(a.r,a.g,a.b)}for(let a=0;a0&&t.format.length>0,s=n!==null&&n.count>0&&n.format.length>0;if(!i&&!s)return Ds.NoFaces}else return Ds.UnknownError;return Ds.Ok}},sm=class{constructor(e){this.model=e,this.colorToMaterial=new Map}GetMaterialIndexByColor(e){let t="Color "+In(e[0])+In(e[1])+In(e[2])+In(e[3]);if(this.colorToMaterial.has(t))return this.colorToMaterial.get(t);{let n=new En;n.name=t,n.color=new St(e[0],e[1],e[2]),n.opacity=e[3]/255,pi(n);let i=this.model.AddMaterial(n);return this.colorToMaterial.set(t,i),i}}},tl=class extends Jt{constructor(){super()}CanImportExtension(e){return e==="ply"}GetUpDirection(){return _t.Y}ClearContent(){this.mesh=null}ResetContent(){this.mesh=new tn,this.model.AddMeshToRootNode(this.mesh)}ImportContent(e,t){let n=this.GetHeaderContent(e),i=this.ReadHeader(n),s=i.Check();if(s===Ds.Ok)if(i.format==="ascii"){let o=Sn(e);o=o.substring(n.length),this.ReadAsciiContent(i,o)}else(i.format==="binary_little_endian"||i.format==="binary_big_endian")&&this.ReadBinaryContent(i,e,n.length);else s===Ds.NoVertices?this.SetError(nt("The model contains no vertices.")):s===Ds.NoFaces?this.SetError(nt("The model contains no faces.")):this.SetError(nt("Invalid header information."));t()}GetHeaderContent(e){let t="",n=new Uint8Array(e),i=0;for(i=0;i{let i=Yi(n,null);i.length===0||i[0]==="comment"||i[0]!=="ply"&&(i[0]==="format"&&i.length>=2?t.SetFormat(i[1]):i[0]==="element"&&i.length>=3?t.AddElement(i[1],parseInt(i[2],10)):i[0]==="property"&&i.length>=3&&(i[1]==="list"&&i.length>=5?t.AddListFormat(i[2],i[3],i[4]):t.AddSingleFormat(i[1],i[2])))}),t}ReadAsciiContent(e,t){let n=e.GetElement("vertex"),i=e.GetElement("face"),s=0,o=0;Fi(t,a=>{if(this.WasError())return;let l=Yi(a,null);if(!(l.length===0||l[0]==="comment")){if(s=3&&(this.mesh.AddVertex(new Ye(parseFloat(l[0]),parseFloat(l[1]),parseFloat(l[2]))),s+=1);return}if(i!==null&&o=4){let c=parseInt(l[0],10);if(l.length0&&v.SetVertexColors(d,m,_),this.mesh.AddTriangle(v)}}else if(h.name==="tristrips")for(let f=0;f{this.worker=n,this.worker.addEventListener("message",a=>{this.ImportResultJson(a.data,t)}),this.worker.addEventListener("error",a=>{this.SetError(nt("Failed to load occt-import-js.")),t()});let i=null;if(this.extension==="stp"||this.extension==="step")i="step";else if(this.extension==="igs"||this.extension==="iges")i="iges";else if(this.extension==="brp"||this.extension==="brep")i="brep";else{t();return}(i==="step"||i==="iges")&&this.model.SetUnit(_s.Millimeter);let s={linearUnit:"millimeter",linearDeflectionType:"bounding_box_ratio",linearDeflection:.001,angularDeflection:.5},o=new Uint8Array(e);this.worker.postMessage({format:i,buffer:o,params:s})}).catch(()=>{this.SetError(nt("Failed to load occt-import-js.")),t()})}ImportResultJson(e,t){if(!e.success){t();return}let n=new di(this.model),i=this.model.GetRootNode();this.ImportNode(e,e.root,i,n),t()}ImportNode(e,t,n,i){for(let s of t.meshes){let o=e.meshes[s],a=this.ImportMesh(o,i),l=this.model.AddMesh(a);n.AddMeshIndex(l)}for(let s of t.children){let o=new Bn;o.SetName(s.name),n.AddChildNode(o),this.ImportNode(e,s,o,i)}}ImportMesh(e,t){let n=null;if(e.color){let s=Ei(e.color[0],e.color[1],e.color[2]);n=t.GetMaterialIndex(s.r,s.g,s.b,null)}let i=ur(e,n,null);e.name&&i.SetName(e.name);for(let s of e.brep_faces){if(s.color===null)continue;let o=Ei(s.color[0],s.color[1],s.color[2]),a=t.GetMaterialIndex(o.r,o.g,o.b,null);for(let l=s.first;l<=s.last;l++)i.GetTriangle(l).SetMaterial(a)}return i}};var il=class extends Jt{constructor(){super()}CanImportExtension(e){return e==="stl"}GetUpDirection(){return _t.Z}ClearContent(){this.mesh=null,this.triangle=null}ResetContent(){this.mesh=new tn,this.model.AddMeshToRootNode(this.mesh),this.triangle=null}ImportContent(e,t){if(this.IsBinaryStlFile(e))this.ProcessBinary(e);else{let n=Sn(e);Fi(n,i=>{this.WasError()||this.ProcessLine(i)})}t()}IsBinaryStlFile(e){let t=e.byteLength;if(t<84)return!1;let n=new oi(e,!0);n.Skip(80);let i=n.ReadUnsignedInteger32();return t===i*50+84}ProcessLine(e){if(e[0]==="#")return;let t=Yi(e,"#");if(t.length===0)return;let n=t[0];if(n==="solid"){if(t.length>1){let i=zr(e,n.length,"#");this.mesh.SetName(i)}return}if(n==="facet"){if(this.triangle=new Qt(-1,-1,-1),t.length>=5&&t[1]==="normal"){let i=new Ye(parseFloat(t[2]),parseFloat(t[3]),parseFloat(t[4]));if(Di(i.Length())){let s=this.mesh.AddNormal(i);this.triangle.SetNormals(s,s,s)}}return}if(n==="vertex"&&this.triangle!==null){if(t.length>=4){let i=this.mesh.AddVertex(new Ye(parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])));this.triangle.v0===-1?this.triangle.v0=i:this.triangle.v1===-1?this.triangle.v1=i:this.triangle.v2===-1&&(this.triangle.v2=i)}return}if(n==="endfacet"&&this.triangle!==null){this.triangle.v0!==-1&&this.triangle.v1!==-1&&this.triangle.v2!==null&&this.mesh.AddTriangle(this.triangle),this.triangle=null;return}}ProcessBinary(e){function t(o){let a=new Ye;return a.x=o.ReadFloat32(),a.y=o.ReadFloat32(),a.z=o.ReadFloat32(),a}function n(o,a){let l=t(a);return o.AddVertex(l)}let i=new oi(e,!0);i.Skip(80);let s=i.ReadUnsignedInteger32();for(let o=0;oe.face_colors?this.colorToMaterial.GetMaterialIndex(e.face_colors[f*4+0],e.face_colors[f*4+1],e.face_colors[f*4+2],e.face_colors[f*4+3]):t),o=this.model.AddMesh(s),a=new Bn;a.AddMeshIndex(o);let l=new Ye(0,0,0);e.vector&&(l=new Ye(e.vector.x,e.vector.y,e.vector.z));let c=new ii(0,0,0,1);e.rotation&&(c=new ii(e.rotation.qx,e.rotation.qy,e.rotation.qz,e.rotation.qw));let u=new Ye(1,1,1),h=new xn().ComposeTRS(l,c,u);return a.SetTransformation(new pn(h)),n.AddChildNode(a),s}ImportMesh(e,t){let n=new tn;for(let i=0;i256||Y.colormap_size!==24||Y.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case p:case g:case d:case m:if(Y.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case h:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+Y.image_type)}if(Y.width<=0||Y.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if(Y.pixel_size!==8&&Y.pixel_size!==16&&Y.pixel_size!==24&&Y.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+Y.pixel_size)}function n(Y,te,q,le,ye){let Te,Ae,_e=q.pixel_size>>3,G=q.width*q.height*_e;if(te&&(Ae=ye.subarray(le,le+=q.colormap_length*(q.colormap_size>>3))),Y){Te=new Uint8Array(G);let P,M,T,k=0,j=new Uint8Array(_e);for(;k>7,Y[(M+k*T)*4+1]=(G&992)>>2,Y[(M+k*T)*4+2]=(G&31)<<3,Y[(M+k*T)*4+3]=G&32768?0:255;return Y}function o(Y,te,q,le,ye,Te,Ae,_e){let G=0,P,M,T=b.width;for(M=te;M!==le;M+=q)for(P=ye;P!==Ae;P+=Te,G+=3)Y[(P+T*M)*4+3]=255,Y[(P+T*M)*4+2]=_e[G+0],Y[(P+T*M)*4+1]=_e[G+1],Y[(P+T*M)*4+0]=_e[G+2];return Y}function a(Y,te,q,le,ye,Te,Ae,_e){let G=0,P,M,T=b.width;for(M=te;M!==le;M+=q)for(P=ye;P!==Ae;P+=Te,G+=4)Y[(P+T*M)*4+2]=_e[G+0],Y[(P+T*M)*4+1]=_e[G+1],Y[(P+T*M)*4+0]=_e[G+2],Y[(P+T*M)*4+3]=_e[G+3];return Y}function l(Y,te,q,le,ye,Te,Ae,_e){let G,P=0,M,T,k=b.width;for(T=te;T!==le;T+=q)for(M=ye;M!==Ae;M+=Te,P++)G=_e[P],Y[(M+k*T)*4+0]=G,Y[(M+k*T)*4+1]=G,Y[(M+k*T)*4+2]=G,Y[(M+k*T)*4+3]=255;return Y}function c(Y,te,q,le,ye,Te,Ae,_e){let G=0,P,M,T=b.width;for(M=te;M!==le;M+=q)for(P=ye;P!==Ae;P+=Te,G+=2)Y[(P+T*M)*4+0]=_e[G+0],Y[(P+T*M)*4+1]=_e[G+0],Y[(P+T*M)*4+2]=_e[G+0],Y[(P+T*M)*4+3]=_e[G+1];return Y}function u(Y,te,q,le,ye){let Te,Ae,_e,G,P,M;switch((b.flags&_)>>v){default:case I:Te=0,_e=1,P=te,Ae=0,G=1,M=q;break;case x:Te=0,_e=1,P=te,Ae=q-1,G=-1,M=-1;break;case A:Te=te-1,_e=-1,P=-1,Ae=0,G=1,M=q;break;case S:Te=te-1,_e=-1,P=-1,Ae=q-1,G=-1,M=-1;break}if(B)switch(b.pixel_size){case 8:l(Y,Ae,G,M,Te,_e,P,le);break;case 16:c(Y,Ae,G,M,Te,_e,P,le);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(b.pixel_size){case 8:i(Y,Ae,G,M,Te,_e,P,le,ye);break;case 16:s(Y,Ae,G,M,Te,_e,P,le);break;case 24:o(Y,Ae,G,M,Te,_e,P,le);break;case 32:a(Y,Ae,G,M,Te,_e,P,le);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return Y}let h=0,f=1,p=2,g=3,y=9,d=10,m=11,_=48,v=4,x=0,S=1,I=2,A=3;if(e.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let C=0,E=new Uint8Array(e),b={id_length:E[C++],colormap_type:E[C++],image_type:E[C++],colormap_index:E[C++]|E[C++]<<8,colormap_length:E[C++]|E[C++]<<8,colormap_size:E[C++],origin:[E[C++]|E[C++]<<8,E[C++]|E[C++]<<8],width:E[C++]|E[C++]<<8,height:E[C++]|E[C++]<<8,pixel_size:E[C++],flags:E[C++]};if(t(b),b.id_length+C>e.length)throw new Error("THREE.TGALoader: No data.");C+=b.id_length;let R=!1,N=!1,B=!1;switch(b.image_type){case y:R=!0,N=!0;break;case f:N=!0;break;case d:R=!0;break;case p:break;case m:R=!0,B=!0;break;case g:B=!0;break}let V=new Uint8Array(b.width*b.height*4),ie=n(R,N,b,C,E);return u(V,b.width,b.height,ie.pixel_data,ie.palettes),{data:V,width:b.width,height:b.height,flipY:!0,generateMipmaps:!0,minFilter:xi}}};var Ni=Uint8Array,sl=Uint16Array,Hb=Int32Array,By=new Ni([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Gy=new Ni([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Wb=new Ni([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Vy=function(r,e){for(var t=new sl(31),n=0;n<31;++n)t[n]=e+=1<>1|(Ht&21845)<<1,fs=(fs&52428)>>2|(fs&13107)<<2,fs=(fs&61680)>>4|(fs&3855)<<4,cm[Ht]=((fs&65280)>>8|(fs&255)<<8)>>1;var fs,Ht,kc=function(r,e,t){for(var n=r.length,i=0,s=new sl(e);i>l]=c}else for(a=new sl(n),i=0;i>15-r[i]);return a},Bc=new Ni(288);for(Ht=0;Ht<144;++Ht)Bc[Ht]=8;var Ht;for(Ht=144;Ht<256;++Ht)Bc[Ht]=9;var Ht;for(Ht=256;Ht<280;++Ht)Bc[Ht]=7;var Ht;for(Ht=280;Ht<288;++Ht)Bc[Ht]=8;var Ht,Xy=new Ni(32);for(Ht=0;Ht<32;++Ht)Xy[Ht]=5;var Ht;var jb=kc(Bc,9,1);var Yb=kc(Xy,5,1),om=function(r){for(var e=r[0],t=1;te&&(e=r[t]);return e},fr=function(r,e,t){var n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},am=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},Kb=function(r){return(r+7)/8|0},hm=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new Ni(r.subarray(e,t))};var Zb=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Ti=function(r,e,t){var n=new Error(e||Zb[r]);if(n.code=r,Error.captureStackTrace&&Error.captureStackTrace(n,Ti),!t)throw n;return n},qy=function(r,e,t,n){var i=r.length,s=n?n.length:0;if(!i||e.f&&!e.l)return t||new Ni(0);var o=!t,a=o||e.i!=2,l=e.i;o&&(t=new Ni(i*3));var c=function(re){var ce=t.length;if(re>ce){var me=new Ni(Math.max(ce*2,re));me.set(t),t=me}},u=e.f||0,h=e.p||0,f=e.b||0,p=e.l,g=e.d,y=e.m,d=e.n,m=i*8;do{if(!p){u=fr(r,h,1);var _=fr(r,h+1,3);if(h+=3,_)if(_==1)p=jb,g=Yb,y=9,d=5;else if(_==2){var I=fr(r,h,31)+257,A=fr(r,h+10,15)+4,C=I+fr(r,h+5,31)+1;h+=14;for(var E=new Ni(C),b=new Ni(19),R=0;R>4;if(v<16)E[R++]=v;else{var Y=0,te=0;for(v==16?(te=3+fr(r,h,3),h+=2,Y=E[R-1]):v==17?(te=3+fr(r,h,7),h+=3):v==18&&(te=11+fr(r,h,127),h+=7);te--;)E[R++]=Y}}var q=E.subarray(0,I),le=E.subarray(I);y=om(q),d=om(le),p=kc(q,y,1),g=kc(le,d,1)}else Ti(1);else{var v=Kb(h)+4,x=r[v-4]|r[v-3]<<8,S=v+x;if(S>i){l&&Ti(0);break}a&&c(f+x),t.set(r.subarray(v,S),f),e.b=f+=x,e.p=h=S*8,e.f=u;continue}if(h>m){l&&Ti(0);break}}a&&c(f+131072);for(var ye=(1<>4;if(h+=Y&15,h>m){l&&Ti(0);break}if(Y||Ti(2),_e<256)t[f++]=_e;else if(_e==256){Ae=h,p=null;break}else{var G=_e-254;if(_e>264){var R=_e-257,P=By[R];G=fr(r,h,(1<>4;M||Ti(3),h+=M&15;var le=qb[T];if(T>3){var P=Gy[T];le+=am(r,h)&(1<m){l&&Ti(0);break}a&&c(f+131072);var k=f+G;if(f>>0},lm=function(r,e){return dr(r,e)+dr(r,e+4)*4294967296};var $b=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&Ti(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&Ti(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function Qb(r,e){return qy(r,{i:2},e&&e.out,e&&e.dictionary)}function jy(r,e){return qy(r.subarray($b(r,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}var um=typeof TextDecoder<"u"&&new TextDecoder,eS=0;try{um.decode(Jb,{stream:!0}),eS=1}catch{}var tS=function(r){for(var e="",t=0;;){var n=r[t++],i=(n>127)+(n>223)+(n>239);if(t+i>r.length)return{s:e,r:hm(r,t-1)};i?i==3?(n=((n&15)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023)):i&1?e+=String.fromCharCode((n&31)<<6|r[t++]&63):e+=String.fromCharCode((n&15)<<12|(r[t++]&63)<<6|r[t++]&63):e+=String.fromCharCode(n)}};function nS(r,e){if(e){for(var t="",n=0;n65558)&&Ti(13);var i=Pr(r,n+8);if(!i)return{};var s=dr(r,n+16),o=s==4294967295||i==65535;if(o){var a=dr(r,n-12);o=dr(r,a)==101075792,o&&(i=dr(r,a+32),s=dr(r,a+48))}for(var l=e&&e.filter,c=0;c=t[n])return n-1;if(e<=t[r])return r;let i=r,s=n,o=Math.floor((i+s)/2);for(;e=t[o+1];)e=y&&(g[p][0]=g[f][0]/a[_+1][m],d=g[p][0]*a[m][_]);let v=m>=-1?1:-m,x=h-1<=_?y-1:t-h;for(let I=v;I<=x;++I)g[p][I]=(g[f][I]-g[f][I-1])/a[_+1][m+I],d+=g[p][I]*a[m+I][_];h<=_&&(g[p][y]=-g[f][y-1]/a[_+1][h],d+=g[p][y]*a[h][_]),o[y][h]=d;let S=f;f=p,p=S}}let u=t;for(let h=1;h<=n;++h){for(let f=0;f<=t;++f)o[h][f]*=u;u*=t-h}return o}function lS(r,e,t,n,i){let s=it.toArray()),e.startKnot=this.startKnot,e.endKnot=this.endKnot,e}fromJSON(e){return super.fromJSON(e),this.degree=e.degree,this.knots=[...e.knots],this.controlPoints=e.controlPoints.map(t=>new wt(t[0],t[1],t[2],t[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}};var Rt,Tn,ai,Bf=class extends zt{constructor(e){super(e)}load(e,t,n,i){let s=this,o=s.path===""?os.extractUrlBase(e):s.path,a=new $n(this.manager);a.setPath(s.path),a.setResponseType("arraybuffer"),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(e,function(l){try{t(s.parse(l,o))}catch(c){i?i(c):console.error(c),s.manager.itemError(e)}},n,i)}parse(e,t){if(fS(e))Rt=new vm().parse(e);else{let i=Qy(e);if(!dS(i))throw new Error("THREE.FBXLoader: Unknown format.");if(Jy(i)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Jy(i));Rt=new xm().parse(i)}let n=new Ri(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);return new mm(n,this.manager).parse(Rt)}},mm=class{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){Tn=this.parseConnections();let e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),i=this.parseDeformers(),s=new gm().parse(i);return this.parseScene(i,s,n),ai}parseConnections(){let e=new Map;return"Connections"in Rt&&Rt.Connections.connections.forEach(function(n){let i=n[0],s=n[1],o=n[2];e.has(i)||e.set(i,{parents:[],children:[]});let a={ID:s,relationship:o};e.get(i).parents.push(a),e.has(s)||e.set(s,{parents:[],children:[]});let l={ID:i,relationship:o};e.get(s).children.push(l)}),e}parseImages(){let e={},t={};if("Video"in Rt.Objects){let n=Rt.Objects.Video;for(let i in n){let s=n[i],o=parseInt(i);if(e[o]=s.RelativeFilename||s.Filename,"Content"in s){let a=s.Content instanceof ArrayBuffer&&s.Content.byteLength>0,l=typeof s.Content=="string"&&s.Content!=="";if(a||l){let c=this.parseImage(n[i]);t[s.RelativeFilename||s.Filename]=c}}}}for(let n in e){let i=e[n];t[i]!==void 0?e[n]=t[i]:e[n]=e[n].split("\\").pop()}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase(),s;switch(i){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),s="image/tga";break;default:console.warn('FBXLoader: Image type "'+i+'" is not supported.');return}if(typeof t=="string")return"data:"+s+";base64,"+t;{let o=new Uint8Array(t);return window.URL.createObjectURL(new Blob([o],{type:s}))}}parseTextures(e){let t=new Map;if("Texture"in Rt.Objects){let n=Rt.Objects.Texture;for(let i in n){let s=this.parseTexture(n[i],e);t.set(parseInt(i),s)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let i=e.WrapModeU,s=e.WrapModeV,o=i!==void 0?i.value:0,a=s!==void 0?s.value:0;if(n.wrapS=o===0?on:un,n.wrapT=a===0?on:un,"Scaling"in e){let l=e.Scaling.value;n.repeat.x=l[0],n.repeat.y=l[1]}if("Translation"in e){let l=e.Translation.value;n.offset.x=l[0],n.offset.y=l[1]}return n}loadTexture(e,t){let n=new Set(["tga","tif","tiff","exr","dds","hdr","ktx2"]),i=e.FileName.split(".").pop().toLowerCase(),s=n.has(i)?this.manager.getHandler(`.${i}`):this.textureLoader;if(!s)return console.warn(`FBXLoader: ${i.toUpperCase()} loader not found, creating placeholder texture for`,e.RelativeFilename),new qn;let o=s.path;o||s.setPath(this.textureLoader.path);let a=Tn.get(e.id).children,l;a!==void 0&&a.length>0&&t[a[0].ID]!==void 0&&(l=t[a[0].ID],(l.indexOf("blob:")===0||l.indexOf("data:")===0)&&s.setPath(void 0));let c=s.load(l);return s.setPath(o),c}parseMaterials(e){let t=new Map;if("Material"in Rt.Objects){let n=Rt.Objects.Material;for(let i in n){let s=this.parseMaterial(n[i],e);s!==null&&t.set(parseInt(i),s)}}return t}parseMaterial(e,t){let n=e.id,i=e.attrName,s=e.ShadingModel;if(typeof s=="object"&&(s=s.value),!Tn.has(n))return null;let o=this.parseParameters(e,t,n),a;switch(s.toLowerCase()){case"phong":a=new Zt;break;case"lambert":a=new go;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),a=new Zt;break}return a.setValues(o),a.name=i,a}parseParameters(e,t,n){let i={};e.BumpFactor&&(i.bumpScale=e.BumpFactor.value),e.Diffuse?i.color=mt.toWorkingColorSpace(new He().fromArray(e.Diffuse.value),yt):e.DiffuseColor&&(e.DiffuseColor.type==="Color"||e.DiffuseColor.type==="ColorRGB")&&(i.color=mt.toWorkingColorSpace(new He().fromArray(e.DiffuseColor.value),yt)),e.DisplacementFactor&&(i.displacementScale=e.DisplacementFactor.value),e.Emissive?i.emissive=mt.toWorkingColorSpace(new He().fromArray(e.Emissive.value),yt):e.EmissiveColor&&(e.EmissiveColor.type==="Color"||e.EmissiveColor.type==="ColorRGB")&&(i.emissive=mt.toWorkingColorSpace(new He().fromArray(e.EmissiveColor.value),yt)),e.EmissiveFactor&&(i.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),i.opacity=1-(e.TransparencyFactor?parseFloat(e.TransparencyFactor.value):0),(i.opacity===1||i.opacity===0)&&(i.opacity=e.Opacity?parseFloat(e.Opacity.value):null,i.opacity===null&&(i.opacity=1-(e.TransparentColor?parseFloat(e.TransparentColor.value[0]):0))),i.opacity<1&&(i.transparent=!0),e.ReflectionFactor&&(i.reflectivity=e.ReflectionFactor.value),e.Shininess&&(i.shininess=e.Shininess.value),e.Specular?i.specular=mt.toWorkingColorSpace(new He().fromArray(e.Specular.value),yt):e.SpecularColor&&e.SpecularColor.type==="Color"&&(i.specular=mt.toWorkingColorSpace(new He().fromArray(e.SpecularColor.value),yt));let s=this;return Tn.get(n).children.forEach(function(o){let a=o.relationship;switch(a){case"Bump":i.bumpMap=s.getTexture(t,o.ID);break;case"Maya|TEX_ao_map":i.aoMap=s.getTexture(t,o.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":i.map=s.getTexture(t,o.ID),i.map!==void 0&&(i.map.colorSpace=yt);break;case"DisplacementColor":i.displacementMap=s.getTexture(t,o.ID);break;case"EmissiveColor":i.emissiveMap=s.getTexture(t,o.ID),i.emissiveMap!==void 0&&(i.emissiveMap.colorSpace=yt);break;case"NormalMap":case"Maya|TEX_normal_map":i.normalMap=s.getTexture(t,o.ID);break;case"ReflectionColor":i.envMap=s.getTexture(t,o.ID),i.envMap!==void 0&&(i.envMap.mapping=Ua,i.envMap.colorSpace=yt);break;case"SpecularColor":i.specularMap=s.getTexture(t,o.ID),i.specularMap!==void 0&&(i.specularMap.colorSpace=yt);break;case"TransparentColor":case"TransparencyFactor":i.alphaMap=s.getTexture(t,o.ID),i.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a);break}}),i}getTexture(e,t){return"LayeredTexture"in Rt.Objects&&t in Rt.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=Tn.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if("Deformer"in Rt.Objects){let n=Rt.Objects.Deformer;for(let i in n){let s=n[i],o=Tn.get(parseInt(i));if(s.attrType==="Skin"){let a=this.parseSkeleton(o,n);a.ID=i,o.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=o.parents[0].ID,e[i]=a}else if(s.attrType==="BlendShape"){let a={id:i};a.rawTargets=this.parseMorphTargets(o,n),a.id=i,o.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[i]=a}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let n=[];return e.children.forEach(function(i){let s=t[i.ID];if(s.attrType!=="Cluster")return;let o={ID:i.ID,indices:[],weights:[],transformLink:new Je().fromArray(s.TransformLink.a)};"Indexes"in s&&(o.indices=s.Indexes.a,o.weights=s.Weights.a),n.push(o)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){let n=[];for(let i=0;i1?o=a:a.length>0?o=a[0]:(o=new Zt({name:zt.DEFAULT_MATERIAL_NAME,color:13421772}),a.push(o)),"color"in s.attributes&&a.forEach(function(l){l.vertexColors=!0}),s.groups.length>0){let l=!1;for(let c=0,u=s.groups.length;c=a.length)&&(h.materialIndex=a.length,l=!0)}if(l){let c=new Zt;a.push(c)}}return s.FBX_Deformer?(i=new co(s,o),i.normalizeSkinWeights()):i=new Dt(s,o),i}createCurve(e,t){let n=e.children.reduce(function(s,o){return t.has(o.ID)&&(s=t.get(o.ID)),s},null),i=new jn({name:zt.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new Rs(n,i)}getTransformData(e,t){let n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),"RotationOrder"in t?n.eulerOrder=Gc(t.RotationOrder.value):n.eulerOrder=Gc(0),"Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){"LookAtProperty"in t&&Tn.get(e.ID).children.forEach(function(i){if(i.relationship==="LookAtProperty"){let s=Rt.Objects.Model[i.ID];if("Lcl_Translation"in s){let o=s.Lcl_Translation.value;e.target!==void 0?(e.target.position.fromArray(o),ai.add(e.target)):e.lookAt(new se().fromArray(o))}}})}bindSkeleton(e,t,n){let i=this.parsePoseNodes();for(let s in e){let o=e[s];Tn.get(parseInt(o.ID)).parents.forEach(function(l){if(t.has(l.ID)){let c=l.ID;Tn.get(c).parents.forEach(function(h){n.has(h.ID)&&n.get(h.ID).bind(new ho(o.bones),i[h.ID])})}})}}parsePoseNodes(){let e={};if("Pose"in Rt.Objects){let t=Rt.Objects.Pose;for(let n in t)if(t[n].attrType==="BindPose"&&t[n].NbPoseNodes>0){let i=t[n].PoseNode;Array.isArray(i)?i.forEach(function(s){e[s.Node]=new Je().fromArray(s.Matrix.a)}):e[i.Node]=new Je().fromArray(i.Matrix.a)}}return e}addGlobalSceneSettings(){if("GlobalSettings"in Rt){if("AmbientColor"in Rt.GlobalSettings){let e=Rt.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],i=e[2];if(t!==0||n!==0||i!==0){let s=new He().setRGB(t,n,i,yt);ai.add(new or(s,1))}}"UnitScaleFactor"in Rt.GlobalSettings&&(ai.userData.unitScaleFactor=Rt.GlobalSettings.UnitScaleFactor.value)}}},gm=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if("Geometry"in Rt.Objects){let n=Rt.Objects.Geometry;for(let i in n){let s=Tn.get(parseInt(i)),o=this.parseGeometry(s,n[i],e);t.set(parseInt(i),o)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),t}parseGeometry(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let i=n.skeletons,s=[],o=e.parents.map(function(h){return Rt.Objects.Model[h.ID]});if(o.length===0)return;let a=e.children.reduce(function(h,f){return i[f.ID]!==void 0&&(h=i[f.ID]),h},null);e.children.forEach(function(h){n.morphTargets[h.ID]!==void 0&&s.push(n.morphTargets[h.ID])});let l=o[0],c={};"RotationOrder"in l&&(c.eulerOrder=Gc(l.RotationOrder.value)),"InheritType"in l&&(c.inheritType=parseInt(l.InheritType.value)),"GeometricTranslation"in l&&(c.translation=l.GeometricTranslation.value),"GeometricRotation"in l&&(c.rotation=l.GeometricRotation.value),"GeometricScaling"in l&&(c.scale=l.GeometricScaling.value);let u=$y(c);return this.genGeometry(t,a,s,u)}genGeometry(e,t,n,i){let s=new It;e.attrName&&(s.name=e.attrName);let o=this.parseGeoNode(e,t),a=this.genBuffers(o),l=new We(a.vertex,3);if(l.applyMatrix4(i),s.setAttribute("position",l),a.colors.length>0&&s.setAttribute("color",new We(a.colors,3)),t&&(s.setAttribute("skinIndex",new lo(a.weightsIndices,4)),s.setAttribute("skinWeight",new We(a.vertexWeights,4)),s.FBX_Deformer=t),a.normal.length>0){let c=new gt().getNormalMatrix(i),u=new We(a.normal,3);u.applyNormalMatrix(c),s.setAttribute("normal",u)}if(a.uvs.forEach(function(c,u){let h=u===0?"uv":`uv${u}`;s.setAttribute(h,new We(a.uvs[u],2))}),o.material&&o.material.mappingType!=="AllSame"){let c=a.materialIndex[0],u=0;if(a.materialIndex.forEach(function(h,f){h!==c&&(s.addGroup(u,f-u,c),c=h,u=f)}),s.groups.length>0){let h=s.groups[s.groups.length-1],f=h.start+h.count;f!==a.materialIndex.length&&s.addGroup(f,a.materialIndex.length-f,c)}s.groups.length===0&&s.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(s,e,n,i),s}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices!==void 0?e.Vertices.a:[],n.vertexIndices=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let i=0;for(;e.LayerElementUV[i];)e.LayerElementUV[i].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[i])),i++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(i,s){i.indices.forEach(function(o,a){n.weightTable[o]===void 0&&(n.weightTable[o]=[]),n.weightTable[o].push({id:s,weight:i.weights[a]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,i=0,s=!1,o=[],a=[],l=[],c=[],u=[],h=[],f=this;return e.vertexIndices.forEach(function(p,g){let y,d=!1;p<0&&(p=p^-1,d=!0);let m=[],_=[];if(o.push(p*3,p*3+1,p*3+2),e.color){let v=kf(g,n,p,e.color);l.push(v[0],v[1],v[2])}if(e.skeleton){if(e.weightTable[p]!==void 0&&e.weightTable[p].forEach(function(v){_.push(v.weight),m.push(v.id)}),_.length>4){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);let v=[0,0,0,0],x=[0,0,0,0];_.forEach(function(S,I){let A=S,C=m[I];x.forEach(function(E,b,R){if(A>E){R[b]=A,A=E;let N=v[b];v[b]=C,C=N}})}),m=v,_=x}for(;_.length<4;)_.push(0),m.push(0);for(let v=0;v<4;++v)u.push(_[v]),h.push(m[v])}if(e.normal){let v=kf(g,n,p,e.normal);a.push(v[0],v[1],v[2])}e.material&&e.material.mappingType!=="AllSame"&&(y=kf(g,n,p,e.material)[0],y<0&&(f.negativeMaterialIndices=!0,y=0)),e.uv&&e.uv.forEach(function(v,x){let S=kf(g,n,p,v);c[x]===void 0&&(c[x]=[]),c[x].push(S[0]),c[x].push(S[1])}),i++,d&&(f.genFace(t,e,o,y,a,l,c,u,h,i),n++,i=0,o=[],a=[],l=[],c=[],u=[],h=[])}),t}getNormalNewell(e){let t=new se(0,0,0);for(let n=0;n.5?new se(0,1,0):new se(0,0,1)).cross(t).normalize(),s=t.clone().cross(i).normalize();return{normal:t,tangent:i,bitangent:s}}flattenVertex(e,t,n){return new Pe(e.dot(t),e.dot(n))}genFace(e,t,n,i,s,o,a,l,c,u){let h;if(u>3){let f=[],p=t.baseVertexPositions||t.vertexPositions;for(let m=0;m1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");let o=e.get(s[0].ID);n[i]={name:t[i].attrName,layer:o}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(i){t=t.concat(n.generateTracks(i))}),new Ps(e.name,-1,t)}generateTracks(e){let t=[],n=new se,i=new se;if(e.transform&&e.transform.decompose(n,new an,i),n=n.toArray(),i=i.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let s=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");s!==void 0&&t.push(s)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let s=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder);s!==void 0&&t.push(s)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let s=this.generateVectorTrack(e.modelName,e.S.curves,i,"scale");s!==void 0&&t.push(s)}if(e.DeformPercent!==void 0){let s=this.generateMorphTrack(e);s!==void 0&&t.push(s)}return t}generateVectorTrack(e,t,n,i){let s=this.getTimesForAllAxes(t),o=this.getKeyframeTrackValues(s,t,n);return new Wi(e+"."+i,s,o)}generateRotationTrack(e,t,n,i,s){let o,a;if(t.x!==void 0&&t.y!==void 0&&t.z!==void 0){let f=this.interpolateRotations(t.x,t.y,t.z,s);o=f[0],a=f[1]}let l=Gc(0);n!==void 0&&(n=n.map(yn.degToRad),n.push(l),n=new vn().fromArray(n),n=new an().setFromEuler(n)),i!==void 0&&(i=i.map(yn.degToRad),i.push(l),i=new vn().fromArray(i),i=new an().setFromEuler(i).invert());let c=new an,u=new vn,h=[];if(!a||!o)return new Hi(e+".quaternion",[0],[0]);for(let f=0;f2&&new an().fromArray(h,(f-3)/3*4).dot(c)<0&&c.set(-c.x,-c.y,-c.z,-c.w),c.toArray(h,f/3*4);return new Hi(e+".quaternion",o,h)}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(s){return s/100}),i=ai.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new is(e.modelName+".morphTargetInfluences["+i+"]",t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(n,i){return n-i}),t.length>1){let n=1,i=t[0];for(let s=1;s=180||p[1]>=180||p[2]>=180){let y=Math.max(...p)/180,d=new vn(...c,i),m=new vn(...h,i),_=new an().setFromEuler(d),v=new an().setFromEuler(m);_.dot(v)&&v.set(-v.x,-v.y,-v.z,-v.w);let x=e.times[a-1],S=e.times[a]-x,I=new an,A=new vn;for(let C=0;C<1;C+=1/y)I.copy(_.clone().slerp(v.clone(),C)),s.push(x+C*S),A.setFromQuaternion(I,i),o.push(A.x),o.push(A.y),o.push(A.z)}else s.push(e.times[a]),o.push(yn.degToRad(e.values[a])),o.push(yn.degToRad(t.values[a])),o.push(yn.degToRad(n.values[a]))}return[s,o]}},xm=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new Vf,this.nodeStack=[],this.currentProp=[],this.currentPropName="";let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(i,s){let o=i.match(/^[\s\t]*;/),a=i.match(/^[\s\t]*$/);if(o||a)return;let l=i.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),c=i.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),u=i.match("^\\t{"+(t.currentIndent-1)+"}}");l?t.parseNodeBegin(i,l):c?t.parseNodeProperty(i,c,n[++s]):u?t.popStack():i.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(i)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,"").replace(/"$/,""),i=t[2].split(",").map(function(l){return l.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:n},o=this.parseNodeAttr(i),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,s):n in a?(n==="PoseNode"?a.PoseNode.push(s):a[n].id!==void 0&&(a[n]={},a[n][a[n].id]=a[n]),o.id!==""&&(a[n][o.id]=s)):typeof o.id=="number"?(a[n]={},a[n][o.id]=s):n!=="Properties70"&&(n==="PoseNode"?a[n]=[s]:a[n]=s),typeof o.id=="number"&&(s.id=o.id),o.name!==""&&(s.attrName=o.name),o.type!==""&&(s.attrType=o.type),this.pushStack(s)}parseNodeAttr(e){let t=e[0];e[0]!==""&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n="",i="";return e.length>1&&(n=e[1].replace(/^(\w+)::/,""),i=e[2]),{id:t,name:n,type:i}}parseNodeProperty(e,t,n){let i=t[1].replace(/^"/,"").replace(/"$/,"").trim(),s=t[2].replace(/^"/,"").replace(/"$/,"").trim();i==="Content"&&s===","&&(s=n.replace(/"/g,"").replace(/,$/,"").trim());let o=this.getCurrentNode();if(o.name==="Properties70"){this.parseNodeSpecialProperty(e,i,s);return}if(i==="C"){let l=s.split(",").slice(1),c=parseInt(l[0]),u=parseInt(l[1]),h=s.split(",").slice(3);h=h.map(function(f){return f.trim().replace(/^"/,"")}),i="connections",s=[c,u],gS(s,h),o[i]===void 0&&(o[i]=[])}i==="Node"&&(o.id=s),i in o&&Array.isArray(o[i])?o[i].push(s):i!=="a"?o[i]=s:o.a=s,this.setCurrentProp(o,i),i==="a"&&s.slice(-1)!==","&&(o.a=pm(s))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==","&&(t.a=pm(t.a))}parseNodeSpecialProperty(e,t,n){let i=n.split('",').map(function(u){return u.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=i[0],o=i[1],a=i[2],l=i[3],c=i[4];switch(o){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":c=parseFloat(c);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":c=pm(c);break}this.getPrevNode()[s]={type:o,type2:a,flag:l,value:c},this.setCurrentProp(this.getPrevNode(),s)}},vm=class{parse(e){let t=new Gf(e);t.skip(23);let n=t.getUint32();if(n<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+n);let i=new Vf;for(;!this.endOfContent(t);){let s=this.parseNode(t,n);s!==null&&i.add(s.name,s)}return i}endOfContent(e){return e.size()%16===0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},i=t>=7500?e.getUint64():e.getUint32(),s=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let o=e.getUint8(),a=e.getString(o);if(i===0)return null;let l=[];for(let f=0;f0?l[0]:"",u=l.length>1?l[1]:"",h=l.length>2?l[2]:"";for(n.singleProperty=s===1&&e.getOffset()===i;i>e.getOffset();){let f=this.parseNode(e,t);f!==null&&this.parseSubNode(a,n,f)}return n.propertyList=l,typeof c=="number"&&(n.id=c),u!==""&&(n.attrName=u),h!==""&&(n.attrType=h),a!==""&&(n.name=a),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let i=n.propertyList[0];Array.isArray(i)?(t[n.name]=n,n.a=i):t[n.name]=i}else if(e==="Connections"&&n.name==="C"){let i=[];n.propertyList.forEach(function(s,o){o!==0&&i.push(s)}),t.connections===void 0&&(t.connections=[]),t.connections.push(i)}else if(n.name==="Properties70")Object.keys(n).forEach(function(s){t[s]=n[s]});else if(e==="Properties70"&&n.name==="P"){let i=n.propertyList[0],s=n.propertyList[1],o=n.propertyList[2],a=n.propertyList[3],l;i.indexOf("Lcl ")===0&&(i=i.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?l=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:l=n.propertyList[4],t[i]={type:s,type2:o,flag:a,value:l}}else t[n.name]===void 0?typeof n.id=="number"?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name==="PoseNode"?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return n=e.getUint32(),e.getArrayBuffer(n);case"S":return n=e.getUint32(),e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":let i=e.getUint32(),s=e.getUint32(),o=e.getUint32();if(s===0)switch(t){case"b":case"c":return e.getBooleanArray(i);case"d":return e.getFloat64Array(i);case"f":return e.getFloat32Array(i);case"i":return e.getInt32Array(i);case"l":return e.getInt64Array(i)}let a=jy(new Uint8Array(e.getArrayBuffer(o))),l=new Gf(a.buffer);switch(t){case"b":case"c":return l.getBooleanArray(i);case"d":return l.getFloat64Array(i);case"f":return l.getFloat32Array(i);case"i":return l.getInt32Array(i);case"l":return l.getInt64Array(i)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}},Gf=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t!==void 0?t:!0,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(e){let t=[];for(let n=0;n=0&&(n=new Uint8Array(this.dv.buffer,t,i)),this._textDecoder.decode(n)}},Vf=class{add(e,t){this[e]=t}};function fS(r){let e="Kaydara FBX Binary \0";return r.byteLength>=e.length&&e===Qy(r,0,e.length)}function dS(r){let e=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],t=0;function n(i){let s=r[i-1];return r=r.slice(t+i),t++,s}for(let i=0;i0&&F.push(new Wi(X+".position",J,Ie)),Ne.length>0&&F.push(new Hi(X+".quaternion",J,Ne)),et.length>0&&F.push(new Wi(X+".scale",J,et)),F}function R(U,F,Z){let X,J=!0,Ie,Ne;for(Ie=0,Ne=U.length;Ie=0;){let X=U[F];if(X.value[Z]!==null)return X;F--}return null}function V(U,F,Z){for(;F>>0)+2);switch(Z=Z.toLowerCase(),Z){case"tga":F=Yn;break;default:F=ti}return F}function ne(U){let F=D(U.url),Z=F.profile.technique,X;switch(Z.type){case"phong":case"blinn":X=new Zt;break;case"lambert":X=new go;break;default:X=new Ii;break}X.name=U.name||"";function J(Ve,Ze=null){let lt=F.profile.samplers[Ve.id],Ue=null;if(lt!==void 0){let ot=F.profile.surfaces[lt.source];Ue=k(ot.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),Ue=k(Ve.id);if(Ue!==null){let ot=Q(Ue);if(ot!==void 0){let it=ot.load(Ue),pt=Ve.extra;if(pt!==void 0&&pt.technique!==void 0&&c(pt.technique)===!1){let ht=pt.technique;it.wrapS=ht.wrapU?on:un,it.wrapT=ht.wrapV?on:un,it.offset.set(ht.offsetU||0,ht.offsetV||0),it.repeat.set(ht.repeatU||1,ht.repeatV||1)}else it.wrapS=on,it.wrapT=on;return Ze!==null&&(it.colorSpace=Ze),it}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",Ue),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",Ve.id),null}let Ie=Z.parameters;for(let Ve in Ie){let Ze=Ie[Ve];switch(Ve){case"diffuse":Ze.color&&X.color.fromArray(Ze.color),Ze.texture&&(X.map=J(Ze.texture,yt));break;case"specular":Ze.color&&X.specular&&X.specular.fromArray(Ze.color),Ze.texture&&(X.specularMap=J(Ze.texture));break;case"bump":Ze.texture&&(X.normalMap=J(Ze.texture));break;case"ambient":Ze.texture&&(X.lightMap=J(Ze.texture,yt));break;case"shininess":Ze.float&&X.shininess&&(X.shininess=Ze.float);break;case"emission":Ze.color&&X.emissive&&X.emissive.fromArray(Ze.color),Ze.texture&&(X.emissiveMap=J(Ze.texture,yt));break}}mt.toWorkingColorSpace(X.color,yt),X.specular&&mt.toWorkingColorSpace(X.specular,yt),X.emissive&&mt.toWorkingColorSpace(X.emissive,yt);let Ne=Ie.transparent,et=Ie.transparency;if(et===void 0&&Ne&&(et={float:1}),Ne===void 0&&et&&(Ne={opaque:"A_ONE",data:{color:[1,1,1,1]}}),Ne&&et)if(Ne.data.texture)X.transparent=!0;else{let Ve=Ne.data.color;switch(Ne.opaque){case"A_ONE":X.opacity=Ve[3]*et.float;break;case"RGB_ZERO":X.opacity=1-Ve[0]*et.float;break;case"A_ZERO":X.opacity=1-Ve[3]*et.float;break;case"RGB_ONE":X.opacity=Ve[0]*et.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',Ne.opaque)}X.opacity<1&&(X.transparent=!0)}if(Z.extra!==void 0&&Z.extra.technique!==void 0){let Ve=Z.extra.technique;for(let Ze in Ve){let lt=Ve[Ze];switch(Ze){case"double_sided":X.side=lt===1?Nn:wi;break;case"bump":X.normalMap=J(lt.texture),X.normalScale=new Pe(1,1);break}}}return X}function oe(U){return y(vt.materials[U],ne)}function he(U){let F={name:U.getAttribute("name")};for(let Z=0,X=U.childNodes.length;Z0?Ne+Ve:Ne;F.inputs[Ze]={id:Ie,offset:et},F.stride=Math.max(F.stride,et+1),Ne==="TEXCOORD"&&(F.hasUV=!0);break;case"vcount":F.vcount=o(J.textContent);break;case"p":F.p=o(J.textContent);break}}return F}function Oe(U){let F={};for(let Z=0;Z0&&F0&&Ue.setAttribute("position",new We(J.array,J.stride)),Ie.array.length>0&&Ue.setAttribute("normal",new We(Ie.array,Ie.stride)),Ve.array.length>0&&Ue.setAttribute("color",new We(Ve.array,Ve.stride)),Ne.array.length>0&&Ue.setAttribute("uv",new We(Ne.array,Ne.stride)),et.array.length>0&&Ue.setAttribute("uv1",new We(et.array,et.stride)),Ze.array.length>0&&Ue.setAttribute("skinIndex",new We(Ze.array,Ze.stride)),lt.array.length>0&&Ue.setAttribute("skinWeight",new We(lt.array,lt.stride)),X.data=Ue,X.type=U[0].type,X.materialKeys=ot,X}function Fe(U,F,Z,X,J=!1){let Ie=U.p,Ne=U.stride,et=U.vcount;function Ve(Ue){let ot=Ie[Ue+Z]*lt,it=ot+lt;for(;ot4)for(let ht=1,fn=pt-2;ht<=fn;ht++){let jt=Ue+Ne*0,Gt=Ue+Ne*ht,Vt=Ue+Ne*(ht+1);Ve(jt),Ve(Gt),Ve(Vt)}Ue+=Ne*pt}}else for(let Ue=0,ot=Ie.length;Ue=F.limits.max&&(F.static=!0),F.middlePosition=(F.limits.min+F.limits.max)/2,F}function Dr(U){let F={sid:U.getAttribute("sid"),name:U.getAttribute("name")||"",attachments:[],transforms:[]};for(let Z=0;Zit.limits.max||Ue()=>(e||(e={exports:{}},r(e.exports,e)),e.exports),ex=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.VERSION=void 0,r.VERSION="9.0.1"}),Wt=bt((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e){for(var t=0,n=e.length,i=r.length;t{(function(t,n){typeof define=="function"&&define.amd?define([],n):typeof e=="object"&&e.exports?e.exports=n():t.regexpToAst=n()})(typeof self<"u"?self:r,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(d){this.idx=d.idx,this.input=d.input,this.groupIdx=d.groupIdx},t.prototype.pattern=function(d){this.idx=0,this.input=d,this.groupIdx=0,this.consumeChar("/");var m=this.disjunction();this.consumeChar("/");for(var _={type:"Flags",loc:{begin:this.idx,end:d.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":l(_,"global");break;case"i":l(_,"ignoreCase");break;case"m":l(_,"multiLine");break;case"u":l(_,"unicode");break;case"y":l(_,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:_,value:m,loc:this.loc(0)}},t.prototype.disjunction=function(){var d=[],m=this.idx;for(d.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),d.push(this.alternative());return{type:"Disjunction",value:d,loc:this.loc(m)}},t.prototype.alternative=function(){for(var d=[],m=this.idx;this.isTerm();)d.push(this.term());return{type:"Alternative",value:d,loc:this.loc(m)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var d=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(d)};case"$":return{type:"EndAnchor",loc:this.loc(d)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(d)};case"B":return{type:"NonWordBoundary",loc:this.loc(d)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var m;switch(this.popChar()){case"=":m="Lookahead";break;case"!":m="NegativeLookahead";break}c(m);var _=this.disjunction();return this.consumeChar(")"),{type:m,value:_,loc:this.loc(d)}}u()},t.prototype.quantifier=function(d){var m,_=this.idx;switch(this.popChar()){case"*":m={atLeast:0,atMost:1/0};break;case"+":m={atLeast:1,atMost:1/0};break;case"?":m={atLeast:0,atMost:1};break;case"{":var v=this.integerIncludingZero();switch(this.popChar()){case"}":m={atLeast:v,atMost:v};break;case",":var x;this.isDigit()?(x=this.integerIncludingZero(),m={atLeast:v,atMost:x}):m={atLeast:v,atMost:1/0},this.consumeChar("}");break}if(d===!0&&m===void 0)return;c(m);break}if(!(d===!0&&m===void 0))return c(m),this.peekChar(0)==="?"?(this.consumeChar("?"),m.greedy=!1):m.greedy=!0,m.type="Quantifier",m.loc=this.loc(_),m},t.prototype.atom=function(){var d,m=this.idx;switch(this.peekChar()){case".":d=this.dotAll();break;case"\\":d=this.atomEscape();break;case"[":d=this.characterClass();break;case"(":d=this.group();break}return d===void 0&&this.isPatternCharacter()&&(d=this.patternCharacter()),c(d),d.loc=this.loc(m),this.isQuantifier()&&(d.quantifier=this.quantifier()),d},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[o(` `),o("\r"),o("\u2028"),o("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var d=this.positiveInteger();return{type:"GroupBackReference",value:d}},t.prototype.characterClassEscape=function(){var d,m=!1;switch(this.popChar()){case"d":d=f;break;case"D":d=f,m=!0;break;case"s":d=g;break;case"S":d=g,m=!0;break;case"w":d=p;break;case"W":d=p,m=!0;break}return c(d),{type:"Set",value:d,complement:m}},t.prototype.controlEscapeAtom=function(){var d;switch(this.popChar()){case"f":d=o("\f");break;case"n":d=o(` `);break;case"r":d=o("\r");break;case"t":d=o(" ");break;case"v":d=o("\v");break}return c(d),{type:"Character",value:d}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var d=this.popChar();if(/[a-zA-Z]/.test(d)===!1)throw Error("Invalid ");var m=d.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:m}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:o("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var d=this.popChar();return{type:"Character",value:o(d)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var d=this.popChar();return{type:"Character",value:o(d)}}},t.prototype.characterClass=function(){var d=[],m=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),m=!0);this.isClassAtom();){var _=this.classAtom(),y=_.type==="Character";if(y&&this.isRangeDash()){this.consumeChar("-");var x=this.classAtom(),w=x.type==="Character";if(w){if(x.value<_.value)throw Error("Range out of order in character class");d.push({from:_.value,to:x.value})}else a(_.value,d),d.push(o("-")),a(x.value,d)}else a(_.value,d)}return this.consumeChar("]"),{type:"Set",complement:m,value:d}},t.prototype.classAtom=function(){switch(this.peekChar()){case"]":case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var d=this.popChar();return{type:"Character",value:o(d)}}},t.prototype.characterClass=function(){var d=[],m=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),m=!0);this.isClassAtom();){var _=this.classAtom(),v=_.type==="Character";if(v&&this.isRangeDash()){this.consumeChar("-");var x=this.classAtom(),S=x.type==="Character";if(S){if(x.value<_.value)throw Error("Range out of order in character class");d.push({from:_.value,to:x.value})}else a(_.value,d),d.push(o("-")),a(x.value,d)}else a(_.value,d)}return this.consumeChar("]"),{type:"Set",complement:m,value:d}},t.prototype.classAtom=function(){switch(this.peekChar()){case"]":case` `:case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}},t.prototype.classEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:o("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.group=function(){var d=!0;switch(this.consumeChar("("),this.peekChar(0)){case"?":this.consumeChar("?"),this.consumeChar(":"),d=!1;break;default:this.groupIdx++;break}var m=this.disjunction();this.consumeChar(")");var _={type:"Group",capturing:d,value:m};return d&&(_.idx=this.groupIdx),_},t.prototype.positiveInteger=function(){var d=this.popChar();if(s.test(d)===!1)throw Error("Expecting a positive integer");for(;i.test(this.peekChar(0));)d+=this.popChar();return parseInt(d,10)},t.prototype.integerIncludingZero=function(){var d=this.popChar();if(i.test(d)===!1)throw Error("Expecting an integer");for(;i.test(this.peekChar(0));)d+=this.popChar();return parseInt(d,10)},t.prototype.patternCharacter=function(){var d=this.popChar();switch(d){case` `:case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:o(d)}}},t.prototype.isRegExpFlag=function(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}},t.prototype.isRangeDash=function(){return this.peekChar()==="-"&&this.isClassAtom(1)},t.prototype.isDigit=function(){return i.test(this.peekChar(0))},t.prototype.isClassAtom=function(d){switch(d===void 0&&(d=0),this.peekChar(d)){case"]":case` `:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}},t.prototype.isTerm=function(){return this.isAtom()||this.isAssertion()},t.prototype.isAtom=function(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}},t.prototype.isAssertion=function(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return this.peekChar(1)==="?"&&(this.peekChar(2)==="="||this.peekChar(2)==="!");default:return!1}},t.prototype.isQuantifier=function(){var d=this.saveState();try{return this.quantifier(!0)!==void 0}catch{return!1}finally{this.restoreState(d)}},t.prototype.isPatternCharacter=function(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case` -`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}},t.prototype.parseHexDigits=function(d){for(var m="",_=0;_=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(d){return{begin:d,end:this.idx}};var n=/[0-9a-fA-F]/,i=/[0-9]/,s=/[1-9]/;function o(d){return d.charCodeAt(0)}function a(d,m){d.length!==void 0?d.forEach(function(_){m.push(_)}):m.push(d)}function l(d,m){if(d[m]===!0)throw"duplicate flag "+m;d[m]=!0}function c(d){if(d===void 0)throw Error("Internal Error - Should never get here!")}function u(){throw Error("Internal Error - Should never get here!")}var h,f=[];for(h=o("0");h<=o("9");h++)f.push(h);var p=[o("_")].concat(f);for(h=o("a");h<=o("z");h++)p.push(h);for(h=o("A");h<=o("Z");h++)p.push(h);var g=[o(" "),o("\f"),o(` -`),o("\r"),o(" "),o("\v"),o(" "),o("\xA0"),o("\u1680"),o("\u2000"),o("\u2001"),o("\u2002"),o("\u2003"),o("\u2004"),o("\u2005"),o("\u2006"),o("\u2007"),o("\u2008"),o("\u2009"),o("\u200A"),o("\u2028"),o("\u2029"),o("\u202F"),o("\u205F"),o("\u3000"),o("\uFEFF")];function v(){}return v.prototype.visitChildren=function(d){for(var m in d){var _=d[m];d.hasOwnProperty(m)&&(_.type!==void 0?this.visit(_):Array.isArray(_)&&_.forEach(function(y){this.visit(y)},this))}},v.prototype.visit=function(d){switch(d.type){case"Pattern":this.visitPattern(d);break;case"Flags":this.visitFlags(d);break;case"Disjunction":this.visitDisjunction(d);break;case"Alternative":this.visitAlternative(d);break;case"StartAnchor":this.visitStartAnchor(d);break;case"EndAnchor":this.visitEndAnchor(d);break;case"WordBoundary":this.visitWordBoundary(d);break;case"NonWordBoundary":this.visitNonWordBoundary(d);break;case"Lookahead":this.visitLookahead(d);break;case"NegativeLookahead":this.visitNegativeLookahead(d);break;case"Character":this.visitCharacter(d);break;case"Set":this.visitSet(d);break;case"Group":this.visitGroup(d);break;case"GroupBackReference":this.visitGroupBackReference(d);break;case"Quantifier":this.visitQuantifier(d);break}this.visitChildren(d)},v.prototype.visitPattern=function(d){},v.prototype.visitFlags=function(d){},v.prototype.visitDisjunction=function(d){},v.prototype.visitAlternative=function(d){},v.prototype.visitStartAnchor=function(d){},v.prototype.visitEndAnchor=function(d){},v.prototype.visitWordBoundary=function(d){},v.prototype.visitNonWordBoundary=function(d){},v.prototype.visitLookahead=function(d){},v.prototype.visitNegativeLookahead=function(d){},v.prototype.visitCharacter=function(d){},v.prototype.visitSet=function(d){},v.prototype.visitGroup=function(d){},v.prototype.visitGroupBackReference=function(d){},v.prototype.visitQuantifier=function(d){},{RegExpParser:t,BaseRegExpVisitor:v,VERSION:"0.5.0"}})}),sp=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.clearRegExpParserCache=r.getRegExpAst=void 0;var e=rp(),t={},n=new e.RegExpParser;function i(o){var a=o.toString();if(t.hasOwnProperty(a))return t[a];var l=n.pattern(a);return t[a]=l,l}r.getRegExpAst=i;function s(){t={}}r.clearRegExpParserCache=s}),dS=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var v=function(d,m){return v=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(_,y){_.__proto__=y}||function(_,y){for(var x in y)Object.prototype.hasOwnProperty.call(y,x)&&(_[x]=y[x])},v(d,m)};return function(d,m){if(typeof m!="function"&&m!==null)throw new TypeError("Class extends value "+String(m)+" is not a constructor or null");v(d,m);function _(){this.constructor=d}d.prototype=m===null?Object.create(m):(_.prototype=m.prototype,new _)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.canMatchCharCode=r.firstCharOptimizedIndices=r.getOptimizedStartCodesIndices=r.failedOptimizationPrefixMsg=void 0;var t=rp(),n=Ut(),i=sp(),s=H0(),o="Complement Sets are not supported for first char optimization";r.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function a(v,d){d===void 0&&(d=!1);try{var m=i.getRegExpAst(v),_=l(m.value,{},m.flags.ignoreCase);return _}catch(x){if(x.message===o)d&&n.PRINT_WARNING(""+r.failedOptimizationPrefixMsg+(" Unable to optimize: < "+v.toString()+` > +`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}},t.prototype.parseHexDigits=function(d){for(var m="",_=0;_=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(d){return{begin:d,end:this.idx}};var n=/[0-9a-fA-F]/,i=/[0-9]/,s=/[1-9]/;function o(d){return d.charCodeAt(0)}function a(d,m){d.length!==void 0?d.forEach(function(_){m.push(_)}):m.push(d)}function l(d,m){if(d[m]===!0)throw"duplicate flag "+m;d[m]=!0}function c(d){if(d===void 0)throw Error("Internal Error - Should never get here!")}function u(){throw Error("Internal Error - Should never get here!")}var h,f=[];for(h=o("0");h<=o("9");h++)f.push(h);var p=[o("_")].concat(f);for(h=o("a");h<=o("z");h++)p.push(h);for(h=o("A");h<=o("Z");h++)p.push(h);var g=[o(" "),o("\f"),o(` +`),o("\r"),o(" "),o("\v"),o(" "),o("\xA0"),o("\u1680"),o("\u2000"),o("\u2001"),o("\u2002"),o("\u2003"),o("\u2004"),o("\u2005"),o("\u2006"),o("\u2007"),o("\u2008"),o("\u2009"),o("\u200A"),o("\u2028"),o("\u2029"),o("\u202F"),o("\u205F"),o("\u3000"),o("\uFEFF")];function y(){}return y.prototype.visitChildren=function(d){for(var m in d){var _=d[m];d.hasOwnProperty(m)&&(_.type!==void 0?this.visit(_):Array.isArray(_)&&_.forEach(function(v){this.visit(v)},this))}},y.prototype.visit=function(d){switch(d.type){case"Pattern":this.visitPattern(d);break;case"Flags":this.visitFlags(d);break;case"Disjunction":this.visitDisjunction(d);break;case"Alternative":this.visitAlternative(d);break;case"StartAnchor":this.visitStartAnchor(d);break;case"EndAnchor":this.visitEndAnchor(d);break;case"WordBoundary":this.visitWordBoundary(d);break;case"NonWordBoundary":this.visitNonWordBoundary(d);break;case"Lookahead":this.visitLookahead(d);break;case"NegativeLookahead":this.visitNegativeLookahead(d);break;case"Character":this.visitCharacter(d);break;case"Set":this.visitSet(d);break;case"Group":this.visitGroup(d);break;case"GroupBackReference":this.visitGroupBackReference(d);break;case"Quantifier":this.visitQuantifier(d);break}this.visitChildren(d)},y.prototype.visitPattern=function(d){},y.prototype.visitFlags=function(d){},y.prototype.visitDisjunction=function(d){},y.prototype.visitAlternative=function(d){},y.prototype.visitStartAnchor=function(d){},y.prototype.visitEndAnchor=function(d){},y.prototype.visitWordBoundary=function(d){},y.prototype.visitNonWordBoundary=function(d){},y.prototype.visitLookahead=function(d){},y.prototype.visitNegativeLookahead=function(d){},y.prototype.visitCharacter=function(d){},y.prototype.visitSet=function(d){},y.prototype.visitGroup=function(d){},y.prototype.visitGroupBackReference=function(d){},y.prototype.visitQuantifier=function(d){},{RegExpParser:t,BaseRegExpVisitor:y,VERSION:"0.5.0"}})}),Tm=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.clearRegExpParserCache=r.getRegExpAst=void 0;var e=_m(),t={},n=new e.RegExpParser;function i(o){var a=o.toString();if(t.hasOwnProperty(a))return t[a];var l=n.pattern(a);return t[a]=l,l}r.getRegExpAst=i;function s(){t={}}r.clearRegExpParserCache=s}),xS=bt(r=>{"use strict";var e=r&&r.__extends||function(){var y=function(d,m){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(_,v){_.__proto__=v}||function(_,v){for(var x in v)Object.prototype.hasOwnProperty.call(v,x)&&(_[x]=v[x])},y(d,m)};return function(d,m){if(typeof m!="function"&&m!==null)throw new TypeError("Class extends value "+String(m)+" is not a constructor or null");y(d,m);function _(){this.constructor=d}d.prototype=m===null?Object.create(m):(_.prototype=m.prototype,new _)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.canMatchCharCode=r.firstCharOptimizedIndices=r.getOptimizedStartCodesIndices=r.failedOptimizationPrefixMsg=void 0;var t=_m(),n=Wt(),i=Tm(),s=tx(),o="Complement Sets are not supported for first char optimization";r.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function a(y,d){d===void 0&&(d=!1);try{var m=i.getRegExpAst(y),_=l(m.value,{},m.flags.ignoreCase);return _}catch(x){if(x.message===o)d&&n.PRINT_WARNING(""+r.failedOptimizationPrefixMsg+(" Unable to optimize: < "+y.toString()+` > `)+` Complement Sets cannot be automatically optimized. This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var y="";d&&(y=` + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var v="";d&&(v=` This will disable the lexer's first char optimizations. See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),n.PRINT_ERROR(r.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+v.toString()+` > +`+(" Failed parsing: < "+y.toString()+` > `)+(" Using the regexp-to-ast library version: "+t.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+y)}}return[]}r.getOptimizedStartCodesIndices=a;function l(v,d,m){switch(v.type){case"Disjunction":for(var _=0;_=s.minOptimizationVal)for(var L=E.from>=s.minOptimizationVal?E.from:s.minOptimizationVal,N=E.to,O=s.charCodeToOptimizedIndex(L),B=s.charCodeToOptimizedIndex(N),ie=O;ie<=B;ie++)d[ie]=ie}}});break;case"Group":l(w.value,d,m);break;default:throw Error("Non Exhaustive Match")}var I=w.quantifier!==void 0&&w.quantifier.atLeast===0;if(w.type==="Group"&&f(w)===!1||w.type!=="Group"&&I===!1)break}break;default:throw Error("non exhaustive match!")}return n.values(d)}r.firstCharOptimizedIndices=l;function c(v,d,m){var _=s.charCodeToOptimizedIndex(v);d[_]=_,m===!0&&u(v,d)}function u(v,d){var m=String.fromCharCode(v),_=m.toUpperCase();if(_!==m){var y=s.charCodeToOptimizedIndex(_.charCodeAt(0));d[y]=y}else{var x=m.toLowerCase();if(x!==m){var y=s.charCodeToOptimizedIndex(x.charCodeAt(0));d[y]=y}}}function h(v,d){return n.find(v.value,function(m){if(typeof m=="number")return n.contains(d,m);var _=m;return n.find(d,function(y){return _.from<=y&&y<=_.to})!==void 0})}function f(v){return v.quantifier&&v.quantifier.atLeast===0?!0:v.value?n.isArray(v.value)?n.every(v.value,f):f(v.value):!1}var p=function(v){e(d,v);function d(m){var _=v.call(this)||this;return _.targetCharCodes=m,_.found=!1,_}return d.prototype.visitChildren=function(m){if(this.found!==!0){switch(m.type){case"Lookahead":this.visitLookahead(m);return;case"NegativeLookahead":this.visitNegativeLookahead(m);return}v.prototype.visitChildren.call(this,m)}},d.prototype.visitCharacter=function(m){n.contains(this.targetCharCodes,m.value)&&(this.found=!0)},d.prototype.visitSet=function(m){m.complement?h(m,this.targetCharCodes)===void 0&&(this.found=!0):h(m,this.targetCharCodes)!==void 0&&(this.found=!0)},d}(t.BaseRegExpVisitor);function g(v,d){if(d instanceof RegExp){var m=i.getRegExpAst(d),_=new p(v);return _.visit(m),_.found}else return n.find(d,function(y){return n.contains(v,y.charCodeAt(0))})!==void 0}r.canMatchCharCode=g}),H0=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var T=function(S,b){return T=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(V,q){V.__proto__=q}||function(V,q){for(var Y in q)Object.prototype.hasOwnProperty.call(q,Y)&&(V[Y]=q[Y])},T(S,b)};return function(S,b){if(typeof b!="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");T(S,b);function V(){this.constructor=S}S.prototype=b===null?Object.create(b):(V.prototype=b.prototype,new V)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.charCodeToOptimizedIndex=r.minOptimizationVal=r.buildLineBreakIssueMessage=r.LineTerminatorOptimizedTester=r.isShortPattern=r.isCustomPattern=r.cloneEmptyGroups=r.performWarningRuntimeChecks=r.performRuntimeChecks=r.addStickyFlag=r.addStartOfInput=r.findUnreachablePatterns=r.findModesThatDoNotExist=r.findInvalidGroupType=r.findDuplicatePatterns=r.findUnsupportedFlags=r.findStartOfInputAnchor=r.findEmptyMatchRegExps=r.findEndOfInputAnchor=r.findInvalidPatterns=r.findMissingPatterns=r.validatePatterns=r.analyzeTokenTypes=r.enableSticky=r.disableSticky=r.SUPPORT_STICKY=r.MODES=r.DEFAULT_MODE=void 0;var t=rp(),n=Ah(),i=Ut(),s=dS(),o=sp(),a="PATTERN";r.DEFAULT_MODE="defaultMode",r.MODES="modes",r.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function l(){r.SUPPORT_STICKY=!1}r.disableSticky=l;function c(){r.SUPPORT_STICKY=!0}r.enableSticky=c;function u(T,S){S=i.defaults(S,{useSticky:r.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(ee,k){return k()}});var b=S.tracer;b("initCharCodeToOptimizedIndexMap",function(){R()});var V;b("Reject Lexer.NA",function(){V=i.reject(T,function(ee){return ee[a]===n.Lexer.NA})});var q=!1,Y;b("Transform Patterns",function(){q=!1,Y=i.map(V,function(ee){var k=ee[a];if(i.isRegExp(k)){var J=k.source;return J.length===1&&J!=="^"&&J!=="$"&&J!=="."&&!k.ignoreCase?J:J.length===2&&J[0]==="\\"&&!i.contains(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],J[1])?J[1]:S.useSticky?N(k):L(k)}else{if(i.isFunction(k))return q=!0,{exec:k};if(i.has(k,"exec"))return q=!0,k;if(typeof k=="string"){if(k.length===1)return k;var ue=k.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),Z=new RegExp(ue);return S.useSticky?N(Z):L(Z)}else throw Error("non exhaustive match")}})});var z,X,se,re,le;b("misc mapping",function(){z=i.map(V,function(ee){return ee.tokenTypeIdx}),X=i.map(V,function(ee){var k=ee.GROUP;if(k!==n.Lexer.SKIPPED){if(i.isString(k))return k;if(i.isUndefined(k))return!1;throw Error("non exhaustive match")}}),se=i.map(V,function(ee){var k=ee.LONGER_ALT;if(k){var J=i.indexOf(V,k);return J}}),re=i.map(V,function(ee){return ee.PUSH_MODE}),le=i.map(V,function(ee){return i.has(ee,"POP_MODE")})});var xe;b("Line Terminator Handling",function(){var ee=de(S.lineTerminatorCharacters);xe=i.map(V,function(k){return!1}),S.positionTracking!=="onlyOffset"&&(xe=i.map(V,function(k){if(i.has(k,"LINE_BREAKS"))return k.LINE_BREAKS;if(W(k,ee)===!1)return s.canMatchCharCode(ee,k.PATTERN)}))});var G,A,U,he;b("Misc Mapping #2",function(){G=i.map(V,$),A=i.map(Y,te),U=i.reduce(V,function(ee,k){var J=k.GROUP;return i.isString(J)&&J!==n.Lexer.SKIPPED&&(ee[J]=[]),ee},{}),he=i.map(Y,function(ee,k){return{pattern:Y[k],longerAlt:se[k],canLineTerminator:xe[k],isCustom:G[k],short:A[k],group:X[k],push:re[k],pop:le[k],tokenTypeIdx:z[k],tokenType:V[k]}})});var me=!0,Te=[];return S.safeMode||b("First Char Optimization",function(){Te=i.reduce(V,function(ee,k,J){if(typeof k.PATTERN=="string"){var ue=k.PATTERN.charCodeAt(0),Z=ve(ue);ye(ee,Z,he[J])}else if(i.isArray(k.START_CHARS_HINT)){var ce;i.forEach(k.START_CHARS_HINT,function(fe){var ge=typeof fe=="string"?fe.charCodeAt(0):fe,Ae=ve(ge);ce!==Ae&&(ce=Ae,ye(ee,Ae,he[J]))})}else if(i.isRegExp(k.PATTERN))if(k.PATTERN.unicode)me=!1,S.ensureOptimizations&&i.PRINT_ERROR(""+s.failedOptimizationPrefixMsg+(" Unable to analyze < "+k.PATTERN.toString()+` > pattern. +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+v)}}return[]}r.getOptimizedStartCodesIndices=a;function l(y,d,m){switch(y.type){case"Disjunction":for(var _=0;_=s.minOptimizationVal)for(var R=E.from>=s.minOptimizationVal?E.from:s.minOptimizationVal,N=E.to,B=s.charCodeToOptimizedIndex(R),V=s.charCodeToOptimizedIndex(N),ie=B;ie<=V;ie++)d[ie]=ie}}});break;case"Group":l(S.value,d,m);break;default:throw Error("Non Exhaustive Match")}var I=S.quantifier!==void 0&&S.quantifier.atLeast===0;if(S.type==="Group"&&f(S)===!1||S.type!=="Group"&&I===!1)break}break;default:throw Error("non exhaustive match!")}return n.values(d)}r.firstCharOptimizedIndices=l;function c(y,d,m){var _=s.charCodeToOptimizedIndex(y);d[_]=_,m===!0&&u(y,d)}function u(y,d){var m=String.fromCharCode(y),_=m.toUpperCase();if(_!==m){var v=s.charCodeToOptimizedIndex(_.charCodeAt(0));d[v]=v}else{var x=m.toLowerCase();if(x!==m){var v=s.charCodeToOptimizedIndex(x.charCodeAt(0));d[v]=v}}}function h(y,d){return n.find(y.value,function(m){if(typeof m=="number")return n.contains(d,m);var _=m;return n.find(d,function(v){return _.from<=v&&v<=_.to})!==void 0})}function f(y){return y.quantifier&&y.quantifier.atLeast===0?!0:y.value?n.isArray(y.value)?n.every(y.value,f):f(y.value):!1}var p=function(y){e(d,y);function d(m){var _=y.call(this)||this;return _.targetCharCodes=m,_.found=!1,_}return d.prototype.visitChildren=function(m){if(this.found!==!0){switch(m.type){case"Lookahead":this.visitLookahead(m);return;case"NegativeLookahead":this.visitNegativeLookahead(m);return}y.prototype.visitChildren.call(this,m)}},d.prototype.visitCharacter=function(m){n.contains(this.targetCharCodes,m.value)&&(this.found=!0)},d.prototype.visitSet=function(m){m.complement?h(m,this.targetCharCodes)===void 0&&(this.found=!0):h(m,this.targetCharCodes)!==void 0&&(this.found=!0)},d}(t.BaseRegExpVisitor);function g(y,d){if(d instanceof RegExp){var m=i.getRegExpAst(d),_=new p(y);return _.visit(m),_.found}else return n.find(d,function(v){return n.contains(y,v.charCodeAt(0))})!==void 0}r.canMatchCharCode=g}),tx=bt(r=>{"use strict";var e=r&&r.__extends||function(){var P=function(M,T){return P=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,j){k.__proto__=j}||function(k,j){for(var W in j)Object.prototype.hasOwnProperty.call(j,W)&&(k[W]=j[W])},P(M,T)};return function(M,T){if(typeof T!="function"&&T!==null)throw new TypeError("Class extends value "+String(T)+" is not a constructor or null");P(M,T);function k(){this.constructor=M}M.prototype=T===null?Object.create(T):(k.prototype=T.prototype,new k)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.charCodeToOptimizedIndex=r.minOptimizationVal=r.buildLineBreakIssueMessage=r.LineTerminatorOptimizedTester=r.isShortPattern=r.isCustomPattern=r.cloneEmptyGroups=r.performWarningRuntimeChecks=r.performRuntimeChecks=r.addStickyFlag=r.addStartOfInput=r.findUnreachablePatterns=r.findModesThatDoNotExist=r.findInvalidGroupType=r.findDuplicatePatterns=r.findUnsupportedFlags=r.findStartOfInputAnchor=r.findEmptyMatchRegExps=r.findEndOfInputAnchor=r.findInvalidPatterns=r.findMissingPatterns=r.validatePatterns=r.analyzeTokenTypes=r.enableSticky=r.disableSticky=r.SUPPORT_STICKY=r.MODES=r.DEFAULT_MODE=void 0;var t=_m(),n=Hf(),i=Wt(),s=xS(),o=Tm(),a="PATTERN";r.DEFAULT_MODE="defaultMode",r.MODES="modes",r.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function l(){r.SUPPORT_STICKY=!1}r.disableSticky=l;function c(){r.SUPPORT_STICKY=!0}r.enableSticky=c;function u(P,M){M=i.defaults(M,{useSticky:r.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(O,D){return D()}});var T=M.tracer;T("initCharCodeToOptimizedIndexMap",function(){G()});var k;T("Reject Lexer.NA",function(){k=i.reject(P,function(O){return O[a]===n.Lexer.NA})});var j=!1,W;T("Transform Patterns",function(){j=!1,W=i.map(k,function(O){var D=O[a];if(i.isRegExp(D)){var z=D.source;return z.length===1&&z!=="^"&&z!=="$"&&z!=="."&&!D.ignoreCase?z:z.length===2&&z[0]==="\\"&&!i.contains(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],z[1])?z[1]:M.useSticky?N(D):R(D)}else{if(i.isFunction(D))return j=!0,{exec:D};if(i.has(D,"exec"))return j=!0,D;if(typeof D=="string"){if(D.length===1)return D;var Q=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),ne=new RegExp(Q);return M.useSticky?N(ne):R(ne)}else throw Error("non exhaustive match")}})});var re,ce,me,w,ae;T("misc mapping",function(){re=i.map(k,function(O){return O.tokenTypeIdx}),ce=i.map(k,function(O){var D=O.GROUP;if(D!==n.Lexer.SKIPPED){if(i.isString(D))return D;if(i.isUndefined(D))return!1;throw Error("non exhaustive match")}}),me=i.map(k,function(O){var D=O.LONGER_ALT;if(D){var z=i.indexOf(k,D);return z}}),w=i.map(k,function(O){return O.PUSH_MODE}),ae=i.map(k,function(O){return i.has(O,"POP_MODE")})});var pe;T("Line Terminator Handling",function(){var O=ye(M.lineTerminatorCharacters);pe=i.map(k,function(D){return!1}),M.positionTracking!=="onlyOffset"&&(pe=i.map(k,function(D){if(i.has(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(q(D,O)===!1)return s.canMatchCharCode(O,D.PATTERN)}))});var ue,ee,$,ve;T("Misc Mapping #2",function(){ue=i.map(k,Y),ee=i.map(W,te),$=i.reduce(k,function(O,D){var z=D.GROUP;return i.isString(z)&&z!==n.Lexer.SKIPPED&&(O[z]=[]),O},{}),ve=i.map(W,function(O,D){return{pattern:W[D],longerAlt:me[D],canLineTerminator:pe[D],isCustom:ue[D],short:ee[D],group:ce[D],push:w[D],pop:ae[D],tokenTypeIdx:re[D],tokenType:k[D]}})});var H=!0,L=[];return M.safeMode||T("First Char Optimization",function(){L=i.reduce(k,function(O,D,z){if(typeof D.PATTERN=="string"){var Q=D.PATTERN.charCodeAt(0),ne=_e(Q);Te(O,ne,ve[z])}else if(i.isArray(D.START_CHARS_HINT)){var oe;i.forEach(D.START_CHARS_HINT,function(ge){var de=typeof ge=="string"?ge.charCodeAt(0):ge,Ee=_e(de);oe!==Ee&&(oe=Ee,Te(O,Ee,ve[z]))})}else if(i.isRegExp(D.PATTERN))if(D.PATTERN.unicode)H=!1,M.ensureOptimizations&&i.PRINT_ERROR(""+s.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. `)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var pe=s.getOptimizedStartCodesIndices(k.PATTERN,S.ensureOptimizations);i.isEmpty(pe)&&(me=!1),i.forEach(pe,function(fe){ye(ee,fe,he[J])})}else S.ensureOptimizations&&i.PRINT_ERROR(""+s.failedOptimizationPrefixMsg+(" TokenType: <"+k.name+`> is using a custom token pattern without providing parameter. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var he=s.getOptimizedStartCodesIndices(D.PATTERN,M.ensureOptimizations);i.isEmpty(he)&&(H=!1),i.forEach(he,function(ge){Te(O,ge,ve[z])})}else M.ensureOptimizations&&i.PRINT_ERROR(""+s.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. `)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),me=!1;return ee},[])}),b("ArrayPacking",function(){Te=i.packArray(Te)}),{emptyGroups:U,patternIdxToConfig:he,charCodeToPatternIdxToConfig:Te,hasCustom:q,canBeOptimized:me}}r.analyzeTokenTypes=u;function h(T,S){var b=[],V=p(T);b=b.concat(V.errors);var q=g(V.valid),Y=q.valid;return b=b.concat(q.errors),b=b.concat(f(Y)),b=b.concat(I(Y)),b=b.concat(C(Y,S)),b=b.concat(P(Y)),b}r.validatePatterns=h;function f(T){var S=[],b=i.filter(T,function(V){return i.isRegExp(V[a])});return S=S.concat(d(b)),S=S.concat(y(b)),S=S.concat(x(b)),S=S.concat(w(b)),S=S.concat(m(b)),S}function p(T){var S=i.filter(T,function(q){return!i.has(q,a)}),b=i.map(S,function(q){return{message:"Token Type: ->"+q.name+"<- missing static 'PATTERN' property",type:n.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[q]}}),V=i.difference(T,S);return{errors:b,valid:V}}r.findMissingPatterns=p;function g(T){var S=i.filter(T,function(q){var Y=q[a];return!i.isRegExp(Y)&&!i.isFunction(Y)&&!i.has(Y,"exec")&&!i.isString(Y)}),b=i.map(S,function(q){return{message:"Token Type: ->"+q.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:n.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[q]}}),V=i.difference(T,S);return{errors:b,valid:V}}r.findInvalidPatterns=g;var v=/[^\\][\$]/;function d(T){var S=function(q){e(Y,q);function Y(){var z=q!==null&&q.apply(this,arguments)||this;return z.found=!1,z}return Y.prototype.visitEndAnchor=function(z){this.found=!0},Y}(t.BaseRegExpVisitor),b=i.filter(T,function(q){var Y=q[a];try{var z=o.getRegExpAst(Y),X=new S;return X.visit(z),X.found}catch{return v.test(Y.source)}}),V=i.map(b,function(q){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+q.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:n.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[q]}});return V}r.findEndOfInputAnchor=d;function m(T){var S=i.filter(T,function(V){var q=V[a];return q.test("")}),b=i.map(S,function(V){return{message:"Token Type: ->"+V.name+"<- static 'PATTERN' must not match an empty string",type:n.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[V]}});return b}r.findEmptyMatchRegExps=m;var _=/[^\\[][\^]|^\^/;function y(T){var S=function(q){e(Y,q);function Y(){var z=q!==null&&q.apply(this,arguments)||this;return z.found=!1,z}return Y.prototype.visitStartAnchor=function(z){this.found=!0},Y}(t.BaseRegExpVisitor),b=i.filter(T,function(q){var Y=q[a];try{var z=o.getRegExpAst(Y),X=new S;return X.visit(z),X.found}catch{return _.test(Y.source)}}),V=i.map(b,function(q){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+q.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:n.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[q]}});return V}r.findStartOfInputAnchor=y;function x(T){var S=i.filter(T,function(V){var q=V[a];return q instanceof RegExp&&(q.multiline||q.global)}),b=i.map(S,function(V){return{message:"Token Type: ->"+V.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:n.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[V]}});return b}r.findUnsupportedFlags=x;function w(T){var S=[],b=i.map(T,function(Y){return i.reduce(T,function(z,X){return Y.PATTERN.source===X.PATTERN.source&&!i.contains(S,X)&&X.PATTERN!==n.Lexer.NA&&(S.push(X),z.push(X)),z},[])});b=i.compact(b);var V=i.filter(b,function(Y){return Y.length>1}),q=i.map(V,function(Y){var z=i.map(Y,function(se){return se.name}),X=i.first(Y).PATTERN;return{message:"The same RegExp pattern ->"+X+"<-"+("has been used in all of the following Token Types: "+z.join(", ")+" <-"),type:n.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:Y}});return q}r.findDuplicatePatterns=w;function I(T){var S=i.filter(T,function(V){if(!i.has(V,"GROUP"))return!1;var q=V.GROUP;return q!==n.Lexer.SKIPPED&&q!==n.Lexer.NA&&!i.isString(q)}),b=i.map(S,function(V){return{message:"Token Type: ->"+V.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:n.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[V]}});return b}r.findInvalidGroupType=I;function C(T,S){var b=i.filter(T,function(q){return q.PUSH_MODE!==void 0&&!i.contains(S,q.PUSH_MODE)}),V=i.map(b,function(q){var Y="Token Type: ->"+q.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+q.PUSH_MODE+"<-which does not exist";return{message:Y,type:n.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[q]}});return V}r.findModesThatDoNotExist=C;function P(T){var S=[],b=i.reduce(T,function(V,q,Y){var z=q.PATTERN;return z===n.Lexer.NA||(i.isString(z)?V.push({str:z,idx:Y,tokenType:q}):i.isRegExp(z)&&M(z)&&V.push({str:z.source,idx:Y,tokenType:q})),V},[]);return i.forEach(T,function(V,q){i.forEach(b,function(Y){var z=Y.str,X=Y.idx,se=Y.tokenType;if(q"+V.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;S.push({message:re,type:n.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[V,se]})}})}),S}r.findUnreachablePatterns=P;function E(T,S){if(i.isRegExp(S)){var b=S.exec(T);return b!==null&&b.index===0}else{if(i.isFunction(S))return S(T,0,[],{});if(i.has(S,"exec"))return S.exec(T,0,[],{});if(typeof S=="string")return S===T;throw Error("non exhaustive match")}}function M(T){var S=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return i.find(S,function(b){return T.source.indexOf(b)!==-1})===void 0}function L(T){var S=T.ignoreCase?"i":"";return new RegExp("^(?:"+T.source+")",S)}r.addStartOfInput=L;function N(T){var S=T.ignoreCase?"iy":"y";return new RegExp(""+T.source,S)}r.addStickyFlag=N;function O(T,S,b){var V=[];return i.has(T,r.DEFAULT_MODE)||V.push({message:"A MultiMode Lexer cannot be initialized without a <"+r.DEFAULT_MODE+`> property in its definition -`,type:n.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),i.has(T,r.MODES)||V.push({message:"A MultiMode Lexer cannot be initialized without a <"+r.MODES+`> property in its definition -`,type:n.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),i.has(T,r.MODES)&&i.has(T,r.DEFAULT_MODE)&&!i.has(T.modes,T.defaultMode)&&V.push({message:"A MultiMode Lexer cannot be initialized with a "+r.DEFAULT_MODE+": <"+T.defaultMode+`>which does not exist -`,type:n.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),i.has(T,r.MODES)&&i.forEach(T.modes,function(q,Y){i.forEach(q,function(z,X){i.isUndefined(z)&&V.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+Y+"> at index: <"+X+`> -`),type:n.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),V}r.performRuntimeChecks=O;function B(T,S,b){var V=[],q=!1,Y=i.compact(i.flatten(i.mapValues(T.modes,function(se){return se}))),z=i.reject(Y,function(se){return se[a]===n.Lexer.NA}),X=de(b);return S&&i.forEach(z,function(se){var re=W(se,X);if(re!==!1){var le=ae(se,re),xe={message:le,type:re.issue,tokenType:se};V.push(xe)}else i.has(se,"LINE_BREAKS")?se.LINE_BREAKS===!0&&(q=!0):s.canMatchCharCode(X,se.PATTERN)&&(q=!0)}),S&&!q&&V.push({message:`Warning: No LINE_BREAKS Found. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),H=!1;return O},[])}),T("ArrayPacking",function(){L=i.packArray(L)}),{emptyGroups:$,patternIdxToConfig:ve,charCodeToPatternIdxToConfig:L,hasCustom:j,canBeOptimized:H}}r.analyzeTokenTypes=u;function h(P,M){var T=[],k=p(P);T=T.concat(k.errors);var j=g(k.valid),W=j.valid;return T=T.concat(j.errors),T=T.concat(f(W)),T=T.concat(I(W)),T=T.concat(A(W,M)),T=T.concat(C(W)),T}r.validatePatterns=h;function f(P){var M=[],T=i.filter(P,function(k){return i.isRegExp(k[a])});return M=M.concat(d(T)),M=M.concat(v(T)),M=M.concat(x(T)),M=M.concat(S(T)),M=M.concat(m(T)),M}function p(P){var M=i.filter(P,function(j){return!i.has(j,a)}),T=i.map(M,function(j){return{message:"Token Type: ->"+j.name+"<- missing static 'PATTERN' property",type:n.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[j]}}),k=i.difference(P,M);return{errors:T,valid:k}}r.findMissingPatterns=p;function g(P){var M=i.filter(P,function(j){var W=j[a];return!i.isRegExp(W)&&!i.isFunction(W)&&!i.has(W,"exec")&&!i.isString(W)}),T=i.map(M,function(j){return{message:"Token Type: ->"+j.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:n.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[j]}}),k=i.difference(P,M);return{errors:T,valid:k}}r.findInvalidPatterns=g;var y=/[^\\][\$]/;function d(P){var M=function(j){e(W,j);function W(){var re=j!==null&&j.apply(this,arguments)||this;return re.found=!1,re}return W.prototype.visitEndAnchor=function(re){this.found=!0},W}(t.BaseRegExpVisitor),T=i.filter(P,function(j){var W=j[a];try{var re=o.getRegExpAst(W),ce=new M;return ce.visit(re),ce.found}catch{return y.test(W.source)}}),k=i.map(T,function(j){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+j.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:n.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[j]}});return k}r.findEndOfInputAnchor=d;function m(P){var M=i.filter(P,function(k){var j=k[a];return j.test("")}),T=i.map(M,function(k){return{message:"Token Type: ->"+k.name+"<- static 'PATTERN' must not match an empty string",type:n.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[k]}});return T}r.findEmptyMatchRegExps=m;var _=/[^\\[][\^]|^\^/;function v(P){var M=function(j){e(W,j);function W(){var re=j!==null&&j.apply(this,arguments)||this;return re.found=!1,re}return W.prototype.visitStartAnchor=function(re){this.found=!0},W}(t.BaseRegExpVisitor),T=i.filter(P,function(j){var W=j[a];try{var re=o.getRegExpAst(W),ce=new M;return ce.visit(re),ce.found}catch{return _.test(W.source)}}),k=i.map(T,function(j){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+j.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:n.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[j]}});return k}r.findStartOfInputAnchor=v;function x(P){var M=i.filter(P,function(k){var j=k[a];return j instanceof RegExp&&(j.multiline||j.global)}),T=i.map(M,function(k){return{message:"Token Type: ->"+k.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:n.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[k]}});return T}r.findUnsupportedFlags=x;function S(P){var M=[],T=i.map(P,function(W){return i.reduce(P,function(re,ce){return W.PATTERN.source===ce.PATTERN.source&&!i.contains(M,ce)&&ce.PATTERN!==n.Lexer.NA&&(M.push(ce),re.push(ce)),re},[])});T=i.compact(T);var k=i.filter(T,function(W){return W.length>1}),j=i.map(k,function(W){var re=i.map(W,function(me){return me.name}),ce=i.first(W).PATTERN;return{message:"The same RegExp pattern ->"+ce+"<-"+("has been used in all of the following Token Types: "+re.join(", ")+" <-"),type:n.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:W}});return j}r.findDuplicatePatterns=S;function I(P){var M=i.filter(P,function(k){if(!i.has(k,"GROUP"))return!1;var j=k.GROUP;return j!==n.Lexer.SKIPPED&&j!==n.Lexer.NA&&!i.isString(j)}),T=i.map(M,function(k){return{message:"Token Type: ->"+k.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:n.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[k]}});return T}r.findInvalidGroupType=I;function A(P,M){var T=i.filter(P,function(j){return j.PUSH_MODE!==void 0&&!i.contains(M,j.PUSH_MODE)}),k=i.map(T,function(j){var W="Token Type: ->"+j.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+j.PUSH_MODE+"<-which does not exist";return{message:W,type:n.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[j]}});return k}r.findModesThatDoNotExist=A;function C(P){var M=[],T=i.reduce(P,function(k,j,W){var re=j.PATTERN;return re===n.Lexer.NA||(i.isString(re)?k.push({str:re,idx:W,tokenType:j}):i.isRegExp(re)&&b(re)&&k.push({str:re.source,idx:W,tokenType:j})),k},[]);return i.forEach(P,function(k,j){i.forEach(T,function(W){var re=W.str,ce=W.idx,me=W.tokenType;if(j"+k.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;M.push({message:w,type:n.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[k,me]})}})}),M}r.findUnreachablePatterns=C;function E(P,M){if(i.isRegExp(M)){var T=M.exec(P);return T!==null&&T.index===0}else{if(i.isFunction(M))return M(P,0,[],{});if(i.has(M,"exec"))return M.exec(P,0,[],{});if(typeof M=="string")return M===P;throw Error("non exhaustive match")}}function b(P){var M=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return i.find(M,function(T){return P.source.indexOf(T)!==-1})===void 0}function R(P){var M=P.ignoreCase?"i":"";return new RegExp("^(?:"+P.source+")",M)}r.addStartOfInput=R;function N(P){var M=P.ignoreCase?"iy":"y";return new RegExp(""+P.source,M)}r.addStickyFlag=N;function B(P,M,T){var k=[];return i.has(P,r.DEFAULT_MODE)||k.push({message:"A MultiMode Lexer cannot be initialized without a <"+r.DEFAULT_MODE+`> property in its definition +`,type:n.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),i.has(P,r.MODES)||k.push({message:"A MultiMode Lexer cannot be initialized without a <"+r.MODES+`> property in its definition +`,type:n.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),i.has(P,r.MODES)&&i.has(P,r.DEFAULT_MODE)&&!i.has(P.modes,P.defaultMode)&&k.push({message:"A MultiMode Lexer cannot be initialized with a "+r.DEFAULT_MODE+": <"+P.defaultMode+`>which does not exist +`,type:n.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),i.has(P,r.MODES)&&i.forEach(P.modes,function(j,W){i.forEach(j,function(re,ce){i.isUndefined(re)&&k.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+W+"> at index: <"+ce+`> +`),type:n.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),k}r.performRuntimeChecks=B;function V(P,M,T){var k=[],j=!1,W=i.compact(i.flatten(i.mapValues(P.modes,function(me){return me}))),re=i.reject(W,function(me){return me[a]===n.Lexer.NA}),ce=ye(T);return M&&i.forEach(re,function(me){var w=q(me,ce);if(w!==!1){var ae=le(me,w),pe={message:ae,type:w.issue,tokenType:me};k.push(pe)}else i.has(me,"LINE_BREAKS")?me.LINE_BREAKS===!0&&(j=!0):s.canMatchCharCode(ce,me.PATTERN)&&(j=!0)}),M&&!j&&k.push({message:`Warning: No LINE_BREAKS Found. This Lexer has been defined to track line and column information, But none of the Token Types can be identified as matching a line terminator. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:n.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),V}r.performWarningRuntimeChecks=B;function ie(T){var S={},b=i.keys(T);return i.forEach(b,function(V){var q=T[V];if(i.isArray(q))S[V]=[];else throw Error("non exhaustive match")}),S}r.cloneEmptyGroups=ie;function $(T){var S=T.PATTERN;if(i.isRegExp(S))return!1;if(i.isFunction(S)||i.has(S,"exec"))return!0;if(i.isString(S))return!1;throw Error("non exhaustive match")}r.isCustomPattern=$;function te(T){return i.isString(T)&&T.length===1?T.charCodeAt(0):!1}r.isShortPattern=te,r.LineTerminatorOptimizedTester={test:function(T){for(var S=T.length,b=this.lastIndex;b Token Type -`)+(" Root cause: "+S.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(S.issue===n.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+T.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}r.buildLineBreakIssueMessage=ae;function de(T){var S=i.map(T,function(b){return i.isString(b)&&b.length>0?b.charCodeAt(0):b});return S}function ye(T,S,b){T[S]===void 0?T[S]=[b]:T[S].push(b)}r.minOptimizationVal=256;var Me=[];function ve(T){return T255?255+~~(T/255):T}}}),tc=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isTokenType=r.hasExtendingTokensTypesMapProperty=r.hasExtendingTokensTypesProperty=r.hasCategoriesProperty=r.hasShortKeyProperty=r.singleAssignCategoriesToksMap=r.assignCategoriesMapProp=r.assignCategoriesTokensProp=r.assignTokenDefaultProps=r.expandCategories=r.augmentTokenTypes=r.tokenIdxToClass=r.tokenShortNameIdx=r.tokenStructuredMatcherNoCategories=r.tokenStructuredMatcher=void 0;var e=Ut();function t(v,d){var m=v.tokenTypeIdx;return m===d.tokenTypeIdx?!0:d.isParent===!0&&d.categoryMatchesMap[m]===!0}r.tokenStructuredMatcher=t;function n(v,d){return v.tokenTypeIdx===d.tokenTypeIdx}r.tokenStructuredMatcherNoCategories=n,r.tokenShortNameIdx=1,r.tokenIdxToClass={};function i(v){var d=s(v);o(d),l(d),a(d),e.forEach(d,function(m){m.isParent=m.categoryMatches.length>0})}r.augmentTokenTypes=i;function s(v){for(var d=e.cloneArr(v),m=v,_=!0;_;){m=e.compact(e.flatten(e.map(m,function(x){return x.CATEGORIES})));var y=e.difference(m,d);d=d.concat(y),e.isEmpty(y)?_=!1:m=y}return d}r.expandCategories=s;function o(v){e.forEach(v,function(d){u(d)||(r.tokenIdxToClass[r.tokenShortNameIdx]=d,d.tokenTypeIdx=r.tokenShortNameIdx++),h(d)&&!e.isArray(d.CATEGORIES)&&(d.CATEGORIES=[d.CATEGORIES]),h(d)||(d.CATEGORIES=[]),f(d)||(d.categoryMatches=[]),p(d)||(d.categoryMatchesMap={})})}r.assignTokenDefaultProps=o;function a(v){e.forEach(v,function(d){d.categoryMatches=[],e.forEach(d.categoryMatchesMap,function(m,_){d.categoryMatches.push(r.tokenIdxToClass[_].tokenTypeIdx)})})}r.assignCategoriesTokensProp=a;function l(v){e.forEach(v,function(d){c([],d)})}r.assignCategoriesMapProp=l;function c(v,d){e.forEach(v,function(m){d.categoryMatchesMap[m.tokenTypeIdx]=!0}),e.forEach(d.CATEGORIES,function(m){var _=v.concat(d);e.contains(_,m)||c(_,m)})}r.singleAssignCategoriesToksMap=c;function u(v){return e.has(v,"tokenTypeIdx")}r.hasShortKeyProperty=u;function h(v){return e.has(v,"CATEGORIES")}r.hasCategoriesProperty=h;function f(v){return e.has(v,"categoryMatches")}r.hasExtendingTokensTypesProperty=f;function p(v){return e.has(v,"categoryMatchesMap")}r.hasExtendingTokensTypesMapProperty=p;function g(v){return e.has(v,"tokenTypeIdx")}r.isTokenType=g}),W0=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defaultLexerErrorProvider=void 0,r.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(e){return"Unable to pop Lexer Mode after encountering Token ->"+e.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(e,t,n,i,s){return"unexpected character: ->"+e.charAt(t)+"<- at offset: "+t+","+(" skipped "+n+" characters.")}}}),Ah=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Lexer=r.LexerDefinitionErrorType=void 0;var e=H0(),t=Ut(),n=tc(),i=W0(),s=sp(),o;(function(c){c[c.MISSING_PATTERN=0]="MISSING_PATTERN",c[c.INVALID_PATTERN=1]="INVALID_PATTERN",c[c.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",c[c.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",c[c.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",c[c.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",c[c.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",c[c.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",c[c.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",c[c.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",c[c.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",c[c.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",c[c.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",c[c.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",c[c.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",c[c.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",c[c.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(o=r.LexerDefinitionErrorType||(r.LexerDefinitionErrorType={}));var a={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` + for details.`,type:n.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),k}r.performWarningRuntimeChecks=V;function ie(P){var M={},T=i.keys(P);return i.forEach(T,function(k){var j=P[k];if(i.isArray(j))M[k]=[];else throw Error("non exhaustive match")}),M}r.cloneEmptyGroups=ie;function Y(P){var M=P.PATTERN;if(i.isRegExp(M))return!1;if(i.isFunction(M)||i.has(M,"exec"))return!0;if(i.isString(M))return!1;throw Error("non exhaustive match")}r.isCustomPattern=Y;function te(P){return i.isString(P)&&P.length===1?P.charCodeAt(0):!1}r.isShortPattern=te,r.LineTerminatorOptimizedTester={test:function(P){for(var M=P.length,T=this.lastIndex;T Token Type +`)+(" Root cause: "+M.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(M.issue===n.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+P.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}r.buildLineBreakIssueMessage=le;function ye(P){var M=i.map(P,function(T){return i.isString(T)&&T.length>0?T.charCodeAt(0):T});return M}function Te(P,M,T){P[M]===void 0?P[M]=[T]:P[M].push(T)}r.minOptimizationVal=256;var Ae=[];function _e(P){return P255?255+~~(P/255):P}}}),Vc=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isTokenType=r.hasExtendingTokensTypesMapProperty=r.hasExtendingTokensTypesProperty=r.hasCategoriesProperty=r.hasShortKeyProperty=r.singleAssignCategoriesToksMap=r.assignCategoriesMapProp=r.assignCategoriesTokensProp=r.assignTokenDefaultProps=r.expandCategories=r.augmentTokenTypes=r.tokenIdxToClass=r.tokenShortNameIdx=r.tokenStructuredMatcherNoCategories=r.tokenStructuredMatcher=void 0;var e=Wt();function t(y,d){var m=y.tokenTypeIdx;return m===d.tokenTypeIdx?!0:d.isParent===!0&&d.categoryMatchesMap[m]===!0}r.tokenStructuredMatcher=t;function n(y,d){return y.tokenTypeIdx===d.tokenTypeIdx}r.tokenStructuredMatcherNoCategories=n,r.tokenShortNameIdx=1,r.tokenIdxToClass={};function i(y){var d=s(y);o(d),l(d),a(d),e.forEach(d,function(m){m.isParent=m.categoryMatches.length>0})}r.augmentTokenTypes=i;function s(y){for(var d=e.cloneArr(y),m=y,_=!0;_;){m=e.compact(e.flatten(e.map(m,function(x){return x.CATEGORIES})));var v=e.difference(m,d);d=d.concat(v),e.isEmpty(v)?_=!1:m=v}return d}r.expandCategories=s;function o(y){e.forEach(y,function(d){u(d)||(r.tokenIdxToClass[r.tokenShortNameIdx]=d,d.tokenTypeIdx=r.tokenShortNameIdx++),h(d)&&!e.isArray(d.CATEGORIES)&&(d.CATEGORIES=[d.CATEGORIES]),h(d)||(d.CATEGORIES=[]),f(d)||(d.categoryMatches=[]),p(d)||(d.categoryMatchesMap={})})}r.assignTokenDefaultProps=o;function a(y){e.forEach(y,function(d){d.categoryMatches=[],e.forEach(d.categoryMatchesMap,function(m,_){d.categoryMatches.push(r.tokenIdxToClass[_].tokenTypeIdx)})})}r.assignCategoriesTokensProp=a;function l(y){e.forEach(y,function(d){c([],d)})}r.assignCategoriesMapProp=l;function c(y,d){e.forEach(y,function(m){d.categoryMatchesMap[m.tokenTypeIdx]=!0}),e.forEach(d.CATEGORIES,function(m){var _=y.concat(d);e.contains(_,m)||c(_,m)})}r.singleAssignCategoriesToksMap=c;function u(y){return e.has(y,"tokenTypeIdx")}r.hasShortKeyProperty=u;function h(y){return e.has(y,"CATEGORIES")}r.hasCategoriesProperty=h;function f(y){return e.has(y,"categoryMatches")}r.hasExtendingTokensTypesProperty=f;function p(y){return e.has(y,"categoryMatchesMap")}r.hasExtendingTokensTypesMapProperty=p;function g(y){return e.has(y,"tokenTypeIdx")}r.isTokenType=g}),nx=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defaultLexerErrorProvider=void 0,r.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(e){return"Unable to pop Lexer Mode after encountering Token ->"+e.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(e,t,n,i,s){return"unexpected character: ->"+e.charAt(t)+"<- at offset: "+t+","+(" skipped "+n+" characters.")}}}),Hf=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Lexer=r.LexerDefinitionErrorType=void 0;var e=tx(),t=Wt(),n=Vc(),i=nx(),s=Tm(),o;(function(c){c[c.MISSING_PATTERN=0]="MISSING_PATTERN",c[c.INVALID_PATTERN=1]="INVALID_PATTERN",c[c.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",c[c.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",c[c.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",c[c.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",c[c.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",c[c.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",c[c.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",c[c.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",c[c.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",c[c.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",c[c.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",c[c.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",c[c.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",c[c.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",c[c.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(o=r.LexerDefinitionErrorType||(r.LexerDefinitionErrorType={}));var a={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` `,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:i.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(a);var l=function(){function c(u,h){var f=this;if(h===void 0&&(h=a),this.lexerDefinition=u,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof h=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=t.merge(a,h);var p=this.config.traceInitPerf;p===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof p=="number"&&(this.traceInitMaxIdent=p,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var g,v=!0;f.TRACE_INIT("Lexer Config handling",function(){if(f.config.lineTerminatorsPattern===a.lineTerminatorsPattern)f.config.lineTerminatorsPattern=e.LineTerminatorOptimizedTester;else if(f.config.lineTerminatorCharacters===a.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(h.safeMode&&h.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');f.trackStartLines=/full|onlyStart/i.test(f.config.positionTracking),f.trackEndLines=/full/i.test(f.config.positionTracking),t.isArray(u)?(g={modes:{}},g.modes[e.DEFAULT_MODE]=t.cloneArr(u),g[e.DEFAULT_MODE]=e.DEFAULT_MODE):(v=!1,g=t.cloneObj(u))}),f.config.skipValidations===!1&&(f.TRACE_INIT("performRuntimeChecks",function(){f.lexerDefinitionErrors=f.lexerDefinitionErrors.concat(e.performRuntimeChecks(g,f.trackStartLines,f.config.lineTerminatorCharacters))}),f.TRACE_INIT("performWarningRuntimeChecks",function(){f.lexerDefinitionWarning=f.lexerDefinitionWarning.concat(e.performWarningRuntimeChecks(g,f.trackStartLines,f.config.lineTerminatorCharacters))})),g.modes=g.modes?g.modes:{},t.forEach(g.modes,function(y,x){g.modes[x]=t.reject(y,function(w){return t.isUndefined(w)})});var d=t.keys(g.modes);if(t.forEach(g.modes,function(y,x){f.TRACE_INIT("Mode: <"+x+"> processing",function(){if(f.modes.push(x),f.config.skipValidations===!1&&f.TRACE_INIT("validatePatterns",function(){f.lexerDefinitionErrors=f.lexerDefinitionErrors.concat(e.validatePatterns(y,d))}),t.isEmpty(f.lexerDefinitionErrors)){n.augmentTokenTypes(y);var w;f.TRACE_INIT("analyzeTokenTypes",function(){w=e.analyzeTokenTypes(y,{lineTerminatorCharacters:f.config.lineTerminatorCharacters,positionTracking:h.positionTracking,ensureOptimizations:h.ensureOptimizations,safeMode:h.safeMode,tracer:f.TRACE_INIT.bind(f)})}),f.patternIdxToConfig[x]=w.patternIdxToConfig,f.charCodeToPatternIdxToConfig[x]=w.charCodeToPatternIdxToConfig,f.emptyGroups=t.merge(f.emptyGroups,w.emptyGroups),f.hasCustom=w.hasCustom||f.hasCustom,f.canModeBeOptimized[x]=w.canBeOptimized}})}),f.defaultMode=g.defaultMode,!t.isEmpty(f.lexerDefinitionErrors)&&!f.config.deferDefinitionErrorsHandling){var m=t.map(f.lexerDefinitionErrors,function(y){return y.message}),_=m.join(`----------------------- +a boolean 2nd argument is no longer supported`);this.config=t.merge(a,h);var p=this.config.traceInitPerf;p===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof p=="number"&&(this.traceInitMaxIdent=p,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var g,y=!0;f.TRACE_INIT("Lexer Config handling",function(){if(f.config.lineTerminatorsPattern===a.lineTerminatorsPattern)f.config.lineTerminatorsPattern=e.LineTerminatorOptimizedTester;else if(f.config.lineTerminatorCharacters===a.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(h.safeMode&&h.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');f.trackStartLines=/full|onlyStart/i.test(f.config.positionTracking),f.trackEndLines=/full/i.test(f.config.positionTracking),t.isArray(u)?(g={modes:{}},g.modes[e.DEFAULT_MODE]=t.cloneArr(u),g[e.DEFAULT_MODE]=e.DEFAULT_MODE):(y=!1,g=t.cloneObj(u))}),f.config.skipValidations===!1&&(f.TRACE_INIT("performRuntimeChecks",function(){f.lexerDefinitionErrors=f.lexerDefinitionErrors.concat(e.performRuntimeChecks(g,f.trackStartLines,f.config.lineTerminatorCharacters))}),f.TRACE_INIT("performWarningRuntimeChecks",function(){f.lexerDefinitionWarning=f.lexerDefinitionWarning.concat(e.performWarningRuntimeChecks(g,f.trackStartLines,f.config.lineTerminatorCharacters))})),g.modes=g.modes?g.modes:{},t.forEach(g.modes,function(v,x){g.modes[x]=t.reject(v,function(S){return t.isUndefined(S)})});var d=t.keys(g.modes);if(t.forEach(g.modes,function(v,x){f.TRACE_INIT("Mode: <"+x+"> processing",function(){if(f.modes.push(x),f.config.skipValidations===!1&&f.TRACE_INIT("validatePatterns",function(){f.lexerDefinitionErrors=f.lexerDefinitionErrors.concat(e.validatePatterns(v,d))}),t.isEmpty(f.lexerDefinitionErrors)){n.augmentTokenTypes(v);var S;f.TRACE_INIT("analyzeTokenTypes",function(){S=e.analyzeTokenTypes(v,{lineTerminatorCharacters:f.config.lineTerminatorCharacters,positionTracking:h.positionTracking,ensureOptimizations:h.ensureOptimizations,safeMode:h.safeMode,tracer:f.TRACE_INIT.bind(f)})}),f.patternIdxToConfig[x]=S.patternIdxToConfig,f.charCodeToPatternIdxToConfig[x]=S.charCodeToPatternIdxToConfig,f.emptyGroups=t.merge(f.emptyGroups,S.emptyGroups),f.hasCustom=S.hasCustom||f.hasCustom,f.canModeBeOptimized[x]=S.canBeOptimized}})}),f.defaultMode=g.defaultMode,!t.isEmpty(f.lexerDefinitionErrors)&&!f.config.deferDefinitionErrorsHandling){var m=t.map(f.lexerDefinitionErrors,function(v){return v.message}),_=m.join(`----------------------- `);throw new Error(`Errors detected in definition of Lexer: -`+_)}t.forEach(f.lexerDefinitionWarning,function(y){t.PRINT_WARNING(y.message)}),f.TRACE_INIT("Choosing sub-methods implementations",function(){if(e.SUPPORT_STICKY?(f.chopInput=t.IDENTITY,f.match=f.matchWithTest):(f.updateLastIndex=t.NOOP,f.match=f.matchWithExec),v&&(f.handleModes=t.NOOP),f.trackStartLines===!1&&(f.computeNewColumn=t.IDENTITY),f.trackEndLines===!1&&(f.updateTokenEndLineColumnLocation=t.NOOP),/full/i.test(f.config.positionTracking))f.createTokenInstance=f.createFullToken;else if(/onlyStart/i.test(f.config.positionTracking))f.createTokenInstance=f.createStartOnlyToken;else if(/onlyOffset/i.test(f.config.positionTracking))f.createTokenInstance=f.createOffsetOnlyToken;else throw Error('Invalid config option: "'+f.config.positionTracking+'"');f.hasCustom?(f.addToken=f.addTokenUsingPush,f.handlePayload=f.handlePayloadWithCustom):(f.addToken=f.addTokenUsingMemberAccess,f.handlePayload=f.handlePayloadNoCustom)}),f.TRACE_INIT("Failed Optimization Warnings",function(){var y=t.reduce(f.canModeBeOptimized,function(x,w,I){return w===!1&&x.push(I),x},[]);if(h.ensureOptimizations&&!t.isEmpty(y))throw Error("Lexer Modes: < "+y.join(", ")+` > cannot be optimized. +`+_)}t.forEach(f.lexerDefinitionWarning,function(v){t.PRINT_WARNING(v.message)}),f.TRACE_INIT("Choosing sub-methods implementations",function(){if(e.SUPPORT_STICKY?(f.chopInput=t.IDENTITY,f.match=f.matchWithTest):(f.updateLastIndex=t.NOOP,f.match=f.matchWithExec),y&&(f.handleModes=t.NOOP),f.trackStartLines===!1&&(f.computeNewColumn=t.IDENTITY),f.trackEndLines===!1&&(f.updateTokenEndLineColumnLocation=t.NOOP),/full/i.test(f.config.positionTracking))f.createTokenInstance=f.createFullToken;else if(/onlyStart/i.test(f.config.positionTracking))f.createTokenInstance=f.createStartOnlyToken;else if(/onlyOffset/i.test(f.config.positionTracking))f.createTokenInstance=f.createOffsetOnlyToken;else throw Error('Invalid config option: "'+f.config.positionTracking+'"');f.hasCustom?(f.addToken=f.addTokenUsingPush,f.handlePayload=f.handlePayloadWithCustom):(f.addToken=f.addTokenUsingMemberAccess,f.handlePayload=f.handlePayloadNoCustom)}),f.TRACE_INIT("Failed Optimization Warnings",function(){var v=t.reduce(f.canModeBeOptimized,function(x,S,I){return S===!1&&x.push(I),x},[]);if(h.ensureOptimizations&&!t.isEmpty(v))throw Error("Lexer Modes: < "+v.join(", ")+` > cannot be optimized. Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),f.TRACE_INIT("clearRegExpParserCache",function(){s.clearRegExpParserCache()}),f.TRACE_INIT("toFastProperties",function(){t.toFastProperties(f)})})}return c.prototype.tokenize=function(u,h){if(h===void 0&&(h=this.defaultMode),!t.isEmpty(this.lexerDefinitionErrors)){var f=t.map(this.lexerDefinitionErrors,function(v){return v.message}),p=f.join(`----------------------- + Or inspect the console log for details on how to resolve these issues.`)}),f.TRACE_INIT("clearRegExpParserCache",function(){s.clearRegExpParserCache()}),f.TRACE_INIT("toFastProperties",function(){t.toFastProperties(f)})})}return c.prototype.tokenize=function(u,h){if(h===void 0&&(h=this.defaultMode),!t.isEmpty(this.lexerDefinitionErrors)){var f=t.map(this.lexerDefinitionErrors,function(y){return y.message}),p=f.join(`----------------------- `);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+p)}var g=this.tokenizeInternal(u,h);return g},c.prototype.tokenizeInternal=function(u,h){var f=this,p,g,v,d,m,_,y,x,w,I,C,P,E,M,L,N=u,O=N.length,B=0,ie=0,$=this.hasCustom?0:Math.floor(u.length/10),te=new Array($),W=[],ae=this.trackStartLines?1:void 0,de=this.trackStartLines?1:void 0,ye=e.cloneEmptyGroups(this.emptyGroups),Me=this.trackStartLines,ve=this.config.lineTerminatorsPattern,R=0,T=[],S=[],b=[],V=[];Object.freeze(V);var q=void 0;function Y(){return T}function z(fe){var ge=e.charCodeToOptimizedIndex(fe),Ae=S[ge];return Ae===void 0?V:Ae}var X=function(fe){if(b.length===1&&fe.tokenType.PUSH_MODE===void 0){var ge=f.config.errorMessageProvider.buildUnableToPopLexerModeMessage(fe);W.push({offset:fe.startOffset,line:fe.startLine!==void 0?fe.startLine:void 0,column:fe.startColumn!==void 0?fe.startColumn:void 0,length:fe.image.length,message:ge})}else{b.pop();var Ae=t.last(b);T=f.patternIdxToConfig[Ae],S=f.charCodeToPatternIdxToConfig[Ae],R=T.length;var Ie=f.canModeBeOptimized[Ae]&&f.config.safeMode===!1;S&&Ie?q=z:q=Y}};function se(fe){b.push(fe),S=this.charCodeToPatternIdxToConfig[fe],T=this.patternIdxToConfig[fe],R=T.length,R=T.length;var ge=this.canModeBeOptimized[fe]&&this.config.safeMode===!1;S&&ge?q=z:q=Y}se.call(this,h);for(var re;Bm.length&&(m=v,_=y,re=he)}break}}if(m!==null){if(x=m.length,w=re.group,w!==void 0&&(I=re.tokenTypeIdx,C=this.createTokenInstance(m,B,I,re.tokenType,ae,de,x),this.handlePayload(C,_),w===!1?ie=this.addToken(te,ie,C):ye[w].push(C)),u=this.chopInput(u,x),B=B+x,de=this.computeNewColumn(de,x),Me===!0&&re.canLineTerminator===!0){var Te=0,ee=void 0,k=void 0;ve.lastIndex=0;do ee=ve.test(m),ee===!0&&(k=ve.lastIndex-1,Te++);while(ee===!0);Te!==0&&(ae=ae+Te,de=x-k,this.updateTokenEndLineColumnLocation(C,w,k,Te,ae,de,x))}this.handleModes(re,X,se,C)}else{for(var J=B,ue=ae,Z=de,ce=!1;!ce&&B <"+u+">");var p=t.timer(h),g=p.time,v=p.value,d=g>10?console.warn:console.log;return this.traceInitIndent time: "+g+"ms"),this.traceInitIndent--,v}else return h()},c.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",c.NA=/NOT_APPLICABLE/,c}();r.Lexer=l}),io=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.tokenMatcher=r.createTokenInstance=r.EOF=r.createToken=r.hasTokenLabel=r.tokenName=r.tokenLabel=void 0;var e=Ut(),t=Ah(),n=tc();function i(x){return o(x)?x.LABEL:x.name}r.tokenLabel=i;function s(x){return x.name}r.tokenName=s;function o(x){return e.isString(x.LABEL)&&x.LABEL!==""}r.hasTokenLabel=o;var a="parent",l="categories",c="label",u="group",h="push_mode",f="pop_mode",p="longer_alt",g="line_breaks",v="start_chars_hint";function d(x){return m(x)}r.createToken=d;function m(x){var w=x.pattern,I={};if(I.name=x.name,e.isUndefined(w)||(I.PATTERN=w),e.has(x,a))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return e.has(x,l)&&(I.CATEGORIES=x[l]),n.augmentTokenTypes([I]),e.has(x,c)&&(I.LABEL=x[c]),e.has(x,u)&&(I.GROUP=x[u]),e.has(x,f)&&(I.POP_MODE=x[f]),e.has(x,h)&&(I.PUSH_MODE=x[h]),e.has(x,p)&&(I.LONGER_ALT=x[p]),e.has(x,g)&&(I.LINE_BREAKS=x[g]),e.has(x,v)&&(I.START_CHARS_HINT=x[v]),I}r.EOF=d({name:"EOF",pattern:t.Lexer.NA}),n.augmentTokenTypes([r.EOF]);function _(x,w,I,C,P,E,M,L){return{image:w,startOffset:I,endOffset:C,startLine:P,endLine:E,startColumn:M,endColumn:L,tokenTypeIdx:x.tokenTypeIdx,tokenType:x}}r.createTokenInstance=_;function y(x,w){return n.tokenStructuredMatcher(x,w)}r.tokenMatcher=y}),xi=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var m=function(_,y){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(x,w){x.__proto__=w}||function(x,w){for(var I in w)Object.prototype.hasOwnProperty.call(w,I)&&(x[I]=w[I])},m(_,y)};return function(_,y){if(typeof y!="function"&&y!==null)throw new TypeError("Class extends value "+String(y)+" is not a constructor or null");m(_,y);function x(){this.constructor=_}_.prototype=y===null?Object.create(y):(x.prototype=y.prototype,new x)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.serializeProduction=r.serializeGrammar=r.Terminal=r.Alternation=r.RepetitionWithSeparator=r.Repetition=r.RepetitionMandatoryWithSeparator=r.RepetitionMandatory=r.Option=r.Alternative=r.Rule=r.NonTerminal=r.AbstractProduction=void 0;var t=Ut(),n=io(),i=function(){function m(_){this._definition=_}return Object.defineProperty(m.prototype,"definition",{get:function(){return this._definition},set:function(_){this._definition=_},enumerable:!1,configurable:!0}),m.prototype.accept=function(_){_.visit(this),t.forEach(this.definition,function(y){y.accept(_)})},m}();r.AbstractProduction=i;var s=function(m){e(_,m);function _(y){var x=m.call(this,[])||this;return x.idx=1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return Object.defineProperty(_.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(y){},enumerable:!1,configurable:!0}),_.prototype.accept=function(y){y.visit(this)},_}(i);r.NonTerminal=s;var o=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.orgText="",t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.Rule=o;var a=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.ignoreAmbiguities=!1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.Alternative=a;var l=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.idx=1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.Option=l;var c=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.idx=1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.RepetitionMandatory=c;var u=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.idx=1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.RepetitionMandatoryWithSeparator=u;var h=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.idx=1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.Repetition=h;var f=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.idx=1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return _}(i);r.RepetitionWithSeparator=f;var p=function(m){e(_,m);function _(y){var x=m.call(this,y.definition)||this;return x.idx=1,x.ignoreAmbiguities=!1,x.hasPredicates=!1,t.assign(x,t.pick(y,function(w){return w!==void 0})),x}return Object.defineProperty(_.prototype,"definition",{get:function(){return this._definition},set:function(y){this._definition=y},enumerable:!1,configurable:!0}),_}(i);r.Alternation=p;var g=function(){function m(_){this.idx=1,t.assign(this,t.pick(_,function(y){return y!==void 0}))}return m.prototype.accept=function(_){_.visit(this)},m}();r.Terminal=g;function v(m){return t.map(m,d)}r.serializeGrammar=v;function d(m){function _(w){return t.map(w,d)}if(m instanceof s)return{type:"NonTerminal",name:m.nonTerminalName,idx:m.idx};if(m instanceof a)return{type:"Alternative",definition:_(m.definition)};if(m instanceof l)return{type:"Option",idx:m.idx,definition:_(m.definition)};if(m instanceof c)return{type:"RepetitionMandatory",idx:m.idx,definition:_(m.definition)};if(m instanceof u)return{type:"RepetitionMandatoryWithSeparator",idx:m.idx,separator:d(new g({terminalType:m.separator})),definition:_(m.definition)};if(m instanceof f)return{type:"RepetitionWithSeparator",idx:m.idx,separator:d(new g({terminalType:m.separator})),definition:_(m.definition)};if(m instanceof h)return{type:"Repetition",idx:m.idx,definition:_(m.definition)};if(m instanceof p)return{type:"Alternation",idx:m.idx,definition:_(m.definition)};if(m instanceof g){var y={type:"Terminal",name:m.terminalType.name,label:n.tokenLabel(m.terminalType),idx:m.idx},x=m.terminalType.PATTERN;return m.terminalType.PATTERN&&(y.pattern=t.isRegExp(x)?x.source:x),y}else{if(m instanceof o)return{type:"Rule",name:m.name,orgText:m.orgText,definition:_(m.definition)};throw Error("non exhaustive match")}}r.serializeProduction=d}),op=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RestWalker=void 0;var e=Ut(),t=xi(),n=function(){function s(){}return s.prototype.walk=function(o,a){var l=this;a===void 0&&(a=[]),e.forEach(o.definition,function(c,u){var h=e.drop(o.definition,u+1);if(c instanceof t.NonTerminal)l.walkProdRef(c,h,a);else if(c instanceof t.Terminal)l.walkTerminal(c,h,a);else if(c instanceof t.Alternative)l.walkFlat(c,h,a);else if(c instanceof t.Option)l.walkOption(c,h,a);else if(c instanceof t.RepetitionMandatory)l.walkAtLeastOne(c,h,a);else if(c instanceof t.RepetitionMandatoryWithSeparator)l.walkAtLeastOneSep(c,h,a);else if(c instanceof t.RepetitionWithSeparator)l.walkManySep(c,h,a);else if(c instanceof t.Repetition)l.walkMany(c,h,a);else if(c instanceof t.Alternation)l.walkOr(c,h,a);else throw Error("non exhaustive match")})},s.prototype.walkTerminal=function(o,a,l){},s.prototype.walkProdRef=function(o,a,l){},s.prototype.walkFlat=function(o,a,l){var c=a.concat(l);this.walk(o,c)},s.prototype.walkOption=function(o,a,l){var c=a.concat(l);this.walk(o,c)},s.prototype.walkAtLeastOne=function(o,a,l){var c=[new t.Option({definition:o.definition})].concat(a,l);this.walk(o,c)},s.prototype.walkAtLeastOneSep=function(o,a,l){var c=i(o,a,l);this.walk(o,c)},s.prototype.walkMany=function(o,a,l){var c=[new t.Option({definition:o.definition})].concat(a,l);this.walk(o,c)},s.prototype.walkManySep=function(o,a,l){var c=i(o,a,l);this.walk(o,c)},s.prototype.walkOr=function(o,a,l){var c=this,u=a.concat(l);e.forEach(o.definition,function(h){var f=new t.Alternative({definition:[h]});c.walk(f,u)})},s}();r.RestWalker=n;function i(s,o,a){var l=[new t.Option({definition:[new t.Terminal({terminalType:s.separator})].concat(s.definition)})],c=l.concat(o,a);return c}}),nc=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.GAstVisitor=void 0;var e=xi(),t=function(){function n(){}return n.prototype.visit=function(i){var s=i;switch(s.constructor){case e.NonTerminal:return this.visitNonTerminal(s);case e.Alternative:return this.visitAlternative(s);case e.Option:return this.visitOption(s);case e.RepetitionMandatory:return this.visitRepetitionMandatory(s);case e.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(s);case e.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(s);case e.Repetition:return this.visitRepetition(s);case e.Alternation:return this.visitAlternation(s);case e.Terminal:return this.visitTerminal(s);case e.Rule:return this.visitRule(s);default:throw Error("non exhaustive match")}},n.prototype.visitNonTerminal=function(i){},n.prototype.visitAlternative=function(i){},n.prototype.visitOption=function(i){},n.prototype.visitRepetition=function(i){},n.prototype.visitRepetitionMandatory=function(i){},n.prototype.visitRepetitionMandatoryWithSeparator=function(i){},n.prototype.visitRepetitionWithSeparator=function(i){},n.prototype.visitAlternation=function(i){},n.prototype.visitTerminal=function(i){},n.prototype.visitRule=function(i){},n}();r.GAstVisitor=t}),wh=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var f=function(p,g){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,d){v.__proto__=d}||function(v,d){for(var m in d)Object.prototype.hasOwnProperty.call(d,m)&&(v[m]=d[m])},f(p,g)};return function(p,g){if(typeof g!="function"&&g!==null)throw new TypeError("Class extends value "+String(g)+" is not a constructor or null");f(p,g);function v(){this.constructor=p}p.prototype=g===null?Object.create(g):(v.prototype=g.prototype,new v)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.collectMethods=r.DslMethodsCollectorVisitor=r.getProductionDslName=r.isBranchingProd=r.isOptionalProd=r.isSequenceProd=void 0;var t=Ut(),n=xi(),i=nc();function s(f){return f instanceof n.Alternative||f instanceof n.Option||f instanceof n.Repetition||f instanceof n.RepetitionMandatory||f instanceof n.RepetitionMandatoryWithSeparator||f instanceof n.RepetitionWithSeparator||f instanceof n.Terminal||f instanceof n.Rule}r.isSequenceProd=s;function o(f,p){p===void 0&&(p=[]);var g=f instanceof n.Option||f instanceof n.Repetition||f instanceof n.RepetitionWithSeparator;return g?!0:f instanceof n.Alternation?t.some(f.definition,function(v){return o(v,p)}):f instanceof n.NonTerminal&&t.contains(p,f)?!1:f instanceof n.AbstractProduction?(f instanceof n.NonTerminal&&p.push(f),t.every(f.definition,function(v){return o(v,p)})):!1}r.isOptionalProd=o;function a(f){return f instanceof n.Alternation}r.isBranchingProd=a;function l(f){if(f instanceof n.NonTerminal)return"SUBRULE";if(f instanceof n.Option)return"OPTION";if(f instanceof n.Alternation)return"OR";if(f instanceof n.RepetitionMandatory)return"AT_LEAST_ONE";if(f instanceof n.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(f instanceof n.RepetitionWithSeparator)return"MANY_SEP";if(f instanceof n.Repetition)return"MANY";if(f instanceof n.Terminal)return"CONSUME";throw Error("non exhaustive match")}r.getProductionDslName=l;var c=function(f){e(p,f);function p(){var g=f!==null&&f.apply(this,arguments)||this;return g.separator="-",g.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},g}return p.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},p.prototype.visitTerminal=function(g){var v=g.terminalType.name+this.separator+"Terminal";t.has(this.dslMethods,v)||(this.dslMethods[v]=[]),this.dslMethods[v].push(g)},p.prototype.visitNonTerminal=function(g){var v=g.nonTerminalName+this.separator+"Terminal";t.has(this.dslMethods,v)||(this.dslMethods[v]=[]),this.dslMethods[v].push(g)},p.prototype.visitOption=function(g){this.dslMethods.option.push(g)},p.prototype.visitRepetitionWithSeparator=function(g){this.dslMethods.repetitionWithSeparator.push(g)},p.prototype.visitRepetitionMandatory=function(g){this.dslMethods.repetitionMandatory.push(g)},p.prototype.visitRepetitionMandatoryWithSeparator=function(g){this.dslMethods.repetitionMandatoryWithSeparator.push(g)},p.prototype.visitRepetition=function(g){this.dslMethods.repetition.push(g)},p.prototype.visitAlternation=function(g){this.dslMethods.alternation.push(g)},p}(i.GAstVisitor);r.DslMethodsCollectorVisitor=c;var u=new c;function h(f){u.reset(),f.accept(u);var p=u.dslMethods;return u.reset(),p}r.collectMethods=h}),X0=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.firstForTerminal=r.firstForBranching=r.firstForSequence=r.first=void 0;var e=Ut(),t=xi(),n=wh();function i(l){if(l instanceof t.NonTerminal)return i(l.referencedRule);if(l instanceof t.Terminal)return a(l);if(n.isSequenceProd(l))return s(l);if(n.isBranchingProd(l))return o(l);throw Error("non exhaustive match")}r.first=i;function s(l){for(var c=[],u=l.definition,h=0,f=u.length>h,p,g=!0;f&&g;)p=u[h],g=n.isOptionalProd(p),c=c.concat(i(p)),h=h+1,f=u.length>h;return e.uniq(c)}r.firstForSequence=s;function o(l){var c=e.map(l.definition,function(u){return i(u)});return e.uniq(e.flatten(c))}r.firstForBranching=o;function a(l){return[l.terminalType]}r.firstForTerminal=a}),j0=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.IN=void 0,r.IN="_~IN~_"}),pS=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var h=function(f,p){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,v){g.__proto__=v}||function(g,v){for(var d in v)Object.prototype.hasOwnProperty.call(v,d)&&(g[d]=v[d])},h(f,p)};return function(f,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");h(f,p);function g(){this.constructor=f}f.prototype=p===null?Object.create(p):(g.prototype=p.prototype,new g)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.buildInProdFollowPrefix=r.buildBetweenProdsFollowPrefix=r.computeAllProdsFollows=r.ResyncFollowsWalker=void 0;var t=op(),n=X0(),i=Ut(),s=j0(),o=xi(),a=function(h){e(f,h);function f(p){var g=h.call(this)||this;return g.topProd=p,g.follows={},g}return f.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},f.prototype.walkTerminal=function(p,g,v){},f.prototype.walkProdRef=function(p,g,v){var d=c(p.referencedRule,p.idx)+this.topProd.name,m=g.concat(v),_=new o.Alternative({definition:m}),y=n.first(_);this.follows[d]=y},f}(t.RestWalker);r.ResyncFollowsWalker=a;function l(h){var f={};return i.forEach(h,function(p){var g=new a(p).startWalking();i.assign(f,g)}),f}r.computeAllProdsFollows=l;function c(h,f){return h.name+f+s.IN}r.buildBetweenProdsFollowPrefix=c;function u(h){var f=h.terminalType.name;return f+h.idx+s.IN}r.buildInProdFollowPrefix=u}),Ch=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defaultGrammarValidatorErrorProvider=r.defaultGrammarResolverErrorProvider=r.defaultParserErrorProvider=void 0;var e=io(),t=Ut(),n=Ut(),i=xi(),s=wh();r.defaultParserErrorProvider={buildMismatchTokenMessage:function(o){var a=o.expected,l=o.actual,c=o.previous,u=o.ruleName,h=e.hasTokenLabel(a),f=h?"--> "+e.tokenLabel(a)+" <--":"token of type --> "+a.name+" <--",p="Expecting "+f+" but found --> '"+l.image+"' <--";return p},buildNotAllInputParsedMessage:function(o){var a=o.firstRedundant,l=o.ruleName;return"Redundant input, expecting EOF but found: "+a.image},buildNoViableAltMessage:function(o){var a=o.expectedPathsPerAlt,l=o.actual,c=o.previous,u=o.customUserDescription,h=o.ruleName,f="Expecting: ",p=n.first(l).image,g=` -but found: '`+p+"'";if(u)return f+u+g;var v=n.reduce(a,function(y,x){return y.concat(x)},[]),d=n.map(v,function(y){return"["+n.map(y,function(x){return e.tokenLabel(x)}).join(", ")+"]"}),m=n.map(d,function(y,x){return" "+(x+1)+". "+y}),_=`one of these possible Token sequences: +`+p)}var g=this.tokenizeInternal(u,h);return g},c.prototype.tokenizeInternal=function(u,h){var f=this,p,g,y,d,m,_,v,x,S,I,A,C,E,b,R,N=u,B=N.length,V=0,ie=0,Y=this.hasCustom?0:Math.floor(u.length/10),te=new Array(Y),q=[],le=this.trackStartLines?1:void 0,ye=this.trackStartLines?1:void 0,Te=e.cloneEmptyGroups(this.emptyGroups),Ae=this.trackStartLines,_e=this.config.lineTerminatorsPattern,G=0,P=[],M=[],T=[],k=[];Object.freeze(k);var j=void 0;function W(){return P}function re(ge){var de=e.charCodeToOptimizedIndex(ge),Ee=M[de];return Ee===void 0?k:Ee}var ce=function(ge){if(T.length===1&&ge.tokenType.PUSH_MODE===void 0){var de=f.config.errorMessageProvider.buildUnableToPopLexerModeMessage(ge);q.push({offset:ge.startOffset,line:ge.startLine!==void 0?ge.startLine:void 0,column:ge.startColumn!==void 0?ge.startColumn:void 0,length:ge.image.length,message:de})}else{T.pop();var Ee=t.last(T);P=f.patternIdxToConfig[Ee],M=f.charCodeToPatternIdxToConfig[Ee],G=P.length;var Re=f.canModeBeOptimized[Ee]&&f.config.safeMode===!1;M&&Re?j=re:j=W}};function me(ge){T.push(ge),M=this.charCodeToPatternIdxToConfig[ge],P=this.patternIdxToConfig[ge],G=P.length,G=P.length;var de=this.canModeBeOptimized[ge]&&this.config.safeMode===!1;M&&de?j=re:j=W}me.call(this,h);for(var w;Vm.length&&(m=y,_=v,w=ve)}break}}if(m!==null){if(x=m.length,S=w.group,S!==void 0&&(I=w.tokenTypeIdx,A=this.createTokenInstance(m,V,I,w.tokenType,le,ye,x),this.handlePayload(A,_),S===!1?ie=this.addToken(te,ie,A):Te[S].push(A)),u=this.chopInput(u,x),V=V+x,ye=this.computeNewColumn(ye,x),Ae===!0&&w.canLineTerminator===!0){var L=0,O=void 0,D=void 0;_e.lastIndex=0;do O=_e.test(m),O===!0&&(D=_e.lastIndex-1,L++);while(O===!0);L!==0&&(le=le+L,ye=x-D,this.updateTokenEndLineColumnLocation(A,S,D,L,le,ye,x))}this.handleModes(w,ce,me,A)}else{for(var z=V,Q=le,ne=ye,oe=!1;!oe&&V <"+u+">");var p=t.timer(h),g=p.time,y=p.value,d=g>10?console.warn:console.log;return this.traceInitIndent time: "+g+"ms"),this.traceInitIndent--,y}else return h()},c.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",c.NA=/NOT_APPLICABLE/,c}();r.Lexer=l}),Co=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.tokenMatcher=r.createTokenInstance=r.EOF=r.createToken=r.hasTokenLabel=r.tokenName=r.tokenLabel=void 0;var e=Wt(),t=Hf(),n=Vc();function i(x){return o(x)?x.LABEL:x.name}r.tokenLabel=i;function s(x){return x.name}r.tokenName=s;function o(x){return e.isString(x.LABEL)&&x.LABEL!==""}r.hasTokenLabel=o;var a="parent",l="categories",c="label",u="group",h="push_mode",f="pop_mode",p="longer_alt",g="line_breaks",y="start_chars_hint";function d(x){return m(x)}r.createToken=d;function m(x){var S=x.pattern,I={};if(I.name=x.name,e.isUndefined(S)||(I.PATTERN=S),e.has(x,a))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return e.has(x,l)&&(I.CATEGORIES=x[l]),n.augmentTokenTypes([I]),e.has(x,c)&&(I.LABEL=x[c]),e.has(x,u)&&(I.GROUP=x[u]),e.has(x,f)&&(I.POP_MODE=x[f]),e.has(x,h)&&(I.PUSH_MODE=x[h]),e.has(x,p)&&(I.LONGER_ALT=x[p]),e.has(x,g)&&(I.LINE_BREAKS=x[g]),e.has(x,y)&&(I.START_CHARS_HINT=x[y]),I}r.EOF=d({name:"EOF",pattern:t.Lexer.NA}),n.augmentTokenTypes([r.EOF]);function _(x,S,I,A,C,E,b,R){return{image:S,startOffset:I,endOffset:A,startLine:C,endLine:E,startColumn:b,endColumn:R,tokenTypeIdx:x.tokenTypeIdx,tokenType:x}}r.createTokenInstance=_;function v(x,S){return n.tokenStructuredMatcher(x,S)}r.tokenMatcher=v}),Li=bt(r=>{"use strict";var e=r&&r.__extends||function(){var m=function(_,v){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(x,S){x.__proto__=S}||function(x,S){for(var I in S)Object.prototype.hasOwnProperty.call(S,I)&&(x[I]=S[I])},m(_,v)};return function(_,v){if(typeof v!="function"&&v!==null)throw new TypeError("Class extends value "+String(v)+" is not a constructor or null");m(_,v);function x(){this.constructor=_}_.prototype=v===null?Object.create(v):(x.prototype=v.prototype,new x)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.serializeProduction=r.serializeGrammar=r.Terminal=r.Alternation=r.RepetitionWithSeparator=r.Repetition=r.RepetitionMandatoryWithSeparator=r.RepetitionMandatory=r.Option=r.Alternative=r.Rule=r.NonTerminal=r.AbstractProduction=void 0;var t=Wt(),n=Co(),i=function(){function m(_){this._definition=_}return Object.defineProperty(m.prototype,"definition",{get:function(){return this._definition},set:function(_){this._definition=_},enumerable:!1,configurable:!0}),m.prototype.accept=function(_){_.visit(this),t.forEach(this.definition,function(v){v.accept(_)})},m}();r.AbstractProduction=i;var s=function(m){e(_,m);function _(v){var x=m.call(this,[])||this;return x.idx=1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return Object.defineProperty(_.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(v){},enumerable:!1,configurable:!0}),_.prototype.accept=function(v){v.visit(this)},_}(i);r.NonTerminal=s;var o=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.orgText="",t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.Rule=o;var a=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.ignoreAmbiguities=!1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.Alternative=a;var l=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.idx=1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.Option=l;var c=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.idx=1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.RepetitionMandatory=c;var u=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.idx=1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.RepetitionMandatoryWithSeparator=u;var h=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.idx=1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.Repetition=h;var f=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.idx=1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return _}(i);r.RepetitionWithSeparator=f;var p=function(m){e(_,m);function _(v){var x=m.call(this,v.definition)||this;return x.idx=1,x.ignoreAmbiguities=!1,x.hasPredicates=!1,t.assign(x,t.pick(v,function(S){return S!==void 0})),x}return Object.defineProperty(_.prototype,"definition",{get:function(){return this._definition},set:function(v){this._definition=v},enumerable:!1,configurable:!0}),_}(i);r.Alternation=p;var g=function(){function m(_){this.idx=1,t.assign(this,t.pick(_,function(v){return v!==void 0}))}return m.prototype.accept=function(_){_.visit(this)},m}();r.Terminal=g;function y(m){return t.map(m,d)}r.serializeGrammar=y;function d(m){function _(S){return t.map(S,d)}if(m instanceof s)return{type:"NonTerminal",name:m.nonTerminalName,idx:m.idx};if(m instanceof a)return{type:"Alternative",definition:_(m.definition)};if(m instanceof l)return{type:"Option",idx:m.idx,definition:_(m.definition)};if(m instanceof c)return{type:"RepetitionMandatory",idx:m.idx,definition:_(m.definition)};if(m instanceof u)return{type:"RepetitionMandatoryWithSeparator",idx:m.idx,separator:d(new g({terminalType:m.separator})),definition:_(m.definition)};if(m instanceof f)return{type:"RepetitionWithSeparator",idx:m.idx,separator:d(new g({terminalType:m.separator})),definition:_(m.definition)};if(m instanceof h)return{type:"Repetition",idx:m.idx,definition:_(m.definition)};if(m instanceof p)return{type:"Alternation",idx:m.idx,definition:_(m.definition)};if(m instanceof g){var v={type:"Terminal",name:m.terminalType.name,label:n.tokenLabel(m.terminalType),idx:m.idx},x=m.terminalType.PATTERN;return m.terminalType.PATTERN&&(v.pattern=t.isRegExp(x)?x.source:x),v}else{if(m instanceof o)return{type:"Rule",name:m.name,orgText:m.orgText,definition:_(m.definition)};throw Error("non exhaustive match")}}r.serializeProduction=d}),Mm=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RestWalker=void 0;var e=Wt(),t=Li(),n=function(){function s(){}return s.prototype.walk=function(o,a){var l=this;a===void 0&&(a=[]),e.forEach(o.definition,function(c,u){var h=e.drop(o.definition,u+1);if(c instanceof t.NonTerminal)l.walkProdRef(c,h,a);else if(c instanceof t.Terminal)l.walkTerminal(c,h,a);else if(c instanceof t.Alternative)l.walkFlat(c,h,a);else if(c instanceof t.Option)l.walkOption(c,h,a);else if(c instanceof t.RepetitionMandatory)l.walkAtLeastOne(c,h,a);else if(c instanceof t.RepetitionMandatoryWithSeparator)l.walkAtLeastOneSep(c,h,a);else if(c instanceof t.RepetitionWithSeparator)l.walkManySep(c,h,a);else if(c instanceof t.Repetition)l.walkMany(c,h,a);else if(c instanceof t.Alternation)l.walkOr(c,h,a);else throw Error("non exhaustive match")})},s.prototype.walkTerminal=function(o,a,l){},s.prototype.walkProdRef=function(o,a,l){},s.prototype.walkFlat=function(o,a,l){var c=a.concat(l);this.walk(o,c)},s.prototype.walkOption=function(o,a,l){var c=a.concat(l);this.walk(o,c)},s.prototype.walkAtLeastOne=function(o,a,l){var c=[new t.Option({definition:o.definition})].concat(a,l);this.walk(o,c)},s.prototype.walkAtLeastOneSep=function(o,a,l){var c=i(o,a,l);this.walk(o,c)},s.prototype.walkMany=function(o,a,l){var c=[new t.Option({definition:o.definition})].concat(a,l);this.walk(o,c)},s.prototype.walkManySep=function(o,a,l){var c=i(o,a,l);this.walk(o,c)},s.prototype.walkOr=function(o,a,l){var c=this,u=a.concat(l);e.forEach(o.definition,function(h){var f=new t.Alternative({definition:[h]});c.walk(f,u)})},s}();r.RestWalker=n;function i(s,o,a){var l=[new t.Option({definition:[new t.Terminal({terminalType:s.separator})].concat(s.definition)})],c=l.concat(o,a);return c}}),zc=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.GAstVisitor=void 0;var e=Li(),t=function(){function n(){}return n.prototype.visit=function(i){var s=i;switch(s.constructor){case e.NonTerminal:return this.visitNonTerminal(s);case e.Alternative:return this.visitAlternative(s);case e.Option:return this.visitOption(s);case e.RepetitionMandatory:return this.visitRepetitionMandatory(s);case e.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(s);case e.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(s);case e.Repetition:return this.visitRepetition(s);case e.Alternation:return this.visitAlternation(s);case e.Terminal:return this.visitTerminal(s);case e.Rule:return this.visitRule(s);default:throw Error("non exhaustive match")}},n.prototype.visitNonTerminal=function(i){},n.prototype.visitAlternative=function(i){},n.prototype.visitOption=function(i){},n.prototype.visitRepetition=function(i){},n.prototype.visitRepetitionMandatory=function(i){},n.prototype.visitRepetitionMandatoryWithSeparator=function(i){},n.prototype.visitRepetitionWithSeparator=function(i){},n.prototype.visitAlternation=function(i){},n.prototype.visitTerminal=function(i){},n.prototype.visitRule=function(i){},n}();r.GAstVisitor=t}),Wf=bt(r=>{"use strict";var e=r&&r.__extends||function(){var f=function(p,g){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,d){y.__proto__=d}||function(y,d){for(var m in d)Object.prototype.hasOwnProperty.call(d,m)&&(y[m]=d[m])},f(p,g)};return function(p,g){if(typeof g!="function"&&g!==null)throw new TypeError("Class extends value "+String(g)+" is not a constructor or null");f(p,g);function y(){this.constructor=p}p.prototype=g===null?Object.create(g):(y.prototype=g.prototype,new y)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.collectMethods=r.DslMethodsCollectorVisitor=r.getProductionDslName=r.isBranchingProd=r.isOptionalProd=r.isSequenceProd=void 0;var t=Wt(),n=Li(),i=zc();function s(f){return f instanceof n.Alternative||f instanceof n.Option||f instanceof n.Repetition||f instanceof n.RepetitionMandatory||f instanceof n.RepetitionMandatoryWithSeparator||f instanceof n.RepetitionWithSeparator||f instanceof n.Terminal||f instanceof n.Rule}r.isSequenceProd=s;function o(f,p){p===void 0&&(p=[]);var g=f instanceof n.Option||f instanceof n.Repetition||f instanceof n.RepetitionWithSeparator;return g?!0:f instanceof n.Alternation?t.some(f.definition,function(y){return o(y,p)}):f instanceof n.NonTerminal&&t.contains(p,f)?!1:f instanceof n.AbstractProduction?(f instanceof n.NonTerminal&&p.push(f),t.every(f.definition,function(y){return o(y,p)})):!1}r.isOptionalProd=o;function a(f){return f instanceof n.Alternation}r.isBranchingProd=a;function l(f){if(f instanceof n.NonTerminal)return"SUBRULE";if(f instanceof n.Option)return"OPTION";if(f instanceof n.Alternation)return"OR";if(f instanceof n.RepetitionMandatory)return"AT_LEAST_ONE";if(f instanceof n.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(f instanceof n.RepetitionWithSeparator)return"MANY_SEP";if(f instanceof n.Repetition)return"MANY";if(f instanceof n.Terminal)return"CONSUME";throw Error("non exhaustive match")}r.getProductionDslName=l;var c=function(f){e(p,f);function p(){var g=f!==null&&f.apply(this,arguments)||this;return g.separator="-",g.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},g}return p.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},p.prototype.visitTerminal=function(g){var y=g.terminalType.name+this.separator+"Terminal";t.has(this.dslMethods,y)||(this.dslMethods[y]=[]),this.dslMethods[y].push(g)},p.prototype.visitNonTerminal=function(g){var y=g.nonTerminalName+this.separator+"Terminal";t.has(this.dslMethods,y)||(this.dslMethods[y]=[]),this.dslMethods[y].push(g)},p.prototype.visitOption=function(g){this.dslMethods.option.push(g)},p.prototype.visitRepetitionWithSeparator=function(g){this.dslMethods.repetitionWithSeparator.push(g)},p.prototype.visitRepetitionMandatory=function(g){this.dslMethods.repetitionMandatory.push(g)},p.prototype.visitRepetitionMandatoryWithSeparator=function(g){this.dslMethods.repetitionMandatoryWithSeparator.push(g)},p.prototype.visitRepetition=function(g){this.dslMethods.repetition.push(g)},p.prototype.visitAlternation=function(g){this.dslMethods.alternation.push(g)},p}(i.GAstVisitor);r.DslMethodsCollectorVisitor=c;var u=new c;function h(f){u.reset(),f.accept(u);var p=u.dslMethods;return u.reset(),p}r.collectMethods=h}),ix=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.firstForTerminal=r.firstForBranching=r.firstForSequence=r.first=void 0;var e=Wt(),t=Li(),n=Wf();function i(l){if(l instanceof t.NonTerminal)return i(l.referencedRule);if(l instanceof t.Terminal)return a(l);if(n.isSequenceProd(l))return s(l);if(n.isBranchingProd(l))return o(l);throw Error("non exhaustive match")}r.first=i;function s(l){for(var c=[],u=l.definition,h=0,f=u.length>h,p,g=!0;f&&g;)p=u[h],g=n.isOptionalProd(p),c=c.concat(i(p)),h=h+1,f=u.length>h;return e.uniq(c)}r.firstForSequence=s;function o(l){var c=e.map(l.definition,function(u){return i(u)});return e.uniq(e.flatten(c))}r.firstForBranching=o;function a(l){return[l.terminalType]}r.firstForTerminal=a}),rx=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.IN=void 0,r.IN="_~IN~_"}),vS=bt(r=>{"use strict";var e=r&&r.__extends||function(){var h=function(f,p){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,y){g.__proto__=y}||function(g,y){for(var d in y)Object.prototype.hasOwnProperty.call(y,d)&&(g[d]=y[d])},h(f,p)};return function(f,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");h(f,p);function g(){this.constructor=f}f.prototype=p===null?Object.create(p):(g.prototype=p.prototype,new g)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.buildInProdFollowPrefix=r.buildBetweenProdsFollowPrefix=r.computeAllProdsFollows=r.ResyncFollowsWalker=void 0;var t=Mm(),n=ix(),i=Wt(),s=rx(),o=Li(),a=function(h){e(f,h);function f(p){var g=h.call(this)||this;return g.topProd=p,g.follows={},g}return f.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},f.prototype.walkTerminal=function(p,g,y){},f.prototype.walkProdRef=function(p,g,y){var d=c(p.referencedRule,p.idx)+this.topProd.name,m=g.concat(y),_=new o.Alternative({definition:m}),v=n.first(_);this.follows[d]=v},f}(t.RestWalker);r.ResyncFollowsWalker=a;function l(h){var f={};return i.forEach(h,function(p){var g=new a(p).startWalking();i.assign(f,g)}),f}r.computeAllProdsFollows=l;function c(h,f){return h.name+f+s.IN}r.buildBetweenProdsFollowPrefix=c;function u(h){var f=h.terminalType.name;return f+h.idx+s.IN}r.buildInProdFollowPrefix=u}),Xf=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defaultGrammarValidatorErrorProvider=r.defaultGrammarResolverErrorProvider=r.defaultParserErrorProvider=void 0;var e=Co(),t=Wt(),n=Wt(),i=Li(),s=Wf();r.defaultParserErrorProvider={buildMismatchTokenMessage:function(o){var a=o.expected,l=o.actual,c=o.previous,u=o.ruleName,h=e.hasTokenLabel(a),f=h?"--> "+e.tokenLabel(a)+" <--":"token of type --> "+a.name+" <--",p="Expecting "+f+" but found --> '"+l.image+"' <--";return p},buildNotAllInputParsedMessage:function(o){var a=o.firstRedundant,l=o.ruleName;return"Redundant input, expecting EOF but found: "+a.image},buildNoViableAltMessage:function(o){var a=o.expectedPathsPerAlt,l=o.actual,c=o.previous,u=o.customUserDescription,h=o.ruleName,f="Expecting: ",p=n.first(l).image,g=` +but found: '`+p+"'";if(u)return f+u+g;var y=n.reduce(a,function(v,x){return v.concat(x)},[]),d=n.map(y,function(v){return"["+n.map(v,function(x){return e.tokenLabel(x)}).join(", ")+"]"}),m=n.map(d,function(v,x){return" "+(x+1)+". "+v}),_=`one of these possible Token sequences: `+m.join(` `);return f+_+g},buildEarlyExitMessage:function(o){var a=o.expectedIterationPaths,l=o.actual,c=o.customUserDescription,u=o.ruleName,h="Expecting: ",f=n.first(l).image,p=` -but found: '`+f+"'";if(c)return h+c+p;var g=n.map(a,function(d){return"["+n.map(d,function(m){return e.tokenLabel(m)}).join(",")+"]"}),v=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+g.join(" ,")+">");return h+v+p}},Object.freeze(r.defaultParserErrorProvider),r.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(o,a){var l="Invalid grammar, reference to a rule which is not defined: ->"+a.nonTerminalName+`<- -inside top level rule: ->`+o.name+"<-";return l}},r.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(o,a){function l(d){return d instanceof i.Terminal?d.terminalType.name:d instanceof i.NonTerminal?d.nonTerminalName:""}var c=o.name,u=n.first(a),h=u.idx,f=s.getProductionDslName(u),p=l(u),g=h>0,v="->"+f+(g?h:"")+"<- "+(p?"with argument: ->"+p+"<-":"")+` +but found: '`+f+"'";if(c)return h+c+p;var g=n.map(a,function(d){return"["+n.map(d,function(m){return e.tokenLabel(m)}).join(",")+"]"}),y=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+g.join(" ,")+">");return h+y+p}},Object.freeze(r.defaultParserErrorProvider),r.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(o,a){var l="Invalid grammar, reference to a rule which is not defined: ->"+a.nonTerminalName+`<- +inside top level rule: ->`+o.name+"<-";return l}},r.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(o,a){function l(d){return d instanceof i.Terminal?d.terminalType.name:d instanceof i.NonTerminal?d.nonTerminalName:""}var c=o.name,u=n.first(a),h=u.idx,f=s.getProductionDslName(u),p=l(u),g=h>0,y="->"+f+(g?h:"")+"<- "+(p?"with argument: ->"+p+"<-":"")+` appears more than once (`+a.length+" times) in the top level rule: ->"+c+`<-. For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return v=v.replace(/[ \t]+/g," "),v=v.replace(/\s\s+/g,` -`),v},buildNamespaceConflictError:function(o){var a=`Namespace conflict found in grammar. + `;return y=y.replace(/[ \t]+/g," "),y=y.replace(/\s\s+/g,` +`),y},buildNamespaceConflictError:function(o){var a=`Namespace conflict found in grammar. `+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+o.name+`>. `)+`To resolve this make sure each Terminal and Non-Terminal names are unique This is easy to accomplish by using the convention that Terminal names start with an uppercase letter @@ -3878,33 +3904,33 @@ This could lead to an infinite loop.`;return l},buildTokenNameError:function(o){ `)+(`without consuming any Tokens. The grammar path that causes this is: `+c+` `)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return u},buildInvalidRuleNameError:function(o){return"deprecated"},buildDuplicateRuleNameError:function(o){var a;o.topLevelRule instanceof i.Rule?a=o.topLevelRule.name:a=o.topLevelRule;var l="Duplicate definition, rule: ->"+a+"<- is already defined in the grammar: ->"+o.grammarName+"<-";return l}}}),mS=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var a=function(l,c){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,h){u.__proto__=h}||function(u,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(u[f]=h[f])},a(l,c)};return function(l,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");a(l,c);function u(){this.constructor=l}l.prototype=c===null?Object.create(c):(u.prototype=c.prototype,new u)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.GastRefResolverVisitor=r.resolveGrammar=void 0;var t=Ni(),n=Ut(),i=nc();function s(a,l){var c=new o(a,l);return c.resolveRefs(),c.errors}r.resolveGrammar=s;var o=function(a){e(l,a);function l(c,u){var h=a.call(this)||this;return h.nameToTopRule=c,h.errMsgProvider=u,h.errors=[],h}return l.prototype.resolveRefs=function(){var c=this;n.forEach(n.values(this.nameToTopRule),function(u){c.currTopLevel=u,u.accept(c)})},l.prototype.visitNonTerminal=function(c){var u=this.nameToTopRule[c.nonTerminalName];if(u)c.referencedRule=u;else{var h=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,c);this.errors.push({message:h,type:t.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:c.nonTerminalName})}},l}(i.GAstVisitor);r.GastRefResolverVisitor=o}),Rh=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var d=function(m,_){return d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,x){y.__proto__=x}||function(y,x){for(var w in x)Object.prototype.hasOwnProperty.call(x,w)&&(y[w]=x[w])},d(m,_)};return function(m,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");d(m,_);function y(){this.constructor=m}m.prototype=_===null?Object.create(_):(y.prototype=_.prototype,new y)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.nextPossibleTokensAfter=r.possiblePathsFrom=r.NextTerminalAfterAtLeastOneSepWalker=r.NextTerminalAfterAtLeastOneWalker=r.NextTerminalAfterManySepWalker=r.NextTerminalAfterManyWalker=r.AbstractNextTerminalAfterProductionWalker=r.NextAfterTokenWalker=r.AbstractNextPossibleTokensWalker=void 0;var t=op(),n=Ut(),i=X0(),s=xi(),o=function(d){e(m,d);function m(_,y){var x=d.call(this)||this;return x.topProd=_,x.path=y,x.possibleTokTypes=[],x.nextProductionName="",x.nextProductionOccurrence=0,x.found=!1,x.isAtEndOfPath=!1,x}return m.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=n.cloneArr(this.path.ruleStack).reverse(),this.occurrenceStack=n.cloneArr(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},m.prototype.walk=function(_,y){y===void 0&&(y=[]),this.found||d.prototype.walk.call(this,_,y)},m.prototype.walkProdRef=function(_,y,x){if(_.referencedRule.name===this.nextProductionName&&_.idx===this.nextProductionOccurrence){var w=y.concat(x);this.updateExpectedNext(),this.walk(_.referencedRule,w)}},m.prototype.updateExpectedNext=function(){n.isEmpty(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},m}(t.RestWalker);r.AbstractNextPossibleTokensWalker=o;var a=function(d){e(m,d);function m(_,y){var x=d.call(this,_,y)||this;return x.path=y,x.nextTerminalName="",x.nextTerminalOccurrence=0,x.nextTerminalName=x.path.lastTok.name,x.nextTerminalOccurrence=x.path.lastTokOccurrence,x}return m.prototype.walkTerminal=function(_,y,x){if(this.isAtEndOfPath&&_.terminalType.name===this.nextTerminalName&&_.idx===this.nextTerminalOccurrence&&!this.found){var w=y.concat(x),I=new s.Alternative({definition:w});this.possibleTokTypes=i.first(I),this.found=!0}},m}(o);r.NextAfterTokenWalker=a;var l=function(d){e(m,d);function m(_,y){var x=d.call(this)||this;return x.topRule=_,x.occurrence=y,x.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},x}return m.prototype.startWalking=function(){return this.walk(this.topRule),this.result},m}(t.RestWalker);r.AbstractNextTerminalAfterProductionWalker=l;var c=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkMany=function(_,y,x){if(_.idx===this.occurrence){var w=n.first(y.concat(x));this.result.isEndOfRule=w===void 0,w instanceof s.Terminal&&(this.result.token=w.terminalType,this.result.occurrence=w.idx)}else d.prototype.walkMany.call(this,_,y,x)},m}(l);r.NextTerminalAfterManyWalker=c;var u=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkManySep=function(_,y,x){if(_.idx===this.occurrence){var w=n.first(y.concat(x));this.result.isEndOfRule=w===void 0,w instanceof s.Terminal&&(this.result.token=w.terminalType,this.result.occurrence=w.idx)}else d.prototype.walkManySep.call(this,_,y,x)},m}(l);r.NextTerminalAfterManySepWalker=u;var h=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkAtLeastOne=function(_,y,x){if(_.idx===this.occurrence){var w=n.first(y.concat(x));this.result.isEndOfRule=w===void 0,w instanceof s.Terminal&&(this.result.token=w.terminalType,this.result.occurrence=w.idx)}else d.prototype.walkAtLeastOne.call(this,_,y,x)},m}(l);r.NextTerminalAfterAtLeastOneWalker=h;var f=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkAtLeastOneSep=function(_,y,x){if(_.idx===this.occurrence){var w=n.first(y.concat(x));this.result.isEndOfRule=w===void 0,w instanceof s.Terminal&&(this.result.token=w.terminalType,this.result.occurrence=w.idx)}else d.prototype.walkAtLeastOneSep.call(this,_,y,x)},m}(l);r.NextTerminalAfterAtLeastOneSepWalker=f;function p(d,m,_){_===void 0&&(_=[]),_=n.cloneArr(_);var y=[],x=0;function w(E){return E.concat(n.drop(d,x+1))}function I(E){var M=p(w(E),m,_);return y.concat(M)}for(;_.length=0;q--){var Y=te.definition[q],z={idx:B,def:Y.definition.concat(n.drop(O)),ruleStack:ie,occurrenceStack:$};L.push(z),L.push(I)}else if(te instanceof s.Alternative)L.push({idx:B,def:te.definition.concat(n.drop(O)),ruleStack:ie,occurrenceStack:$});else if(te instanceof s.Rule)L.push(v(te,B,ie,$));else throw Error("non exhaustive match")}}return M}r.nextPossibleTokensAfter=g;function v(d,m,_,y){var x=n.cloneArr(_);x.push(d.name);var w=n.cloneArr(y);return w.push(1),{idx:m,def:d.definition,ruleStack:x,occurrenceStack:w}}}),Ih=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var E=function(M,L){return E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(N,O){N.__proto__=O}||function(N,O){for(var B in O)Object.prototype.hasOwnProperty.call(O,B)&&(N[B]=O[B])},E(M,L)};return function(M,L){if(typeof L!="function"&&L!==null)throw new TypeError("Class extends value "+String(L)+" is not a constructor or null");E(M,L);function N(){this.constructor=M}M.prototype=L===null?Object.create(L):(N.prototype=L.prototype,new N)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.areTokenCategoriesNotUsed=r.isStrictPrefixOfPath=r.containsPath=r.getLookaheadPathsForOptionalProd=r.getLookaheadPathsForOr=r.lookAheadSequenceFromAlternatives=r.buildSingleAlternativeLookaheadFunction=r.buildAlternativesLookAheadFunc=r.buildLookaheadFuncForOptionalProd=r.buildLookaheadFuncForOr=r.getProdType=r.PROD_TYPE=void 0;var t=Ut(),n=Rh(),i=op(),s=tc(),o=xi(),a=nc(),l;(function(E){E[E.OPTION=0]="OPTION",E[E.REPETITION=1]="REPETITION",E[E.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",E[E.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",E[E.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",E[E.ALTERNATION=5]="ALTERNATION"})(l=r.PROD_TYPE||(r.PROD_TYPE={}));function c(E){if(E instanceof o.Option)return l.OPTION;if(E instanceof o.Repetition)return l.REPETITION;if(E instanceof o.RepetitionMandatory)return l.REPETITION_MANDATORY;if(E instanceof o.RepetitionMandatoryWithSeparator)return l.REPETITION_MANDATORY_WITH_SEPARATOR;if(E instanceof o.RepetitionWithSeparator)return l.REPETITION_WITH_SEPARATOR;if(E instanceof o.Alternation)return l.ALTERNATION;throw Error("non exhaustive match")}r.getProdType=c;function u(E,M,L,N,O,B){var ie=x(E,M,L),$=P(ie)?s.tokenStructuredMatcherNoCategories:s.tokenStructuredMatcher;return B(ie,N,$,O)}r.buildLookaheadFuncForOr=u;function h(E,M,L,N,O,B){var ie=w(E,M,O,L),$=P(ie)?s.tokenStructuredMatcherNoCategories:s.tokenStructuredMatcher;return B(ie[0],$,N)}r.buildLookaheadFuncForOptionalProd=h;function f(E,M,L,N){var O=E.length,B=t.every(E,function(te){return t.every(te,function(W){return W.length===1})});if(M)return function(te){for(var W=t.map(te,function(V){return V.GATE}),ae=0;ae{"use strict";var e=r&&r.__extends||function(){var N=function(O,B){return N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(ie,$){ie.__proto__=$}||function(ie,$){for(var te in $)Object.prototype.hasOwnProperty.call($,te)&&(ie[te]=$[te])},N(O,B)};return function(O,B){if(typeof B!="function"&&B!==null)throw new TypeError("Class extends value "+String(B)+" is not a constructor or null");N(O,B);function ie(){this.constructor=O}O.prototype=B===null?Object.create(B):(ie.prototype=B.prototype,new ie)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.checkPrefixAlternativesAmbiguities=r.validateSomeNonEmptyLookaheadPath=r.validateTooManyAlts=r.RepetionCollector=r.validateAmbiguousAlternationAlternatives=r.validateEmptyOrAlternative=r.getFirstNoneTerminal=r.validateNoLeftRecursion=r.validateRuleIsOverridden=r.validateRuleDoesNotAlreadyExist=r.OccurrenceValidationCollector=r.identifyProductionForDuplicates=r.validateGrammar=void 0;var t=Ut(),n=Ut(),i=Ni(),s=wh(),o=Ih(),a=Rh(),l=xi(),c=nc();function u(N,O,B,ie,$){var te=t.map(N,function(T){return h(T,ie)}),W=t.map(N,function(T){return m(T,T,ie)}),ae=[],de=[],ye=[];n.every(W,n.isEmpty)&&(ae=n.map(N,function(T){return x(T,ie)}),de=n.map(N,function(T){return w(T,O,ie)}),ye=P(N,O,ie));var Me=L(N,B,ie),ve=n.map(N,function(T){return C(T,ie)}),R=n.map(N,function(T){return v(T,N,$,ie)});return t.flatten(te.concat(ye,W,ae,de,Me,ve,R))}r.validateGrammar=u;function h(N,O){var B=new g;N.accept(B);var ie=B.allProductions,$=t.groupBy(ie,f),te=t.pick($,function(ae){return ae.length>1}),W=t.map(t.values(te),function(ae){var de=t.first(ae),ye=O.buildDuplicateFoundError(N,ae),Me=s.getProductionDslName(de),ve={message:ye,type:i.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:N.name,dslName:Me,occurrence:de.idx},R=p(de);return R&&(ve.parameter=R),ve});return W}function f(N){return s.getProductionDslName(N)+"_#_"+N.idx+"_#_"+p(N)}r.identifyProductionForDuplicates=f;function p(N){return N instanceof l.Terminal?N.terminalType.name:N instanceof l.NonTerminal?N.nonTerminalName:""}var g=function(N){e(O,N);function O(){var B=N!==null&&N.apply(this,arguments)||this;return B.allProductions=[],B}return O.prototype.visitNonTerminal=function(B){this.allProductions.push(B)},O.prototype.visitOption=function(B){this.allProductions.push(B)},O.prototype.visitRepetitionWithSeparator=function(B){this.allProductions.push(B)},O.prototype.visitRepetitionMandatory=function(B){this.allProductions.push(B)},O.prototype.visitRepetitionMandatoryWithSeparator=function(B){this.allProductions.push(B)},O.prototype.visitRepetition=function(B){this.allProductions.push(B)},O.prototype.visitAlternation=function(B){this.allProductions.push(B)},O.prototype.visitTerminal=function(B){this.allProductions.push(B)},O}(c.GAstVisitor);r.OccurrenceValidationCollector=g;function v(N,O,B,ie){var $=[],te=n.reduce(O,function(ae,de){return de.name===N.name?ae+1:ae},0);if(te>1){var W=ie.buildDuplicateRuleNameError({topLevelRule:N,grammarName:B});$.push({message:W,type:i.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:N.name})}return $}r.validateRuleDoesNotAlreadyExist=v;function d(N,O,B){var ie=[],$;return t.contains(O,N)||($="Invalid rule override, rule: ->"+N+"<- cannot be overridden in the grammar: ->"+B+"<-as it is not defined in any of the super grammars ",ie.push({message:$,type:i.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:N})),ie}r.validateRuleIsOverridden=d;function m(N,O,B,ie){ie===void 0&&(ie=[]);var $=[],te=_(O.definition);if(t.isEmpty(te))return[];var W=N.name,ae=t.contains(te,N);ae&&$.push({message:B.buildLeftRecursionError({topLevelRule:N,leftRecursionPath:ie}),type:i.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:W});var de=t.difference(te,ie.concat([N])),ye=t.map(de,function(Me){var ve=t.cloneArr(ie);return ve.push(Me),m(N,Me,B,ve)});return $.concat(t.flatten(ye))}r.validateNoLeftRecursion=m;function _(N){var O=[];if(t.isEmpty(N))return O;var B=t.first(N);if(B instanceof l.NonTerminal)O.push(B.referencedRule);else if(B instanceof l.Alternative||B instanceof l.Option||B instanceof l.RepetitionMandatory||B instanceof l.RepetitionMandatoryWithSeparator||B instanceof l.RepetitionWithSeparator||B instanceof l.Repetition)O=O.concat(_(B.definition));else if(B instanceof l.Alternation)O=t.flatten(t.map(B.definition,function(W){return _(W.definition)}));else if(!(B instanceof l.Terminal))throw Error("non exhaustive match");var ie=s.isOptionalProd(B),$=N.length>1;if(ie&&$){var te=t.drop(N);return O.concat(_(te))}else return O}r.getFirstNoneTerminal=_;var y=function(N){e(O,N);function O(){var B=N!==null&&N.apply(this,arguments)||this;return B.alternations=[],B}return O.prototype.visitAlternation=function(B){this.alternations.push(B)},O}(c.GAstVisitor);function x(N,O){var B=new y;N.accept(B);var ie=B.alternations,$=t.reduce(ie,function(te,W){var ae=t.dropRight(W.definition),de=t.map(ae,function(ye,Me){var ve=a.nextPossibleTokensAfter([ye],[],null,1);return t.isEmpty(ve)?{message:O.buildEmptyAlternationError({topLevelRule:N,alternation:W,emptyChoiceIdx:Me}),type:i.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:N.name,occurrence:W.idx,alternative:Me+1}:null});return te.concat(t.compact(de))},[]);return $}r.validateEmptyOrAlternative=x;function w(N,O,B){var ie=new y;N.accept(ie);var $=ie.alternations;$=n.reject($,function(W){return W.ignoreAmbiguities===!0});var te=t.reduce($,function(W,ae){var de=ae.idx,ye=ae.maxLookahead||O,Me=o.getLookaheadPathsForOr(de,N,ye,ae),ve=E(Me,ae,N,B),R=M(Me,ae,N,B);return W.concat(ve,R)},[]);return te}r.validateAmbiguousAlternationAlternatives=w;var I=function(N){e(O,N);function O(){var B=N!==null&&N.apply(this,arguments)||this;return B.allProductions=[],B}return O.prototype.visitRepetitionWithSeparator=function(B){this.allProductions.push(B)},O.prototype.visitRepetitionMandatory=function(B){this.allProductions.push(B)},O.prototype.visitRepetitionMandatoryWithSeparator=function(B){this.allProductions.push(B)},O.prototype.visitRepetition=function(B){this.allProductions.push(B)},O}(c.GAstVisitor);r.RepetionCollector=I;function C(N,O){var B=new y;N.accept(B);var ie=B.alternations,$=t.reduce(ie,function(te,W){return W.definition.length>255&&te.push({message:O.buildTooManyAlternativesError({topLevelRule:N,alternation:W}),type:i.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:N.name,occurrence:W.idx}),te},[]);return $}r.validateTooManyAlts=C;function P(N,O,B){var ie=[];return n.forEach(N,function($){var te=new I;$.accept(te);var W=te.allProductions;n.forEach(W,function(ae){var de=o.getProdType(ae),ye=ae.maxLookahead||O,Me=ae.idx,ve=o.getLookaheadPathsForOptionalProd(Me,$,de,ye),R=ve[0];if(n.isEmpty(n.flatten(R))){var T=B.buildEmptyRepetitionError({topLevelRule:$,repetition:ae});ie.push({message:T,type:i.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:$.name})}})}),ie}r.validateSomeNonEmptyLookaheadPath=P;function E(N,O,B,ie){var $=[],te=n.reduce(N,function(ae,de,ye){return O.definition[ye].ignoreAmbiguities===!0||n.forEach(de,function(Me){var ve=[ye];n.forEach(N,function(R,T){ye!==T&&o.containsPath(R,Me)&&O.definition[T].ignoreAmbiguities!==!0&&ve.push(T)}),ve.length>1&&!o.containsPath($,Me)&&($.push(Me),ae.push({alts:ve,path:Me}))}),ae},[]),W=t.map(te,function(ae){var de=n.map(ae.alts,function(Me){return Me+1}),ye=ie.buildAlternationAmbiguityError({topLevelRule:B,alternation:O,ambiguityIndices:de,prefixPath:ae.path});return{message:ye,type:i.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:B.name,occurrence:O.idx,alternatives:[ae.alts]}});return W}function M(N,O,B,ie){var $=[],te=n.reduce(N,function(W,ae,de){var ye=n.map(ae,function(Me){return{idx:de,path:Me}});return W.concat(ye)},[]);return n.forEach(te,function(W){var ae=O.definition[W.idx];if(ae.ignoreAmbiguities!==!0){var de=W.idx,ye=W.path,Me=n.findAll(te,function(R){return O.definition[R.idx].ignoreAmbiguities!==!0&&R.idx{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.validateGrammar=r.resolveGrammar=void 0;var e=Ut(),t=mS(),n=q0(),i=Ch();function s(a){a=e.defaults(a,{errMsgProvider:i.defaultGrammarResolverErrorProvider});var l={};return e.forEach(a.rules,function(c){l[c.name]=c}),t.resolveGrammar(l,a.errMsgProvider)}r.resolveGrammar=s;function o(a){return a=e.defaults(a,{errMsgProvider:i.defaultGrammarValidatorErrorProvider}),n.validateGrammar(a.rules,a.maxLookahead,a.tokenTypes,a.errMsgProvider,a.grammarName)}r.validateGrammar=o}),ic=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var g=function(v,d){return g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(m,_){m.__proto__=_}||function(m,_){for(var y in _)Object.prototype.hasOwnProperty.call(_,y)&&(m[y]=_[y])},g(v,d)};return function(v,d){if(typeof d!="function"&&d!==null)throw new TypeError("Class extends value "+String(d)+" is not a constructor or null");g(v,d);function m(){this.constructor=v}v.prototype=d===null?Object.create(d):(m.prototype=d.prototype,new m)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.EarlyExitException=r.NotAllInputParsedException=r.NoViableAltException=r.MismatchedTokenException=r.isRecognitionException=void 0;var t=Ut(),n="MismatchedTokenException",i="NoViableAltException",s="EarlyExitException",o="NotAllInputParsedException",a=[n,i,s,o];Object.freeze(a);function l(g){return t.contains(a,g.name)}r.isRecognitionException=l;var c=function(g){e(v,g);function v(d,m){var _=this.constructor,y=g.call(this,d)||this;return y.token=m,y.resyncedTokens=[],Object.setPrototypeOf(y,_.prototype),Error.captureStackTrace&&Error.captureStackTrace(y,y.constructor),y}return v}(Error),u=function(g){e(v,g);function v(d,m,_){var y=g.call(this,d,m)||this;return y.previousToken=_,y.name=n,y}return v}(c);r.MismatchedTokenException=u;var h=function(g){e(v,g);function v(d,m,_){var y=g.call(this,d,m)||this;return y.previousToken=_,y.name=i,y}return v}(c);r.NoViableAltException=h;var f=function(g){e(v,g);function v(d,m){var _=g.call(this,d,m)||this;return _.name=o,_}return v}(c);r.NotAllInputParsedException=f;var p=function(g){e(v,g);function v(d,m,_){var y=g.call(this,d,m)||this;return y.previousToken=_,y.name=s,y}return v}(c);r.EarlyExitException=p}),Y0=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.attemptInRepetitionRecovery=r.Recoverable=r.InRuleRecoveryException=r.IN_RULE_RECOVERY_EXCEPTION=r.EOF_FOLLOW_KEY=void 0;var e=io(),t=Ut(),n=ic(),i=j0(),s=Ni();r.EOF_FOLLOW_KEY={},r.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function o(c){this.name=r.IN_RULE_RECOVERY_EXCEPTION,this.message=c}r.InRuleRecoveryException=o,o.prototype=Error.prototype;var a=function(){function c(){}return c.prototype.initRecoverable=function(u){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=t.has(u,"recoveryEnabled")?u.recoveryEnabled:s.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=l)},c.prototype.getTokenToInsert=function(u){var h=e.createTokenInstance(u,"",NaN,NaN,NaN,NaN,NaN,NaN);return h.isInsertedInRecovery=!0,h},c.prototype.canTokenTypeBeInsertedInRecovery=function(u){return!0},c.prototype.tryInRepetitionRecovery=function(u,h,f,p){for(var g=this,v=this.findReSyncTokenType(),d=this.exportLexerState(),m=[],_=!1,y=this.LA(1),x=this.LA(1),w=function(){var I=g.LA(0),C=g.errorMessageProvider.buildMismatchTokenMessage({expected:p,actual:y,previous:I,ruleName:g.getCurrRuleFullName()}),P=new n.MismatchedTokenException(C,y,g.LA(0));P.resyncedTokens=t.dropRight(m),g.SAVE_ERROR(P)};!_;)if(this.tokenMatcher(x,p)){w();return}else if(f.call(this)){w(),u.apply(this,h);return}else this.tokenMatcher(x,v)?_=!0:(x=this.SKIP_TOKEN(),this.addToResyncTokens(x,m));this.importLexerState(d)},c.prototype.shouldInRepetitionRecoveryBeTried=function(u,h,f){return!(f===!1||u===void 0||h===void 0||this.tokenMatcher(this.LA(1),u)||this.isBackTracking()||this.canPerformInRuleRecovery(u,this.getFollowsForInRuleRecovery(u,h)))},c.prototype.getFollowsForInRuleRecovery=function(u,h){var f=this.getCurrentGrammarPath(u,h),p=this.getNextPossibleTokenTypes(f);return p},c.prototype.tryInRuleRecovery=function(u,h){if(this.canRecoverWithSingleTokenInsertion(u,h)){var f=this.getTokenToInsert(u);return f}if(this.canRecoverWithSingleTokenDeletion(u)){var p=this.SKIP_TOKEN();return this.consumeToken(),p}throw new o("sad sad panda")},c.prototype.canPerformInRuleRecovery=function(u,h){return this.canRecoverWithSingleTokenInsertion(u,h)||this.canRecoverWithSingleTokenDeletion(u)},c.prototype.canRecoverWithSingleTokenInsertion=function(u,h){var f=this;if(!this.canTokenTypeBeInsertedInRecovery(u)||t.isEmpty(h))return!1;var p=this.LA(1),g=t.find(h,function(v){return f.tokenMatcher(p,v)})!==void 0;return g},c.prototype.canRecoverWithSingleTokenDeletion=function(u){var h=this.tokenMatcher(this.LA(2),u);return h},c.prototype.isInCurrentRuleReSyncSet=function(u){var h=this.getCurrFollowKey(),f=this.getFollowSetFromFollowKey(h);return t.contains(f,u)},c.prototype.findReSyncTokenType=function(){for(var u=this.flattenFollowSet(),h=this.LA(1),f=2;;){var p=h.tokenType;if(t.contains(u,p))return p;h=this.LA(f),f++}},c.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return r.EOF_FOLLOW_KEY;var u=this.getLastExplicitRuleShortName(),h=this.getLastExplicitRuleOccurrenceIndex(),f=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(u),idxInCallingRule:h,inRule:this.shortRuleNameToFullName(f)}},c.prototype.buildFullFollowKeyStack=function(){var u=this,h=this.RULE_STACK,f=this.RULE_OCCURRENCE_STACK;return t.map(h,function(p,g){return g===0?r.EOF_FOLLOW_KEY:{ruleName:u.shortRuleNameToFullName(p),idxInCallingRule:f[g],inRule:u.shortRuleNameToFullName(h[g-1])}})},c.prototype.flattenFollowSet=function(){var u=this,h=t.map(this.buildFullFollowKeyStack(),function(f){return u.getFollowSetFromFollowKey(f)});return t.flatten(h)},c.prototype.getFollowSetFromFollowKey=function(u){if(u===r.EOF_FOLLOW_KEY)return[e.EOF];var h=u.ruleName+u.idxInCallingRule+i.IN+u.inRule;return this.resyncFollows[h]},c.prototype.addToResyncTokens=function(u,h){return this.tokenMatcher(u,e.EOF)||h.push(u),h},c.prototype.reSyncTo=function(u){for(var h=[],f=this.LA(1);this.tokenMatcher(f,u)===!1;)f=this.SKIP_TOKEN(),this.addToResyncTokens(f,h);return t.dropRight(h)},c.prototype.attemptInRepetitionRecovery=function(u,h,f,p,g,v,d){},c.prototype.getCurrentGrammarPath=function(u,h){var f=this.getHumanReadableRuleStack(),p=t.cloneArr(this.RULE_OCCURRENCE_STACK),g={ruleStack:f,occurrenceStack:p,lastTok:u,lastTokOccurrence:h};return g},c.prototype.getHumanReadableRuleStack=function(){var u=this;return t.map(this.RULE_STACK,function(h){return u.shortRuleNameToFullName(h)})},c}();r.Recoverable=a;function l(c,u,h,f,p,g,v){var d=this.getKeyForAutomaticLookahead(f,p),m=this.firstAfterRepMap[d];if(m===void 0){var _=this.getCurrRuleFullName(),y=this.getGAstProductions()[_],x=new g(y,p);m=x.startWalking(),this.firstAfterRepMap[d]=m}var w=m.token,I=m.occurrence,C=m.isEndOfRule;this.RULE_STACK.length===1&&C&&w===void 0&&(w=e.EOF,I=1),this.shouldInRepetitionRecoveryBeTried(w,I,v)&&this.tryInRepetitionRecovery(c,u,h,w)}r.attemptInRepetitionRecovery=l}),ap=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.getKeyForAutomaticLookahead=r.AT_LEAST_ONE_SEP_IDX=r.MANY_SEP_IDX=r.AT_LEAST_ONE_IDX=r.MANY_IDX=r.OPTION_IDX=r.OR_IDX=r.BITS_FOR_ALT_IDX=r.BITS_FOR_RULE_IDX=r.BITS_FOR_OCCURRENCE_IDX=r.BITS_FOR_METHOD_TYPE=void 0,r.BITS_FOR_METHOD_TYPE=4,r.BITS_FOR_OCCURRENCE_IDX=8,r.BITS_FOR_RULE_IDX=12,r.BITS_FOR_ALT_IDX=8,r.OR_IDX=1<{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.LooksAhead=void 0;var e=Ih(),t=Ut(),n=Ni(),i=ap(),s=wh(),o=function(){function a(){}return a.prototype.initLooksAhead=function(l){this.dynamicTokensEnabled=t.has(l,"dynamicTokensEnabled")?l.dynamicTokensEnabled:n.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=t.has(l,"maxLookahead")?l.maxLookahead:n.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=t.isES2015MapSupported()?new Map:[],t.isES2015MapSupported()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},a.prototype.preComputeLookaheadFunctions=function(l){var c=this;t.forEach(l,function(u){c.TRACE_INIT(u.name+" Rule Lookahead",function(){var h=s.collectMethods(u),f=h.alternation,p=h.repetition,g=h.option,v=h.repetitionMandatory,d=h.repetitionMandatoryWithSeparator,m=h.repetitionWithSeparator;t.forEach(f,function(_){var y=_.idx===0?"":_.idx;c.TRACE_INIT(""+s.getProductionDslName(_)+y,function(){var x=e.buildLookaheadFuncForOr(_.idx,u,_.maxLookahead||c.maxLookahead,_.hasPredicates,c.dynamicTokensEnabled,c.lookAheadBuilderForAlternatives),w=i.getKeyForAutomaticLookahead(c.fullRuleNameToShort[u.name],i.OR_IDX,_.idx);c.setLaFuncCache(w,x)})}),t.forEach(p,function(_){c.computeLookaheadFunc(u,_.idx,i.MANY_IDX,e.PROD_TYPE.REPETITION,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(g,function(_){c.computeLookaheadFunc(u,_.idx,i.OPTION_IDX,e.PROD_TYPE.OPTION,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(v,function(_){c.computeLookaheadFunc(u,_.idx,i.AT_LEAST_ONE_IDX,e.PROD_TYPE.REPETITION_MANDATORY,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(d,function(_){c.computeLookaheadFunc(u,_.idx,i.AT_LEAST_ONE_SEP_IDX,e.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(m,function(_){c.computeLookaheadFunc(u,_.idx,i.MANY_SEP_IDX,e.PROD_TYPE.REPETITION_WITH_SEPARATOR,_.maxLookahead,s.getProductionDslName(_))})})})},a.prototype.computeLookaheadFunc=function(l,c,u,h,f,p){var g=this;this.TRACE_INIT(""+p+(c===0?"":c),function(){var v=e.buildLookaheadFuncForOptionalProd(c,l,f||g.maxLookahead,g.dynamicTokensEnabled,h,g.lookAheadBuilderForOptional),d=i.getKeyForAutomaticLookahead(g.fullRuleNameToShort[l.name],u,c);g.setLaFuncCache(d,v)})},a.prototype.lookAheadBuilderForOptional=function(l,c,u){return e.buildSingleAlternativeLookaheadFunction(l,c,u)},a.prototype.lookAheadBuilderForAlternatives=function(l,c,u,h){return e.buildAlternativesLookAheadFunc(l,c,u,h)},a.prototype.getKeyForAutomaticLookahead=function(l,c){var u=this.getLastExplicitRuleShortName();return i.getKeyForAutomaticLookahead(u,l,c)},a.prototype.getLaFuncFromCache=function(l){},a.prototype.getLaFuncFromMap=function(l){return this.lookAheadFuncsCache.get(l)},a.prototype.getLaFuncFromObj=function(l){return this.lookAheadFuncsCache[l]},a.prototype.setLaFuncCache=function(l,c){},a.prototype.setLaFuncCacheUsingMap=function(l,c){this.lookAheadFuncsCache.set(l,c)},a.prototype.setLaFuncUsingObj=function(l,c){this.lookAheadFuncsCache[l]=c},a}();r.LooksAhead=o}),yS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.addNoneTerminalToCst=r.addTerminalToCst=r.setNodeLocationFull=r.setNodeLocationOnlyOffset=void 0;function e(s,o){isNaN(s.startOffset)===!0?(s.startOffset=o.startOffset,s.endOffset=o.endOffset):s.endOffset{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defineNameProp=r.functionName=r.classNameFromInstance=void 0;var e=Ut();function t(o){return i(o.constructor)}r.classNameFromInstance=t;var n="name";function i(o){var a=o.name;return a||"anonymous"}r.functionName=i;function s(o,a){var l=Object.getOwnPropertyDescriptor(o,n);return e.isUndefined(l)||l.configurable?(Object.defineProperty(o,n,{enumerable:!1,configurable:!0,writable:!1,value:a}),!0):!1}r.defineNameProp=s}),xS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.validateRedundantMethods=r.validateMissingCstMethods=r.validateVisitor=r.CstVisitorDefinitionError=r.createBaseVisitorConstructorWithDefaults=r.createBaseSemanticVisitorConstructor=r.defaultVisit=void 0;var e=Ut(),t=K0();function n(h,f){for(var p=e.keys(h),g=p.length,v=0;v: +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return u},buildInvalidRuleNameError:function(o){return"deprecated"},buildDuplicateRuleNameError:function(o){var a;o.topLevelRule instanceof i.Rule?a=o.topLevelRule.name:a=o.topLevelRule;var l="Duplicate definition, rule: ->"+a+"<- is already defined in the grammar: ->"+o.grammarName+"<-";return l}}}),_S=bt(r=>{"use strict";var e=r&&r.__extends||function(){var a=function(l,c){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,h){u.__proto__=h}||function(u,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(u[f]=h[f])},a(l,c)};return function(l,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");a(l,c);function u(){this.constructor=l}l.prototype=c===null?Object.create(c):(u.prototype=c.prototype,new u)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.GastRefResolverVisitor=r.resolveGrammar=void 0;var t=Xi(),n=Wt(),i=zc();function s(a,l){var c=new o(a,l);return c.resolveRefs(),c.errors}r.resolveGrammar=s;var o=function(a){e(l,a);function l(c,u){var h=a.call(this)||this;return h.nameToTopRule=c,h.errMsgProvider=u,h.errors=[],h}return l.prototype.resolveRefs=function(){var c=this;n.forEach(n.values(this.nameToTopRule),function(u){c.currTopLevel=u,u.accept(c)})},l.prototype.visitNonTerminal=function(c){var u=this.nameToTopRule[c.nonTerminalName];if(u)c.referencedRule=u;else{var h=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,c);this.errors.push({message:h,type:t.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:c.nonTerminalName})}},l}(i.GAstVisitor);r.GastRefResolverVisitor=o}),qf=bt(r=>{"use strict";var e=r&&r.__extends||function(){var d=function(m,_){return d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,x){v.__proto__=x}||function(v,x){for(var S in x)Object.prototype.hasOwnProperty.call(x,S)&&(v[S]=x[S])},d(m,_)};return function(m,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");d(m,_);function v(){this.constructor=m}m.prototype=_===null?Object.create(_):(v.prototype=_.prototype,new v)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.nextPossibleTokensAfter=r.possiblePathsFrom=r.NextTerminalAfterAtLeastOneSepWalker=r.NextTerminalAfterAtLeastOneWalker=r.NextTerminalAfterManySepWalker=r.NextTerminalAfterManyWalker=r.AbstractNextTerminalAfterProductionWalker=r.NextAfterTokenWalker=r.AbstractNextPossibleTokensWalker=void 0;var t=Mm(),n=Wt(),i=ix(),s=Li(),o=function(d){e(m,d);function m(_,v){var x=d.call(this)||this;return x.topProd=_,x.path=v,x.possibleTokTypes=[],x.nextProductionName="",x.nextProductionOccurrence=0,x.found=!1,x.isAtEndOfPath=!1,x}return m.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=n.cloneArr(this.path.ruleStack).reverse(),this.occurrenceStack=n.cloneArr(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},m.prototype.walk=function(_,v){v===void 0&&(v=[]),this.found||d.prototype.walk.call(this,_,v)},m.prototype.walkProdRef=function(_,v,x){if(_.referencedRule.name===this.nextProductionName&&_.idx===this.nextProductionOccurrence){var S=v.concat(x);this.updateExpectedNext(),this.walk(_.referencedRule,S)}},m.prototype.updateExpectedNext=function(){n.isEmpty(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},m}(t.RestWalker);r.AbstractNextPossibleTokensWalker=o;var a=function(d){e(m,d);function m(_,v){var x=d.call(this,_,v)||this;return x.path=v,x.nextTerminalName="",x.nextTerminalOccurrence=0,x.nextTerminalName=x.path.lastTok.name,x.nextTerminalOccurrence=x.path.lastTokOccurrence,x}return m.prototype.walkTerminal=function(_,v,x){if(this.isAtEndOfPath&&_.terminalType.name===this.nextTerminalName&&_.idx===this.nextTerminalOccurrence&&!this.found){var S=v.concat(x),I=new s.Alternative({definition:S});this.possibleTokTypes=i.first(I),this.found=!0}},m}(o);r.NextAfterTokenWalker=a;var l=function(d){e(m,d);function m(_,v){var x=d.call(this)||this;return x.topRule=_,x.occurrence=v,x.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},x}return m.prototype.startWalking=function(){return this.walk(this.topRule),this.result},m}(t.RestWalker);r.AbstractNextTerminalAfterProductionWalker=l;var c=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkMany=function(_,v,x){if(_.idx===this.occurrence){var S=n.first(v.concat(x));this.result.isEndOfRule=S===void 0,S instanceof s.Terminal&&(this.result.token=S.terminalType,this.result.occurrence=S.idx)}else d.prototype.walkMany.call(this,_,v,x)},m}(l);r.NextTerminalAfterManyWalker=c;var u=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkManySep=function(_,v,x){if(_.idx===this.occurrence){var S=n.first(v.concat(x));this.result.isEndOfRule=S===void 0,S instanceof s.Terminal&&(this.result.token=S.terminalType,this.result.occurrence=S.idx)}else d.prototype.walkManySep.call(this,_,v,x)},m}(l);r.NextTerminalAfterManySepWalker=u;var h=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkAtLeastOne=function(_,v,x){if(_.idx===this.occurrence){var S=n.first(v.concat(x));this.result.isEndOfRule=S===void 0,S instanceof s.Terminal&&(this.result.token=S.terminalType,this.result.occurrence=S.idx)}else d.prototype.walkAtLeastOne.call(this,_,v,x)},m}(l);r.NextTerminalAfterAtLeastOneWalker=h;var f=function(d){e(m,d);function m(){return d!==null&&d.apply(this,arguments)||this}return m.prototype.walkAtLeastOneSep=function(_,v,x){if(_.idx===this.occurrence){var S=n.first(v.concat(x));this.result.isEndOfRule=S===void 0,S instanceof s.Terminal&&(this.result.token=S.terminalType,this.result.occurrence=S.idx)}else d.prototype.walkAtLeastOneSep.call(this,_,v,x)},m}(l);r.NextTerminalAfterAtLeastOneSepWalker=f;function p(d,m,_){_===void 0&&(_=[]),_=n.cloneArr(_);var v=[],x=0;function S(E){return E.concat(n.drop(d,x+1))}function I(E){var b=p(S(E),m,_);return v.concat(b)}for(;_.length=0;j--){var W=te.definition[j],re={idx:V,def:W.definition.concat(n.drop(B)),ruleStack:ie,occurrenceStack:Y};R.push(re),R.push(I)}else if(te instanceof s.Alternative)R.push({idx:V,def:te.definition.concat(n.drop(B)),ruleStack:ie,occurrenceStack:Y});else if(te instanceof s.Rule)R.push(y(te,V,ie,Y));else throw Error("non exhaustive match")}}return b}r.nextPossibleTokensAfter=g;function y(d,m,_,v){var x=n.cloneArr(_);x.push(d.name);var S=n.cloneArr(v);return S.push(1),{idx:m,def:d.definition,ruleStack:x,occurrenceStack:S}}}),jf=bt(r=>{"use strict";var e=r&&r.__extends||function(){var E=function(b,R){return E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(N,B){N.__proto__=B}||function(N,B){for(var V in B)Object.prototype.hasOwnProperty.call(B,V)&&(N[V]=B[V])},E(b,R)};return function(b,R){if(typeof R!="function"&&R!==null)throw new TypeError("Class extends value "+String(R)+" is not a constructor or null");E(b,R);function N(){this.constructor=b}b.prototype=R===null?Object.create(R):(N.prototype=R.prototype,new N)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.areTokenCategoriesNotUsed=r.isStrictPrefixOfPath=r.containsPath=r.getLookaheadPathsForOptionalProd=r.getLookaheadPathsForOr=r.lookAheadSequenceFromAlternatives=r.buildSingleAlternativeLookaheadFunction=r.buildAlternativesLookAheadFunc=r.buildLookaheadFuncForOptionalProd=r.buildLookaheadFuncForOr=r.getProdType=r.PROD_TYPE=void 0;var t=Wt(),n=qf(),i=Mm(),s=Vc(),o=Li(),a=zc(),l;(function(E){E[E.OPTION=0]="OPTION",E[E.REPETITION=1]="REPETITION",E[E.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",E[E.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",E[E.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",E[E.ALTERNATION=5]="ALTERNATION"})(l=r.PROD_TYPE||(r.PROD_TYPE={}));function c(E){if(E instanceof o.Option)return l.OPTION;if(E instanceof o.Repetition)return l.REPETITION;if(E instanceof o.RepetitionMandatory)return l.REPETITION_MANDATORY;if(E instanceof o.RepetitionMandatoryWithSeparator)return l.REPETITION_MANDATORY_WITH_SEPARATOR;if(E instanceof o.RepetitionWithSeparator)return l.REPETITION_WITH_SEPARATOR;if(E instanceof o.Alternation)return l.ALTERNATION;throw Error("non exhaustive match")}r.getProdType=c;function u(E,b,R,N,B,V){var ie=x(E,b,R),Y=C(ie)?s.tokenStructuredMatcherNoCategories:s.tokenStructuredMatcher;return V(ie,N,Y,B)}r.buildLookaheadFuncForOr=u;function h(E,b,R,N,B,V){var ie=S(E,b,B,R),Y=C(ie)?s.tokenStructuredMatcherNoCategories:s.tokenStructuredMatcher;return V(ie[0],Y,N)}r.buildLookaheadFuncForOptionalProd=h;function f(E,b,R,N){var B=E.length,V=t.every(E,function(te){return t.every(te,function(q){return q.length===1})});if(b)return function(te){for(var q=t.map(te,function(k){return k.GATE}),le=0;le{"use strict";var e=r&&r.__extends||function(){var N=function(B,V){return N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(ie,Y){ie.__proto__=Y}||function(ie,Y){for(var te in Y)Object.prototype.hasOwnProperty.call(Y,te)&&(ie[te]=Y[te])},N(B,V)};return function(B,V){if(typeof V!="function"&&V!==null)throw new TypeError("Class extends value "+String(V)+" is not a constructor or null");N(B,V);function ie(){this.constructor=B}B.prototype=V===null?Object.create(V):(ie.prototype=V.prototype,new ie)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.checkPrefixAlternativesAmbiguities=r.validateSomeNonEmptyLookaheadPath=r.validateTooManyAlts=r.RepetionCollector=r.validateAmbiguousAlternationAlternatives=r.validateEmptyOrAlternative=r.getFirstNoneTerminal=r.validateNoLeftRecursion=r.validateRuleIsOverridden=r.validateRuleDoesNotAlreadyExist=r.OccurrenceValidationCollector=r.identifyProductionForDuplicates=r.validateGrammar=void 0;var t=Wt(),n=Wt(),i=Xi(),s=Wf(),o=jf(),a=qf(),l=Li(),c=zc();function u(N,B,V,ie,Y){var te=t.map(N,function(P){return h(P,ie)}),q=t.map(N,function(P){return m(P,P,ie)}),le=[],ye=[],Te=[];n.every(q,n.isEmpty)&&(le=n.map(N,function(P){return x(P,ie)}),ye=n.map(N,function(P){return S(P,B,ie)}),Te=C(N,B,ie));var Ae=R(N,V,ie),_e=n.map(N,function(P){return A(P,ie)}),G=n.map(N,function(P){return y(P,N,Y,ie)});return t.flatten(te.concat(Te,q,le,ye,Ae,_e,G))}r.validateGrammar=u;function h(N,B){var V=new g;N.accept(V);var ie=V.allProductions,Y=t.groupBy(ie,f),te=t.pick(Y,function(le){return le.length>1}),q=t.map(t.values(te),function(le){var ye=t.first(le),Te=B.buildDuplicateFoundError(N,le),Ae=s.getProductionDslName(ye),_e={message:Te,type:i.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:N.name,dslName:Ae,occurrence:ye.idx},G=p(ye);return G&&(_e.parameter=G),_e});return q}function f(N){return s.getProductionDslName(N)+"_#_"+N.idx+"_#_"+p(N)}r.identifyProductionForDuplicates=f;function p(N){return N instanceof l.Terminal?N.terminalType.name:N instanceof l.NonTerminal?N.nonTerminalName:""}var g=function(N){e(B,N);function B(){var V=N!==null&&N.apply(this,arguments)||this;return V.allProductions=[],V}return B.prototype.visitNonTerminal=function(V){this.allProductions.push(V)},B.prototype.visitOption=function(V){this.allProductions.push(V)},B.prototype.visitRepetitionWithSeparator=function(V){this.allProductions.push(V)},B.prototype.visitRepetitionMandatory=function(V){this.allProductions.push(V)},B.prototype.visitRepetitionMandatoryWithSeparator=function(V){this.allProductions.push(V)},B.prototype.visitRepetition=function(V){this.allProductions.push(V)},B.prototype.visitAlternation=function(V){this.allProductions.push(V)},B.prototype.visitTerminal=function(V){this.allProductions.push(V)},B}(c.GAstVisitor);r.OccurrenceValidationCollector=g;function y(N,B,V,ie){var Y=[],te=n.reduce(B,function(le,ye){return ye.name===N.name?le+1:le},0);if(te>1){var q=ie.buildDuplicateRuleNameError({topLevelRule:N,grammarName:V});Y.push({message:q,type:i.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:N.name})}return Y}r.validateRuleDoesNotAlreadyExist=y;function d(N,B,V){var ie=[],Y;return t.contains(B,N)||(Y="Invalid rule override, rule: ->"+N+"<- cannot be overridden in the grammar: ->"+V+"<-as it is not defined in any of the super grammars ",ie.push({message:Y,type:i.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:N})),ie}r.validateRuleIsOverridden=d;function m(N,B,V,ie){ie===void 0&&(ie=[]);var Y=[],te=_(B.definition);if(t.isEmpty(te))return[];var q=N.name,le=t.contains(te,N);le&&Y.push({message:V.buildLeftRecursionError({topLevelRule:N,leftRecursionPath:ie}),type:i.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:q});var ye=t.difference(te,ie.concat([N])),Te=t.map(ye,function(Ae){var _e=t.cloneArr(ie);return _e.push(Ae),m(N,Ae,V,_e)});return Y.concat(t.flatten(Te))}r.validateNoLeftRecursion=m;function _(N){var B=[];if(t.isEmpty(N))return B;var V=t.first(N);if(V instanceof l.NonTerminal)B.push(V.referencedRule);else if(V instanceof l.Alternative||V instanceof l.Option||V instanceof l.RepetitionMandatory||V instanceof l.RepetitionMandatoryWithSeparator||V instanceof l.RepetitionWithSeparator||V instanceof l.Repetition)B=B.concat(_(V.definition));else if(V instanceof l.Alternation)B=t.flatten(t.map(V.definition,function(q){return _(q.definition)}));else if(!(V instanceof l.Terminal))throw Error("non exhaustive match");var ie=s.isOptionalProd(V),Y=N.length>1;if(ie&&Y){var te=t.drop(N);return B.concat(_(te))}else return B}r.getFirstNoneTerminal=_;var v=function(N){e(B,N);function B(){var V=N!==null&&N.apply(this,arguments)||this;return V.alternations=[],V}return B.prototype.visitAlternation=function(V){this.alternations.push(V)},B}(c.GAstVisitor);function x(N,B){var V=new v;N.accept(V);var ie=V.alternations,Y=t.reduce(ie,function(te,q){var le=t.dropRight(q.definition),ye=t.map(le,function(Te,Ae){var _e=a.nextPossibleTokensAfter([Te],[],null,1);return t.isEmpty(_e)?{message:B.buildEmptyAlternationError({topLevelRule:N,alternation:q,emptyChoiceIdx:Ae}),type:i.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:N.name,occurrence:q.idx,alternative:Ae+1}:null});return te.concat(t.compact(ye))},[]);return Y}r.validateEmptyOrAlternative=x;function S(N,B,V){var ie=new v;N.accept(ie);var Y=ie.alternations;Y=n.reject(Y,function(q){return q.ignoreAmbiguities===!0});var te=t.reduce(Y,function(q,le){var ye=le.idx,Te=le.maxLookahead||B,Ae=o.getLookaheadPathsForOr(ye,N,Te,le),_e=E(Ae,le,N,V),G=b(Ae,le,N,V);return q.concat(_e,G)},[]);return te}r.validateAmbiguousAlternationAlternatives=S;var I=function(N){e(B,N);function B(){var V=N!==null&&N.apply(this,arguments)||this;return V.allProductions=[],V}return B.prototype.visitRepetitionWithSeparator=function(V){this.allProductions.push(V)},B.prototype.visitRepetitionMandatory=function(V){this.allProductions.push(V)},B.prototype.visitRepetitionMandatoryWithSeparator=function(V){this.allProductions.push(V)},B.prototype.visitRepetition=function(V){this.allProductions.push(V)},B}(c.GAstVisitor);r.RepetionCollector=I;function A(N,B){var V=new v;N.accept(V);var ie=V.alternations,Y=t.reduce(ie,function(te,q){return q.definition.length>255&&te.push({message:B.buildTooManyAlternativesError({topLevelRule:N,alternation:q}),type:i.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:N.name,occurrence:q.idx}),te},[]);return Y}r.validateTooManyAlts=A;function C(N,B,V){var ie=[];return n.forEach(N,function(Y){var te=new I;Y.accept(te);var q=te.allProductions;n.forEach(q,function(le){var ye=o.getProdType(le),Te=le.maxLookahead||B,Ae=le.idx,_e=o.getLookaheadPathsForOptionalProd(Ae,Y,ye,Te),G=_e[0];if(n.isEmpty(n.flatten(G))){var P=V.buildEmptyRepetitionError({topLevelRule:Y,repetition:le});ie.push({message:P,type:i.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:Y.name})}})}),ie}r.validateSomeNonEmptyLookaheadPath=C;function E(N,B,V,ie){var Y=[],te=n.reduce(N,function(le,ye,Te){return B.definition[Te].ignoreAmbiguities===!0||n.forEach(ye,function(Ae){var _e=[Te];n.forEach(N,function(G,P){Te!==P&&o.containsPath(G,Ae)&&B.definition[P].ignoreAmbiguities!==!0&&_e.push(P)}),_e.length>1&&!o.containsPath(Y,Ae)&&(Y.push(Ae),le.push({alts:_e,path:Ae}))}),le},[]),q=t.map(te,function(le){var ye=n.map(le.alts,function(Ae){return Ae+1}),Te=ie.buildAlternationAmbiguityError({topLevelRule:V,alternation:B,ambiguityIndices:ye,prefixPath:le.path});return{message:Te,type:i.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:V.name,occurrence:B.idx,alternatives:[le.alts]}});return q}function b(N,B,V,ie){var Y=[],te=n.reduce(N,function(q,le,ye){var Te=n.map(le,function(Ae){return{idx:ye,path:Ae}});return q.concat(Te)},[]);return n.forEach(te,function(q){var le=B.definition[q.idx];if(le.ignoreAmbiguities!==!0){var ye=q.idx,Te=q.path,Ae=n.findAll(te,function(G){return B.definition[G.idx].ignoreAmbiguities!==!0&&G.idx{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.validateGrammar=r.resolveGrammar=void 0;var e=Wt(),t=_S(),n=sx(),i=Xf();function s(a){a=e.defaults(a,{errMsgProvider:i.defaultGrammarResolverErrorProvider});var l={};return e.forEach(a.rules,function(c){l[c.name]=c}),t.resolveGrammar(l,a.errMsgProvider)}r.resolveGrammar=s;function o(a){return a=e.defaults(a,{errMsgProvider:i.defaultGrammarValidatorErrorProvider}),n.validateGrammar(a.rules,a.maxLookahead,a.tokenTypes,a.errMsgProvider,a.grammarName)}r.validateGrammar=o}),Hc=bt(r=>{"use strict";var e=r&&r.__extends||function(){var g=function(y,d){return g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(m,_){m.__proto__=_}||function(m,_){for(var v in _)Object.prototype.hasOwnProperty.call(_,v)&&(m[v]=_[v])},g(y,d)};return function(y,d){if(typeof d!="function"&&d!==null)throw new TypeError("Class extends value "+String(d)+" is not a constructor or null");g(y,d);function m(){this.constructor=y}y.prototype=d===null?Object.create(d):(m.prototype=d.prototype,new m)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.EarlyExitException=r.NotAllInputParsedException=r.NoViableAltException=r.MismatchedTokenException=r.isRecognitionException=void 0;var t=Wt(),n="MismatchedTokenException",i="NoViableAltException",s="EarlyExitException",o="NotAllInputParsedException",a=[n,i,s,o];Object.freeze(a);function l(g){return t.contains(a,g.name)}r.isRecognitionException=l;var c=function(g){e(y,g);function y(d,m){var _=this.constructor,v=g.call(this,d)||this;return v.token=m,v.resyncedTokens=[],Object.setPrototypeOf(v,_.prototype),Error.captureStackTrace&&Error.captureStackTrace(v,v.constructor),v}return y}(Error),u=function(g){e(y,g);function y(d,m,_){var v=g.call(this,d,m)||this;return v.previousToken=_,v.name=n,v}return y}(c);r.MismatchedTokenException=u;var h=function(g){e(y,g);function y(d,m,_){var v=g.call(this,d,m)||this;return v.previousToken=_,v.name=i,v}return y}(c);r.NoViableAltException=h;var f=function(g){e(y,g);function y(d,m){var _=g.call(this,d,m)||this;return _.name=o,_}return y}(c);r.NotAllInputParsedException=f;var p=function(g){e(y,g);function y(d,m,_){var v=g.call(this,d,m)||this;return v.previousToken=_,v.name=s,v}return y}(c);r.EarlyExitException=p}),ox=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.attemptInRepetitionRecovery=r.Recoverable=r.InRuleRecoveryException=r.IN_RULE_RECOVERY_EXCEPTION=r.EOF_FOLLOW_KEY=void 0;var e=Co(),t=Wt(),n=Hc(),i=rx(),s=Xi();r.EOF_FOLLOW_KEY={},r.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function o(c){this.name=r.IN_RULE_RECOVERY_EXCEPTION,this.message=c}r.InRuleRecoveryException=o,o.prototype=Error.prototype;var a=function(){function c(){}return c.prototype.initRecoverable=function(u){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=t.has(u,"recoveryEnabled")?u.recoveryEnabled:s.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=l)},c.prototype.getTokenToInsert=function(u){var h=e.createTokenInstance(u,"",NaN,NaN,NaN,NaN,NaN,NaN);return h.isInsertedInRecovery=!0,h},c.prototype.canTokenTypeBeInsertedInRecovery=function(u){return!0},c.prototype.tryInRepetitionRecovery=function(u,h,f,p){for(var g=this,y=this.findReSyncTokenType(),d=this.exportLexerState(),m=[],_=!1,v=this.LA(1),x=this.LA(1),S=function(){var I=g.LA(0),A=g.errorMessageProvider.buildMismatchTokenMessage({expected:p,actual:v,previous:I,ruleName:g.getCurrRuleFullName()}),C=new n.MismatchedTokenException(A,v,g.LA(0));C.resyncedTokens=t.dropRight(m),g.SAVE_ERROR(C)};!_;)if(this.tokenMatcher(x,p)){S();return}else if(f.call(this)){S(),u.apply(this,h);return}else this.tokenMatcher(x,y)?_=!0:(x=this.SKIP_TOKEN(),this.addToResyncTokens(x,m));this.importLexerState(d)},c.prototype.shouldInRepetitionRecoveryBeTried=function(u,h,f){return!(f===!1||u===void 0||h===void 0||this.tokenMatcher(this.LA(1),u)||this.isBackTracking()||this.canPerformInRuleRecovery(u,this.getFollowsForInRuleRecovery(u,h)))},c.prototype.getFollowsForInRuleRecovery=function(u,h){var f=this.getCurrentGrammarPath(u,h),p=this.getNextPossibleTokenTypes(f);return p},c.prototype.tryInRuleRecovery=function(u,h){if(this.canRecoverWithSingleTokenInsertion(u,h)){var f=this.getTokenToInsert(u);return f}if(this.canRecoverWithSingleTokenDeletion(u)){var p=this.SKIP_TOKEN();return this.consumeToken(),p}throw new o("sad sad panda")},c.prototype.canPerformInRuleRecovery=function(u,h){return this.canRecoverWithSingleTokenInsertion(u,h)||this.canRecoverWithSingleTokenDeletion(u)},c.prototype.canRecoverWithSingleTokenInsertion=function(u,h){var f=this;if(!this.canTokenTypeBeInsertedInRecovery(u)||t.isEmpty(h))return!1;var p=this.LA(1),g=t.find(h,function(y){return f.tokenMatcher(p,y)})!==void 0;return g},c.prototype.canRecoverWithSingleTokenDeletion=function(u){var h=this.tokenMatcher(this.LA(2),u);return h},c.prototype.isInCurrentRuleReSyncSet=function(u){var h=this.getCurrFollowKey(),f=this.getFollowSetFromFollowKey(h);return t.contains(f,u)},c.prototype.findReSyncTokenType=function(){for(var u=this.flattenFollowSet(),h=this.LA(1),f=2;;){var p=h.tokenType;if(t.contains(u,p))return p;h=this.LA(f),f++}},c.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return r.EOF_FOLLOW_KEY;var u=this.getLastExplicitRuleShortName(),h=this.getLastExplicitRuleOccurrenceIndex(),f=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(u),idxInCallingRule:h,inRule:this.shortRuleNameToFullName(f)}},c.prototype.buildFullFollowKeyStack=function(){var u=this,h=this.RULE_STACK,f=this.RULE_OCCURRENCE_STACK;return t.map(h,function(p,g){return g===0?r.EOF_FOLLOW_KEY:{ruleName:u.shortRuleNameToFullName(p),idxInCallingRule:f[g],inRule:u.shortRuleNameToFullName(h[g-1])}})},c.prototype.flattenFollowSet=function(){var u=this,h=t.map(this.buildFullFollowKeyStack(),function(f){return u.getFollowSetFromFollowKey(f)});return t.flatten(h)},c.prototype.getFollowSetFromFollowKey=function(u){if(u===r.EOF_FOLLOW_KEY)return[e.EOF];var h=u.ruleName+u.idxInCallingRule+i.IN+u.inRule;return this.resyncFollows[h]},c.prototype.addToResyncTokens=function(u,h){return this.tokenMatcher(u,e.EOF)||h.push(u),h},c.prototype.reSyncTo=function(u){for(var h=[],f=this.LA(1);this.tokenMatcher(f,u)===!1;)f=this.SKIP_TOKEN(),this.addToResyncTokens(f,h);return t.dropRight(h)},c.prototype.attemptInRepetitionRecovery=function(u,h,f,p,g,y,d){},c.prototype.getCurrentGrammarPath=function(u,h){var f=this.getHumanReadableRuleStack(),p=t.cloneArr(this.RULE_OCCURRENCE_STACK),g={ruleStack:f,occurrenceStack:p,lastTok:u,lastTokOccurrence:h};return g},c.prototype.getHumanReadableRuleStack=function(){var u=this;return t.map(this.RULE_STACK,function(h){return u.shortRuleNameToFullName(h)})},c}();r.Recoverable=a;function l(c,u,h,f,p,g,y){var d=this.getKeyForAutomaticLookahead(f,p),m=this.firstAfterRepMap[d];if(m===void 0){var _=this.getCurrRuleFullName(),v=this.getGAstProductions()[_],x=new g(v,p);m=x.startWalking(),this.firstAfterRepMap[d]=m}var S=m.token,I=m.occurrence,A=m.isEndOfRule;this.RULE_STACK.length===1&&A&&S===void 0&&(S=e.EOF,I=1),this.shouldInRepetitionRecoveryBeTried(S,I,y)&&this.tryInRepetitionRecovery(c,u,h,S)}r.attemptInRepetitionRecovery=l}),Em=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.getKeyForAutomaticLookahead=r.AT_LEAST_ONE_SEP_IDX=r.MANY_SEP_IDX=r.AT_LEAST_ONE_IDX=r.MANY_IDX=r.OPTION_IDX=r.OR_IDX=r.BITS_FOR_ALT_IDX=r.BITS_FOR_RULE_IDX=r.BITS_FOR_OCCURRENCE_IDX=r.BITS_FOR_METHOD_TYPE=void 0,r.BITS_FOR_METHOD_TYPE=4,r.BITS_FOR_OCCURRENCE_IDX=8,r.BITS_FOR_RULE_IDX=12,r.BITS_FOR_ALT_IDX=8,r.OR_IDX=1<{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.LooksAhead=void 0;var e=jf(),t=Wt(),n=Xi(),i=Em(),s=Wf(),o=function(){function a(){}return a.prototype.initLooksAhead=function(l){this.dynamicTokensEnabled=t.has(l,"dynamicTokensEnabled")?l.dynamicTokensEnabled:n.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=t.has(l,"maxLookahead")?l.maxLookahead:n.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=t.isES2015MapSupported()?new Map:[],t.isES2015MapSupported()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},a.prototype.preComputeLookaheadFunctions=function(l){var c=this;t.forEach(l,function(u){c.TRACE_INIT(u.name+" Rule Lookahead",function(){var h=s.collectMethods(u),f=h.alternation,p=h.repetition,g=h.option,y=h.repetitionMandatory,d=h.repetitionMandatoryWithSeparator,m=h.repetitionWithSeparator;t.forEach(f,function(_){var v=_.idx===0?"":_.idx;c.TRACE_INIT(""+s.getProductionDslName(_)+v,function(){var x=e.buildLookaheadFuncForOr(_.idx,u,_.maxLookahead||c.maxLookahead,_.hasPredicates,c.dynamicTokensEnabled,c.lookAheadBuilderForAlternatives),S=i.getKeyForAutomaticLookahead(c.fullRuleNameToShort[u.name],i.OR_IDX,_.idx);c.setLaFuncCache(S,x)})}),t.forEach(p,function(_){c.computeLookaheadFunc(u,_.idx,i.MANY_IDX,e.PROD_TYPE.REPETITION,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(g,function(_){c.computeLookaheadFunc(u,_.idx,i.OPTION_IDX,e.PROD_TYPE.OPTION,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(y,function(_){c.computeLookaheadFunc(u,_.idx,i.AT_LEAST_ONE_IDX,e.PROD_TYPE.REPETITION_MANDATORY,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(d,function(_){c.computeLookaheadFunc(u,_.idx,i.AT_LEAST_ONE_SEP_IDX,e.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,_.maxLookahead,s.getProductionDslName(_))}),t.forEach(m,function(_){c.computeLookaheadFunc(u,_.idx,i.MANY_SEP_IDX,e.PROD_TYPE.REPETITION_WITH_SEPARATOR,_.maxLookahead,s.getProductionDslName(_))})})})},a.prototype.computeLookaheadFunc=function(l,c,u,h,f,p){var g=this;this.TRACE_INIT(""+p+(c===0?"":c),function(){var y=e.buildLookaheadFuncForOptionalProd(c,l,f||g.maxLookahead,g.dynamicTokensEnabled,h,g.lookAheadBuilderForOptional),d=i.getKeyForAutomaticLookahead(g.fullRuleNameToShort[l.name],u,c);g.setLaFuncCache(d,y)})},a.prototype.lookAheadBuilderForOptional=function(l,c,u){return e.buildSingleAlternativeLookaheadFunction(l,c,u)},a.prototype.lookAheadBuilderForAlternatives=function(l,c,u,h){return e.buildAlternativesLookAheadFunc(l,c,u,h)},a.prototype.getKeyForAutomaticLookahead=function(l,c){var u=this.getLastExplicitRuleShortName();return i.getKeyForAutomaticLookahead(u,l,c)},a.prototype.getLaFuncFromCache=function(l){},a.prototype.getLaFuncFromMap=function(l){return this.lookAheadFuncsCache.get(l)},a.prototype.getLaFuncFromObj=function(l){return this.lookAheadFuncsCache[l]},a.prototype.setLaFuncCache=function(l,c){},a.prototype.setLaFuncCacheUsingMap=function(l,c){this.lookAheadFuncsCache.set(l,c)},a.prototype.setLaFuncUsingObj=function(l,c){this.lookAheadFuncsCache[l]=c},a}();r.LooksAhead=o}),ES=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.addNoneTerminalToCst=r.addTerminalToCst=r.setNodeLocationFull=r.setNodeLocationOnlyOffset=void 0;function e(s,o){isNaN(s.startOffset)===!0?(s.startOffset=o.startOffset,s.endOffset=o.endOffset):s.endOffset{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defineNameProp=r.functionName=r.classNameFromInstance=void 0;var e=Wt();function t(o){return i(o.constructor)}r.classNameFromInstance=t;var n="name";function i(o){var a=o.name;return a||"anonymous"}r.functionName=i;function s(o,a){var l=Object.getOwnPropertyDescriptor(o,n);return e.isUndefined(l)||l.configurable?(Object.defineProperty(o,n,{enumerable:!1,configurable:!0,writable:!1,value:a}),!0):!1}r.defineNameProp=s}),bS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.validateRedundantMethods=r.validateMissingCstMethods=r.validateVisitor=r.CstVisitorDefinitionError=r.createBaseVisitorConstructorWithDefaults=r.createBaseSemanticVisitorConstructor=r.defaultVisit=void 0;var e=Wt(),t=ax();function n(h,f){for(var p=e.keys(h),g=p.length,y=0;y: `+(""+d.join(` `).replace(/\n/g,` - `)))}}};return p.prototype=g,p.prototype.constructor=p,p._RULE_NAMES=f,p}r.createBaseSemanticVisitorConstructor=i;function s(h,f,p){var g=function(){};t.defineNameProp(g,h+"BaseSemanticsWithDefaults");var v=Object.create(p.prototype);return e.forEach(f,function(d){v[d]=n}),g.prototype=v,g.prototype.constructor=g,g}r.createBaseVisitorConstructorWithDefaults=s;var o;(function(h){h[h.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",h[h.MISSING_METHOD=1]="MISSING_METHOD"})(o=r.CstVisitorDefinitionError||(r.CstVisitorDefinitionError={}));function a(h,f){var p=l(h,f),g=u(h,f);return p.concat(g)}r.validateVisitor=a;function l(h,f){var p=e.map(f,function(g){if(!e.isFunction(h[g]))return{msg:"Missing visitor method: <"+g+"> on "+t.functionName(h.constructor)+" CST Visitor.",type:o.MISSING_METHOD,methodName:g}});return e.compact(p)}r.validateMissingCstMethods=l;var c=["constructor","visit","validateVisitor"];function u(h,f){var p=[];for(var g in h)e.isFunction(h[g])&&!e.contains(c,g)&&!e.contains(f,g)&&p.push({msg:"Redundant visitor method: <"+g+"> on "+t.functionName(h.constructor)+` CST Visitor + `)))}}};return p.prototype=g,p.prototype.constructor=p,p._RULE_NAMES=f,p}r.createBaseSemanticVisitorConstructor=i;function s(h,f,p){var g=function(){};t.defineNameProp(g,h+"BaseSemanticsWithDefaults");var y=Object.create(p.prototype);return e.forEach(f,function(d){y[d]=n}),g.prototype=y,g.prototype.constructor=g,g}r.createBaseVisitorConstructorWithDefaults=s;var o;(function(h){h[h.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",h[h.MISSING_METHOD=1]="MISSING_METHOD"})(o=r.CstVisitorDefinitionError||(r.CstVisitorDefinitionError={}));function a(h,f){var p=l(h,f),g=u(h,f);return p.concat(g)}r.validateVisitor=a;function l(h,f){var p=e.map(f,function(g){if(!e.isFunction(h[g]))return{msg:"Missing visitor method: <"+g+"> on "+t.functionName(h.constructor)+" CST Visitor.",type:o.MISSING_METHOD,methodName:g}});return e.compact(p)}r.validateMissingCstMethods=l;var c=["constructor","visit","validateVisitor"];function u(h,f){var p=[];for(var g in h)e.isFunction(h[g])&&!e.contains(c,g)&&!e.contains(f,g)&&p.push({msg:"Redundant visitor method: <"+g+"> on "+t.functionName(h.constructor)+` CST Visitor There is no Grammar Rule corresponding to this method's name. -`,type:o.REDUNDANT_METHOD,methodName:g});return p}r.validateRedundantMethods=u}),_S=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.TreeBuilder=void 0;var e=yS(),t=Ut(),n=xS(),i=Ni(),s=function(){function o(){}return o.prototype.initTreeBuilder=function(a){if(this.CST_STACK=[],this.outputCst=a.outputCst,this.nodeLocationTracking=t.has(a,"nodeLocationTracking")?a.nodeLocationTracking:i.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=t.NOOP,this.cstFinallyStateUpdate=t.NOOP,this.cstPostTerminal=t.NOOP,this.cstPostNonTerminal=t.NOOP,this.cstPostRule=t.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=e.setNodeLocationFull,this.setNodeLocationFromNode=e.setNodeLocationFull,this.cstPostRule=t.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=t.NOOP,this.setNodeLocationFromNode=t.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=e.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=e.setNodeLocationOnlyOffset,this.cstPostRule=t.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=t.NOOP,this.setNodeLocationFromNode=t.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=t.NOOP,this.setNodeLocationFromNode=t.NOOP,this.cstPostRule=t.NOOP,this.setInitialNodeLocation=t.NOOP;else throw Error('Invalid config option: "'+a.nodeLocationTracking+'"')},o.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(a){a.location={startOffset:NaN,endOffset:NaN}},o.prototype.setInitialNodeLocationOnlyOffsetRegular=function(a){a.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},o.prototype.setInitialNodeLocationFullRecovery=function(a){a.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},o.prototype.setInitialNodeLocationFullRegular=function(a){var l=this.LA(1);a.location={startOffset:l.startOffset,startLine:l.startLine,startColumn:l.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},o.prototype.cstInvocationStateUpdate=function(a,l){var c={name:a,children:{}};this.setInitialNodeLocation(c),this.CST_STACK.push(c)},o.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},o.prototype.cstPostRuleFull=function(a){var l=this.LA(0),c=a.location;c.startOffset<=l.startOffset?(c.endOffset=l.endOffset,c.endLine=l.endLine,c.endColumn=l.endColumn):(c.startOffset=NaN,c.startLine=NaN,c.startColumn=NaN)},o.prototype.cstPostRuleOnlyOffset=function(a){var l=this.LA(0),c=a.location;c.startOffset<=l.startOffset?c.endOffset=l.endOffset:c.startOffset=NaN},o.prototype.cstPostTerminal=function(a,l){var c=this.CST_STACK[this.CST_STACK.length-1];e.addTerminalToCst(c,l,a),this.setNodeLocationFromToken(c.location,l)},o.prototype.cstPostNonTerminal=function(a,l){var c=this.CST_STACK[this.CST_STACK.length-1];e.addNoneTerminalToCst(c,l,a),this.setNodeLocationFromNode(c.location,a.location)},o.prototype.getBaseCstVisitorConstructor=function(){if(t.isUndefined(this.baseCstVisitorConstructor)){var a=n.createBaseSemanticVisitorConstructor(this.className,t.keys(this.gastProductionsCache));return this.baseCstVisitorConstructor=a,a}return this.baseCstVisitorConstructor},o.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if(t.isUndefined(this.baseCstVisitorWithDefaultsConstructor)){var a=n.createBaseVisitorConstructorWithDefaults(this.className,t.keys(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=a,a}return this.baseCstVisitorWithDefaultsConstructor},o.prototype.getLastExplicitRuleShortName=function(){var a=this.RULE_STACK;return a[a.length-1]},o.prototype.getPreviousExplicitRuleShortName=function(){var a=this.RULE_STACK;return a[a.length-2]},o.prototype.getLastExplicitRuleOccurrenceIndex=function(){var a=this.RULE_OCCURRENCE_STACK;return a[a.length-1]},o}();r.TreeBuilder=s}),TS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.LexerAdapter=void 0;var e=Ni(),t=function(){function n(){}return n.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(n.prototype,"input",{get:function(){return this.tokVector},set:function(i){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=i,this.tokVectorLength=i.length},enumerable:!1,configurable:!0}),n.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):e.END_OF_FILE},n.prototype.LA=function(i){var s=this.currIdx+i;return s<0||this.tokVectorLength<=s?e.END_OF_FILE:this.tokVector[s]},n.prototype.consumeToken=function(){this.currIdx++},n.prototype.exportLexerState=function(){return this.currIdx},n.prototype.importLexerState=function(i){this.currIdx=i},n.prototype.resetLexerState=function(){this.currIdx=-1},n.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},n.prototype.getLexerPosition=function(){return this.exportLexerState()},n}();r.LexerAdapter=t}),MS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RecognizerApi=void 0;var e=Ut(),t=ic(),n=Ni(),i=Ch(),s=q0(),o=xi(),a=function(){function l(){}return l.prototype.ACTION=function(c){return c.call(this)},l.prototype.consume=function(c,u,h){return this.consumeInternal(u,c,h)},l.prototype.subrule=function(c,u,h){return this.subruleInternal(u,c,h)},l.prototype.option=function(c,u){return this.optionInternal(u,c)},l.prototype.or=function(c,u){return this.orInternal(u,c)},l.prototype.many=function(c,u){return this.manyInternal(c,u)},l.prototype.atLeastOne=function(c,u){return this.atLeastOneInternal(c,u)},l.prototype.CONSUME=function(c,u){return this.consumeInternal(c,0,u)},l.prototype.CONSUME1=function(c,u){return this.consumeInternal(c,1,u)},l.prototype.CONSUME2=function(c,u){return this.consumeInternal(c,2,u)},l.prototype.CONSUME3=function(c,u){return this.consumeInternal(c,3,u)},l.prototype.CONSUME4=function(c,u){return this.consumeInternal(c,4,u)},l.prototype.CONSUME5=function(c,u){return this.consumeInternal(c,5,u)},l.prototype.CONSUME6=function(c,u){return this.consumeInternal(c,6,u)},l.prototype.CONSUME7=function(c,u){return this.consumeInternal(c,7,u)},l.prototype.CONSUME8=function(c,u){return this.consumeInternal(c,8,u)},l.prototype.CONSUME9=function(c,u){return this.consumeInternal(c,9,u)},l.prototype.SUBRULE=function(c,u){return this.subruleInternal(c,0,u)},l.prototype.SUBRULE1=function(c,u){return this.subruleInternal(c,1,u)},l.prototype.SUBRULE2=function(c,u){return this.subruleInternal(c,2,u)},l.prototype.SUBRULE3=function(c,u){return this.subruleInternal(c,3,u)},l.prototype.SUBRULE4=function(c,u){return this.subruleInternal(c,4,u)},l.prototype.SUBRULE5=function(c,u){return this.subruleInternal(c,5,u)},l.prototype.SUBRULE6=function(c,u){return this.subruleInternal(c,6,u)},l.prototype.SUBRULE7=function(c,u){return this.subruleInternal(c,7,u)},l.prototype.SUBRULE8=function(c,u){return this.subruleInternal(c,8,u)},l.prototype.SUBRULE9=function(c,u){return this.subruleInternal(c,9,u)},l.prototype.OPTION=function(c){return this.optionInternal(c,0)},l.prototype.OPTION1=function(c){return this.optionInternal(c,1)},l.prototype.OPTION2=function(c){return this.optionInternal(c,2)},l.prototype.OPTION3=function(c){return this.optionInternal(c,3)},l.prototype.OPTION4=function(c){return this.optionInternal(c,4)},l.prototype.OPTION5=function(c){return this.optionInternal(c,5)},l.prototype.OPTION6=function(c){return this.optionInternal(c,6)},l.prototype.OPTION7=function(c){return this.optionInternal(c,7)},l.prototype.OPTION8=function(c){return this.optionInternal(c,8)},l.prototype.OPTION9=function(c){return this.optionInternal(c,9)},l.prototype.OR=function(c){return this.orInternal(c,0)},l.prototype.OR1=function(c){return this.orInternal(c,1)},l.prototype.OR2=function(c){return this.orInternal(c,2)},l.prototype.OR3=function(c){return this.orInternal(c,3)},l.prototype.OR4=function(c){return this.orInternal(c,4)},l.prototype.OR5=function(c){return this.orInternal(c,5)},l.prototype.OR6=function(c){return this.orInternal(c,6)},l.prototype.OR7=function(c){return this.orInternal(c,7)},l.prototype.OR8=function(c){return this.orInternal(c,8)},l.prototype.OR9=function(c){return this.orInternal(c,9)},l.prototype.MANY=function(c){this.manyInternal(0,c)},l.prototype.MANY1=function(c){this.manyInternal(1,c)},l.prototype.MANY2=function(c){this.manyInternal(2,c)},l.prototype.MANY3=function(c){this.manyInternal(3,c)},l.prototype.MANY4=function(c){this.manyInternal(4,c)},l.prototype.MANY5=function(c){this.manyInternal(5,c)},l.prototype.MANY6=function(c){this.manyInternal(6,c)},l.prototype.MANY7=function(c){this.manyInternal(7,c)},l.prototype.MANY8=function(c){this.manyInternal(8,c)},l.prototype.MANY9=function(c){this.manyInternal(9,c)},l.prototype.MANY_SEP=function(c){this.manySepFirstInternal(0,c)},l.prototype.MANY_SEP1=function(c){this.manySepFirstInternal(1,c)},l.prototype.MANY_SEP2=function(c){this.manySepFirstInternal(2,c)},l.prototype.MANY_SEP3=function(c){this.manySepFirstInternal(3,c)},l.prototype.MANY_SEP4=function(c){this.manySepFirstInternal(4,c)},l.prototype.MANY_SEP5=function(c){this.manySepFirstInternal(5,c)},l.prototype.MANY_SEP6=function(c){this.manySepFirstInternal(6,c)},l.prototype.MANY_SEP7=function(c){this.manySepFirstInternal(7,c)},l.prototype.MANY_SEP8=function(c){this.manySepFirstInternal(8,c)},l.prototype.MANY_SEP9=function(c){this.manySepFirstInternal(9,c)},l.prototype.AT_LEAST_ONE=function(c){this.atLeastOneInternal(0,c)},l.prototype.AT_LEAST_ONE1=function(c){return this.atLeastOneInternal(1,c)},l.prototype.AT_LEAST_ONE2=function(c){this.atLeastOneInternal(2,c)},l.prototype.AT_LEAST_ONE3=function(c){this.atLeastOneInternal(3,c)},l.prototype.AT_LEAST_ONE4=function(c){this.atLeastOneInternal(4,c)},l.prototype.AT_LEAST_ONE5=function(c){this.atLeastOneInternal(5,c)},l.prototype.AT_LEAST_ONE6=function(c){this.atLeastOneInternal(6,c)},l.prototype.AT_LEAST_ONE7=function(c){this.atLeastOneInternal(7,c)},l.prototype.AT_LEAST_ONE8=function(c){this.atLeastOneInternal(8,c)},l.prototype.AT_LEAST_ONE9=function(c){this.atLeastOneInternal(9,c)},l.prototype.AT_LEAST_ONE_SEP=function(c){this.atLeastOneSepFirstInternal(0,c)},l.prototype.AT_LEAST_ONE_SEP1=function(c){this.atLeastOneSepFirstInternal(1,c)},l.prototype.AT_LEAST_ONE_SEP2=function(c){this.atLeastOneSepFirstInternal(2,c)},l.prototype.AT_LEAST_ONE_SEP3=function(c){this.atLeastOneSepFirstInternal(3,c)},l.prototype.AT_LEAST_ONE_SEP4=function(c){this.atLeastOneSepFirstInternal(4,c)},l.prototype.AT_LEAST_ONE_SEP5=function(c){this.atLeastOneSepFirstInternal(5,c)},l.prototype.AT_LEAST_ONE_SEP6=function(c){this.atLeastOneSepFirstInternal(6,c)},l.prototype.AT_LEAST_ONE_SEP7=function(c){this.atLeastOneSepFirstInternal(7,c)},l.prototype.AT_LEAST_ONE_SEP8=function(c){this.atLeastOneSepFirstInternal(8,c)},l.prototype.AT_LEAST_ONE_SEP9=function(c){this.atLeastOneSepFirstInternal(9,c)},l.prototype.RULE=function(c,u,h){if(h===void 0&&(h=n.DEFAULT_RULE_CONFIG),e.contains(this.definedRulesNames,c)){var f=i.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:c,grammarName:this.className}),p={message:f,type:n.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:c};this.definitionErrors.push(p)}this.definedRulesNames.push(c);var g=this.defineRule(c,u,h);return this[c]=g,g},l.prototype.OVERRIDE_RULE=function(c,u,h){h===void 0&&(h=n.DEFAULT_RULE_CONFIG);var f=[];f=f.concat(s.validateRuleIsOverridden(c,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(f);var p=this.defineRule(c,u,h);return this[c]=p,p},l.prototype.BACKTRACK=function(c,u){return function(){this.isBackTrackingStack.push(1);var h=this.saveRecogState();try{return c.apply(this,u),!0}catch(f){if(t.isRecognitionException(f))return!1;throw f}finally{this.reloadRecogState(h),this.isBackTrackingStack.pop()}}},l.prototype.getGAstProductions=function(){return this.gastProductionsCache},l.prototype.getSerializedGastProductions=function(){return o.serializeGrammar(e.values(this.gastProductionsCache))},l}();r.RecognizerApi=a}),ES=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RecognizerEngine=void 0;var e=Ut(),t=ap(),n=ic(),i=Ih(),s=Rh(),o=Ni(),a=Y0(),l=io(),c=tc(),u=K0(),h=function(){function f(){}return f.prototype.initRecognizerEngine=function(p,g){if(this.className=u.classNameFromInstance(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=c.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},e.has(g,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. +`,type:o.REDUNDANT_METHOD,methodName:g});return p}r.validateRedundantMethods=u}),SS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.TreeBuilder=void 0;var e=ES(),t=Wt(),n=bS(),i=Xi(),s=function(){function o(){}return o.prototype.initTreeBuilder=function(a){if(this.CST_STACK=[],this.outputCst=a.outputCst,this.nodeLocationTracking=t.has(a,"nodeLocationTracking")?a.nodeLocationTracking:i.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=t.NOOP,this.cstFinallyStateUpdate=t.NOOP,this.cstPostTerminal=t.NOOP,this.cstPostNonTerminal=t.NOOP,this.cstPostRule=t.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=e.setNodeLocationFull,this.setNodeLocationFromNode=e.setNodeLocationFull,this.cstPostRule=t.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=t.NOOP,this.setNodeLocationFromNode=t.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=e.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=e.setNodeLocationOnlyOffset,this.cstPostRule=t.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=t.NOOP,this.setNodeLocationFromNode=t.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=t.NOOP,this.setNodeLocationFromNode=t.NOOP,this.cstPostRule=t.NOOP,this.setInitialNodeLocation=t.NOOP;else throw Error('Invalid config option: "'+a.nodeLocationTracking+'"')},o.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(a){a.location={startOffset:NaN,endOffset:NaN}},o.prototype.setInitialNodeLocationOnlyOffsetRegular=function(a){a.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},o.prototype.setInitialNodeLocationFullRecovery=function(a){a.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},o.prototype.setInitialNodeLocationFullRegular=function(a){var l=this.LA(1);a.location={startOffset:l.startOffset,startLine:l.startLine,startColumn:l.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},o.prototype.cstInvocationStateUpdate=function(a,l){var c={name:a,children:{}};this.setInitialNodeLocation(c),this.CST_STACK.push(c)},o.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},o.prototype.cstPostRuleFull=function(a){var l=this.LA(0),c=a.location;c.startOffset<=l.startOffset?(c.endOffset=l.endOffset,c.endLine=l.endLine,c.endColumn=l.endColumn):(c.startOffset=NaN,c.startLine=NaN,c.startColumn=NaN)},o.prototype.cstPostRuleOnlyOffset=function(a){var l=this.LA(0),c=a.location;c.startOffset<=l.startOffset?c.endOffset=l.endOffset:c.startOffset=NaN},o.prototype.cstPostTerminal=function(a,l){var c=this.CST_STACK[this.CST_STACK.length-1];e.addTerminalToCst(c,l,a),this.setNodeLocationFromToken(c.location,l)},o.prototype.cstPostNonTerminal=function(a,l){var c=this.CST_STACK[this.CST_STACK.length-1];e.addNoneTerminalToCst(c,l,a),this.setNodeLocationFromNode(c.location,a.location)},o.prototype.getBaseCstVisitorConstructor=function(){if(t.isUndefined(this.baseCstVisitorConstructor)){var a=n.createBaseSemanticVisitorConstructor(this.className,t.keys(this.gastProductionsCache));return this.baseCstVisitorConstructor=a,a}return this.baseCstVisitorConstructor},o.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if(t.isUndefined(this.baseCstVisitorWithDefaultsConstructor)){var a=n.createBaseVisitorConstructorWithDefaults(this.className,t.keys(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=a,a}return this.baseCstVisitorWithDefaultsConstructor},o.prototype.getLastExplicitRuleShortName=function(){var a=this.RULE_STACK;return a[a.length-1]},o.prototype.getPreviousExplicitRuleShortName=function(){var a=this.RULE_STACK;return a[a.length-2]},o.prototype.getLastExplicitRuleOccurrenceIndex=function(){var a=this.RULE_OCCURRENCE_STACK;return a[a.length-1]},o}();r.TreeBuilder=s}),AS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.LexerAdapter=void 0;var e=Xi(),t=function(){function n(){}return n.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(n.prototype,"input",{get:function(){return this.tokVector},set:function(i){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=i,this.tokVectorLength=i.length},enumerable:!1,configurable:!0}),n.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):e.END_OF_FILE},n.prototype.LA=function(i){var s=this.currIdx+i;return s<0||this.tokVectorLength<=s?e.END_OF_FILE:this.tokVector[s]},n.prototype.consumeToken=function(){this.currIdx++},n.prototype.exportLexerState=function(){return this.currIdx},n.prototype.importLexerState=function(i){this.currIdx=i},n.prototype.resetLexerState=function(){this.currIdx=-1},n.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},n.prototype.getLexerPosition=function(){return this.exportLexerState()},n}();r.LexerAdapter=t}),wS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RecognizerApi=void 0;var e=Wt(),t=Hc(),n=Xi(),i=Xf(),s=sx(),o=Li(),a=function(){function l(){}return l.prototype.ACTION=function(c){return c.call(this)},l.prototype.consume=function(c,u,h){return this.consumeInternal(u,c,h)},l.prototype.subrule=function(c,u,h){return this.subruleInternal(u,c,h)},l.prototype.option=function(c,u){return this.optionInternal(u,c)},l.prototype.or=function(c,u){return this.orInternal(u,c)},l.prototype.many=function(c,u){return this.manyInternal(c,u)},l.prototype.atLeastOne=function(c,u){return this.atLeastOneInternal(c,u)},l.prototype.CONSUME=function(c,u){return this.consumeInternal(c,0,u)},l.prototype.CONSUME1=function(c,u){return this.consumeInternal(c,1,u)},l.prototype.CONSUME2=function(c,u){return this.consumeInternal(c,2,u)},l.prototype.CONSUME3=function(c,u){return this.consumeInternal(c,3,u)},l.prototype.CONSUME4=function(c,u){return this.consumeInternal(c,4,u)},l.prototype.CONSUME5=function(c,u){return this.consumeInternal(c,5,u)},l.prototype.CONSUME6=function(c,u){return this.consumeInternal(c,6,u)},l.prototype.CONSUME7=function(c,u){return this.consumeInternal(c,7,u)},l.prototype.CONSUME8=function(c,u){return this.consumeInternal(c,8,u)},l.prototype.CONSUME9=function(c,u){return this.consumeInternal(c,9,u)},l.prototype.SUBRULE=function(c,u){return this.subruleInternal(c,0,u)},l.prototype.SUBRULE1=function(c,u){return this.subruleInternal(c,1,u)},l.prototype.SUBRULE2=function(c,u){return this.subruleInternal(c,2,u)},l.prototype.SUBRULE3=function(c,u){return this.subruleInternal(c,3,u)},l.prototype.SUBRULE4=function(c,u){return this.subruleInternal(c,4,u)},l.prototype.SUBRULE5=function(c,u){return this.subruleInternal(c,5,u)},l.prototype.SUBRULE6=function(c,u){return this.subruleInternal(c,6,u)},l.prototype.SUBRULE7=function(c,u){return this.subruleInternal(c,7,u)},l.prototype.SUBRULE8=function(c,u){return this.subruleInternal(c,8,u)},l.prototype.SUBRULE9=function(c,u){return this.subruleInternal(c,9,u)},l.prototype.OPTION=function(c){return this.optionInternal(c,0)},l.prototype.OPTION1=function(c){return this.optionInternal(c,1)},l.prototype.OPTION2=function(c){return this.optionInternal(c,2)},l.prototype.OPTION3=function(c){return this.optionInternal(c,3)},l.prototype.OPTION4=function(c){return this.optionInternal(c,4)},l.prototype.OPTION5=function(c){return this.optionInternal(c,5)},l.prototype.OPTION6=function(c){return this.optionInternal(c,6)},l.prototype.OPTION7=function(c){return this.optionInternal(c,7)},l.prototype.OPTION8=function(c){return this.optionInternal(c,8)},l.prototype.OPTION9=function(c){return this.optionInternal(c,9)},l.prototype.OR=function(c){return this.orInternal(c,0)},l.prototype.OR1=function(c){return this.orInternal(c,1)},l.prototype.OR2=function(c){return this.orInternal(c,2)},l.prototype.OR3=function(c){return this.orInternal(c,3)},l.prototype.OR4=function(c){return this.orInternal(c,4)},l.prototype.OR5=function(c){return this.orInternal(c,5)},l.prototype.OR6=function(c){return this.orInternal(c,6)},l.prototype.OR7=function(c){return this.orInternal(c,7)},l.prototype.OR8=function(c){return this.orInternal(c,8)},l.prototype.OR9=function(c){return this.orInternal(c,9)},l.prototype.MANY=function(c){this.manyInternal(0,c)},l.prototype.MANY1=function(c){this.manyInternal(1,c)},l.prototype.MANY2=function(c){this.manyInternal(2,c)},l.prototype.MANY3=function(c){this.manyInternal(3,c)},l.prototype.MANY4=function(c){this.manyInternal(4,c)},l.prototype.MANY5=function(c){this.manyInternal(5,c)},l.prototype.MANY6=function(c){this.manyInternal(6,c)},l.prototype.MANY7=function(c){this.manyInternal(7,c)},l.prototype.MANY8=function(c){this.manyInternal(8,c)},l.prototype.MANY9=function(c){this.manyInternal(9,c)},l.prototype.MANY_SEP=function(c){this.manySepFirstInternal(0,c)},l.prototype.MANY_SEP1=function(c){this.manySepFirstInternal(1,c)},l.prototype.MANY_SEP2=function(c){this.manySepFirstInternal(2,c)},l.prototype.MANY_SEP3=function(c){this.manySepFirstInternal(3,c)},l.prototype.MANY_SEP4=function(c){this.manySepFirstInternal(4,c)},l.prototype.MANY_SEP5=function(c){this.manySepFirstInternal(5,c)},l.prototype.MANY_SEP6=function(c){this.manySepFirstInternal(6,c)},l.prototype.MANY_SEP7=function(c){this.manySepFirstInternal(7,c)},l.prototype.MANY_SEP8=function(c){this.manySepFirstInternal(8,c)},l.prototype.MANY_SEP9=function(c){this.manySepFirstInternal(9,c)},l.prototype.AT_LEAST_ONE=function(c){this.atLeastOneInternal(0,c)},l.prototype.AT_LEAST_ONE1=function(c){return this.atLeastOneInternal(1,c)},l.prototype.AT_LEAST_ONE2=function(c){this.atLeastOneInternal(2,c)},l.prototype.AT_LEAST_ONE3=function(c){this.atLeastOneInternal(3,c)},l.prototype.AT_LEAST_ONE4=function(c){this.atLeastOneInternal(4,c)},l.prototype.AT_LEAST_ONE5=function(c){this.atLeastOneInternal(5,c)},l.prototype.AT_LEAST_ONE6=function(c){this.atLeastOneInternal(6,c)},l.prototype.AT_LEAST_ONE7=function(c){this.atLeastOneInternal(7,c)},l.prototype.AT_LEAST_ONE8=function(c){this.atLeastOneInternal(8,c)},l.prototype.AT_LEAST_ONE9=function(c){this.atLeastOneInternal(9,c)},l.prototype.AT_LEAST_ONE_SEP=function(c){this.atLeastOneSepFirstInternal(0,c)},l.prototype.AT_LEAST_ONE_SEP1=function(c){this.atLeastOneSepFirstInternal(1,c)},l.prototype.AT_LEAST_ONE_SEP2=function(c){this.atLeastOneSepFirstInternal(2,c)},l.prototype.AT_LEAST_ONE_SEP3=function(c){this.atLeastOneSepFirstInternal(3,c)},l.prototype.AT_LEAST_ONE_SEP4=function(c){this.atLeastOneSepFirstInternal(4,c)},l.prototype.AT_LEAST_ONE_SEP5=function(c){this.atLeastOneSepFirstInternal(5,c)},l.prototype.AT_LEAST_ONE_SEP6=function(c){this.atLeastOneSepFirstInternal(6,c)},l.prototype.AT_LEAST_ONE_SEP7=function(c){this.atLeastOneSepFirstInternal(7,c)},l.prototype.AT_LEAST_ONE_SEP8=function(c){this.atLeastOneSepFirstInternal(8,c)},l.prototype.AT_LEAST_ONE_SEP9=function(c){this.atLeastOneSepFirstInternal(9,c)},l.prototype.RULE=function(c,u,h){if(h===void 0&&(h=n.DEFAULT_RULE_CONFIG),e.contains(this.definedRulesNames,c)){var f=i.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:c,grammarName:this.className}),p={message:f,type:n.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:c};this.definitionErrors.push(p)}this.definedRulesNames.push(c);var g=this.defineRule(c,u,h);return this[c]=g,g},l.prototype.OVERRIDE_RULE=function(c,u,h){h===void 0&&(h=n.DEFAULT_RULE_CONFIG);var f=[];f=f.concat(s.validateRuleIsOverridden(c,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(f);var p=this.defineRule(c,u,h);return this[c]=p,p},l.prototype.BACKTRACK=function(c,u){return function(){this.isBackTrackingStack.push(1);var h=this.saveRecogState();try{return c.apply(this,u),!0}catch(f){if(t.isRecognitionException(f))return!1;throw f}finally{this.reloadRecogState(h),this.isBackTrackingStack.pop()}}},l.prototype.getGAstProductions=function(){return this.gastProductionsCache},l.prototype.getSerializedGastProductions=function(){return o.serializeGrammar(e.values(this.gastProductionsCache))},l}();r.RecognizerApi=a}),CS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RecognizerEngine=void 0;var e=Wt(),t=Em(),n=Hc(),i=jf(),s=qf(),o=Xi(),a=ox(),l=Co(),c=Vc(),u=ax(),h=function(){function f(){}return f.prototype.initRecognizerEngine=function(p,g){if(this.className=u.classNameFromInstance(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=c.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},e.has(g,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 For Further details.`);if(e.isArray(p)){if(e.isEmpty(p))throw Error(`A Token Vocabulary cannot be empty. Note that the first argument for the parser constructor is no longer a Token vector (since v4.0).`);if(typeof p[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if(e.isArray(p))this.tokensMap=e.reduce(p,function(_,y){return _[y.name]=y,_},{});else if(e.has(p,"modes")&&e.every(e.flatten(e.values(p.modes)),c.isTokenType)){var v=e.flatten(e.values(p.modes)),d=e.uniq(v);this.tokensMap=e.reduce(d,function(_,y){return _[y.name]=y,_},{})}else if(e.isObject(p))this.tokensMap=e.cloneObj(p);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=l.EOF;var m=e.every(e.values(p),function(_){return e.isEmpty(_.categoryMatches)});this.tokenMatcher=m?c.tokenStructuredMatcherNoCategories:c.tokenStructuredMatcher,c.augmentTokenTypes(e.values(this.tokensMap))},f.prototype.defineRule=function(p,g,v){if(this.selfAnalysisDone)throw Error("Grammar rule <"+p+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var d=e.has(v,"resyncEnabled")?v.resyncEnabled:o.DEFAULT_RULE_CONFIG.resyncEnabled,m=e.has(v,"recoveryValueFunc")?v.recoveryValueFunc:o.DEFAULT_RULE_CONFIG.recoveryValueFunc,_=this.ruleShortNameIdx<g},f.prototype.orInternal=function(p,g){var v=this.getKeyForAutomaticLookahead(t.OR_IDX,g),d=e.isArray(p)?p:p.DEF,m=this.getLaFuncFromCache(v),_=m.call(this,d);if(_!==void 0){var y=d[_];return y.ALT.call(this)}this.raiseNoAltException(g,p.ERR_MSG)},f.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var p=this.LA(1),g=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:p,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new n.NotAllInputParsedException(g,p))}},f.prototype.subruleInternal=function(p,g,v){var d;try{var m=v!==void 0?v.ARGS:void 0;return d=p.call(this,g,m),this.cstPostNonTerminal(d,v!==void 0&&v.LABEL!==void 0?v.LABEL:p.ruleName),d}catch(_){this.subruleInternalError(_,v,p.ruleName)}},f.prototype.subruleInternalError=function(p,g,v){throw n.isRecognitionException(p)&&p.partialCstResult!==void 0&&(this.cstPostNonTerminal(p.partialCstResult,g!==void 0&&g.LABEL!==void 0?g.LABEL:v),delete p.partialCstResult),p},f.prototype.consumeInternal=function(p,g,v){var d;try{var m=this.LA(1);this.tokenMatcher(m,p)===!0?(this.consumeToken(),d=m):this.consumeInternalError(p,m,v)}catch(_){d=this.consumeInternalRecovery(p,g,_)}return this.cstPostTerminal(v!==void 0&&v.LABEL!==void 0?v.LABEL:p.name,d),d},f.prototype.consumeInternalError=function(p,g,v){var d,m=this.LA(0);throw v!==void 0&&v.ERR_MSG?d=v.ERR_MSG:d=this.errorMessageProvider.buildMismatchTokenMessage({expected:p,actual:g,previous:m,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new n.MismatchedTokenException(d,g,m))},f.prototype.consumeInternalRecovery=function(p,g,v){if(this.recoveryEnabled&&v.name==="MismatchedTokenException"&&!this.isBackTracking()){var d=this.getFollowsForInRuleRecovery(p,g);try{return this.tryInRuleRecovery(p,d)}catch(m){throw m.name===a.IN_RULE_RECOVERY_EXCEPTION?v:m}}else throw v},f.prototype.saveRecogState=function(){var p=this.errors,g=e.cloneArr(this.RULE_STACK);return{errors:p,lexerState:this.exportLexerState(),RULE_STACK:g,CST_STACK:this.CST_STACK}},f.prototype.reloadRecogState=function(p){this.errors=p.errors,this.importLexerState(p.lexerState),this.RULE_STACK=p.RULE_STACK},f.prototype.ruleInvocationStateUpdate=function(p,g,v){this.RULE_OCCURRENCE_STACK.push(v),this.RULE_STACK.push(p),this.cstInvocationStateUpdate(g,p)},f.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},f.prototype.getCurrRuleFullName=function(){var p=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[p]},f.prototype.shortRuleNameToFullName=function(p){return this.shortRuleNameToFull[p]},f.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),l.EOF)},f.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},f}();r.RecognizerEngine=h}),bS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ErrorHandler=void 0;var e=ic(),t=Ut(),n=Ih(),i=Ni(),s=function(){function o(){}return o.prototype.initErrorHandler=function(a){this._errors=[],this.errorMessageProvider=t.has(a,"errorMessageProvider")?a.errorMessageProvider:i.DEFAULT_PARSER_CONFIG.errorMessageProvider},o.prototype.SAVE_ERROR=function(a){if(e.isRecognitionException(a))return a.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:t.cloneArr(this.RULE_OCCURRENCE_STACK)},this._errors.push(a),a;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(o.prototype,"errors",{get:function(){return t.cloneArr(this._errors)},set:function(a){this._errors=a},enumerable:!1,configurable:!0}),o.prototype.raiseEarlyExitException=function(a,l,c){for(var u=this.getCurrRuleFullName(),h=this.getGAstProductions()[u],f=n.getLookaheadPathsForOptionalProd(a,h,l,this.maxLookahead),p=f[0],g=[],v=1;v<=this.maxLookahead;v++)g.push(this.LA(v));var d=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:p,actual:g,previous:this.LA(0),customUserDescription:c,ruleName:u});throw this.SAVE_ERROR(new e.EarlyExitException(d,this.LA(1),this.LA(0)))},o.prototype.raiseNoAltException=function(a,l){for(var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],h=n.getLookaheadPathsForOr(a,u,this.maxLookahead),f=[],p=1;p<=this.maxLookahead;p++)f.push(this.LA(p));var g=this.LA(0),v=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:h,actual:f,previous:g,customUserDescription:l,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new e.NoViableAltException(v,this.LA(1),g))},o}();r.ErrorHandler=s}),SS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ContentAssist=void 0;var e=Rh(),t=Ut(),n=function(){function i(){}return i.prototype.initContentAssist=function(){},i.prototype.computeContentAssist=function(s,o){var a=this.gastProductionsCache[s];if(t.isUndefined(a))throw Error("Rule ->"+s+"<- does not exist in this grammar.");return e.nextPossibleTokensAfter([a],o,this.tokenMatcher,this.maxLookahead)},i.prototype.getNextPossibleTokenTypes=function(s){var o=t.first(s.ruleStack),a=this.getGAstProductions(),l=a[o],c=new e.NextAfterTokenWalker(l,s).startWalking();return c},i}();r.ContentAssist=n}),AS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.GastRecorder=void 0;var e=Ut(),t=xi(),n=Ah(),i=tc(),s=io(),o=Ni(),a=ap(),l={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(l);var c=!0,u=Math.pow(2,a.BITS_FOR_OCCURRENCE_IDX)-1,h=s.createToken({name:"RECORDING_PHASE_TOKEN",pattern:n.Lexer.NA});i.augmentTokenTypes([h]);var f=s.createTokenInstance(h,`This IToken indicates the Parser is in Recording Phase + For Further details.`)}if(e.isArray(p))this.tokensMap=e.reduce(p,function(_,v){return _[v.name]=v,_},{});else if(e.has(p,"modes")&&e.every(e.flatten(e.values(p.modes)),c.isTokenType)){var y=e.flatten(e.values(p.modes)),d=e.uniq(y);this.tokensMap=e.reduce(d,function(_,v){return _[v.name]=v,_},{})}else if(e.isObject(p))this.tokensMap=e.cloneObj(p);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=l.EOF;var m=e.every(e.values(p),function(_){return e.isEmpty(_.categoryMatches)});this.tokenMatcher=m?c.tokenStructuredMatcherNoCategories:c.tokenStructuredMatcher,c.augmentTokenTypes(e.values(this.tokensMap))},f.prototype.defineRule=function(p,g,y){if(this.selfAnalysisDone)throw Error("Grammar rule <"+p+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var d=e.has(y,"resyncEnabled")?y.resyncEnabled:o.DEFAULT_RULE_CONFIG.resyncEnabled,m=e.has(y,"recoveryValueFunc")?y.recoveryValueFunc:o.DEFAULT_RULE_CONFIG.recoveryValueFunc,_=this.ruleShortNameIdx<g},f.prototype.orInternal=function(p,g){var y=this.getKeyForAutomaticLookahead(t.OR_IDX,g),d=e.isArray(p)?p:p.DEF,m=this.getLaFuncFromCache(y),_=m.call(this,d);if(_!==void 0){var v=d[_];return v.ALT.call(this)}this.raiseNoAltException(g,p.ERR_MSG)},f.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var p=this.LA(1),g=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:p,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new n.NotAllInputParsedException(g,p))}},f.prototype.subruleInternal=function(p,g,y){var d;try{var m=y!==void 0?y.ARGS:void 0;return d=p.call(this,g,m),this.cstPostNonTerminal(d,y!==void 0&&y.LABEL!==void 0?y.LABEL:p.ruleName),d}catch(_){this.subruleInternalError(_,y,p.ruleName)}},f.prototype.subruleInternalError=function(p,g,y){throw n.isRecognitionException(p)&&p.partialCstResult!==void 0&&(this.cstPostNonTerminal(p.partialCstResult,g!==void 0&&g.LABEL!==void 0?g.LABEL:y),delete p.partialCstResult),p},f.prototype.consumeInternal=function(p,g,y){var d;try{var m=this.LA(1);this.tokenMatcher(m,p)===!0?(this.consumeToken(),d=m):this.consumeInternalError(p,m,y)}catch(_){d=this.consumeInternalRecovery(p,g,_)}return this.cstPostTerminal(y!==void 0&&y.LABEL!==void 0?y.LABEL:p.name,d),d},f.prototype.consumeInternalError=function(p,g,y){var d,m=this.LA(0);throw y!==void 0&&y.ERR_MSG?d=y.ERR_MSG:d=this.errorMessageProvider.buildMismatchTokenMessage({expected:p,actual:g,previous:m,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new n.MismatchedTokenException(d,g,m))},f.prototype.consumeInternalRecovery=function(p,g,y){if(this.recoveryEnabled&&y.name==="MismatchedTokenException"&&!this.isBackTracking()){var d=this.getFollowsForInRuleRecovery(p,g);try{return this.tryInRuleRecovery(p,d)}catch(m){throw m.name===a.IN_RULE_RECOVERY_EXCEPTION?y:m}}else throw y},f.prototype.saveRecogState=function(){var p=this.errors,g=e.cloneArr(this.RULE_STACK);return{errors:p,lexerState:this.exportLexerState(),RULE_STACK:g,CST_STACK:this.CST_STACK}},f.prototype.reloadRecogState=function(p){this.errors=p.errors,this.importLexerState(p.lexerState),this.RULE_STACK=p.RULE_STACK},f.prototype.ruleInvocationStateUpdate=function(p,g,y){this.RULE_OCCURRENCE_STACK.push(y),this.RULE_STACK.push(p),this.cstInvocationStateUpdate(g,p)},f.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},f.prototype.getCurrRuleFullName=function(){var p=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[p]},f.prototype.shortRuleNameToFullName=function(p){return this.shortRuleNameToFull[p]},f.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),l.EOF)},f.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},f}();r.RecognizerEngine=h}),IS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ErrorHandler=void 0;var e=Hc(),t=Wt(),n=jf(),i=Xi(),s=function(){function o(){}return o.prototype.initErrorHandler=function(a){this._errors=[],this.errorMessageProvider=t.has(a,"errorMessageProvider")?a.errorMessageProvider:i.DEFAULT_PARSER_CONFIG.errorMessageProvider},o.prototype.SAVE_ERROR=function(a){if(e.isRecognitionException(a))return a.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:t.cloneArr(this.RULE_OCCURRENCE_STACK)},this._errors.push(a),a;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(o.prototype,"errors",{get:function(){return t.cloneArr(this._errors)},set:function(a){this._errors=a},enumerable:!1,configurable:!0}),o.prototype.raiseEarlyExitException=function(a,l,c){for(var u=this.getCurrRuleFullName(),h=this.getGAstProductions()[u],f=n.getLookaheadPathsForOptionalProd(a,h,l,this.maxLookahead),p=f[0],g=[],y=1;y<=this.maxLookahead;y++)g.push(this.LA(y));var d=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:p,actual:g,previous:this.LA(0),customUserDescription:c,ruleName:u});throw this.SAVE_ERROR(new e.EarlyExitException(d,this.LA(1),this.LA(0)))},o.prototype.raiseNoAltException=function(a,l){for(var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],h=n.getLookaheadPathsForOr(a,u,this.maxLookahead),f=[],p=1;p<=this.maxLookahead;p++)f.push(this.LA(p));var g=this.LA(0),y=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:h,actual:f,previous:g,customUserDescription:l,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new e.NoViableAltException(y,this.LA(1),g))},o}();r.ErrorHandler=s}),RS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ContentAssist=void 0;var e=qf(),t=Wt(),n=function(){function i(){}return i.prototype.initContentAssist=function(){},i.prototype.computeContentAssist=function(s,o){var a=this.gastProductionsCache[s];if(t.isUndefined(a))throw Error("Rule ->"+s+"<- does not exist in this grammar.");return e.nextPossibleTokensAfter([a],o,this.tokenMatcher,this.maxLookahead)},i.prototype.getNextPossibleTokenTypes=function(s){var o=t.first(s.ruleStack),a=this.getGAstProductions(),l=a[o],c=new e.NextAfterTokenWalker(l,s).startWalking();return c},i}();r.ContentAssist=n}),PS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.GastRecorder=void 0;var e=Wt(),t=Li(),n=Hf(),i=Vc(),s=Co(),o=Xi(),a=Em(),l={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(l);var c=!0,u=Math.pow(2,a.BITS_FOR_OCCURRENCE_IDX)-1,h=s.createToken({name:"RECORDING_PHASE_TOKEN",pattern:n.Lexer.NA});i.augmentTokenTypes([h]);var f=s.createTokenInstance(h,`This IToken indicates the Parser is in Recording Phase See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(f);var p={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},g=function(){function y(){}return y.prototype.initGastRecorder=function(x){this.recordingProdStack=[],this.RECORDING_PHASE=!1},y.prototype.enableRecording=function(){var x=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var w=function(C){var P=C>0?C:"";x["CONSUME"+P]=function(E,M){return this.consumeInternalRecord(E,C,M)},x["SUBRULE"+P]=function(E,M){return this.subruleInternalRecord(E,C,M)},x["OPTION"+P]=function(E){return this.optionInternalRecord(E,C)},x["OR"+P]=function(E){return this.orInternalRecord(E,C)},x["MANY"+P]=function(E){this.manyInternalRecord(C,E)},x["MANY_SEP"+P]=function(E){this.manySepFirstInternalRecord(C,E)},x["AT_LEAST_ONE"+P]=function(E){this.atLeastOneInternalRecord(C,E)},x["AT_LEAST_ONE_SEP"+P]=function(E){this.atLeastOneSepFirstInternalRecord(C,E)}},I=0;I<10;I++)w(I);x.consume=function(C,P,E){return this.consumeInternalRecord(P,C,E)},x.subrule=function(C,P,E){return this.subruleInternalRecord(P,C,E)},x.option=function(C,P){return this.optionInternalRecord(P,C)},x.or=function(C,P){return this.orInternalRecord(P,C)},x.many=function(C,P){this.manyInternalRecord(C,P)},x.atLeastOne=function(C,P){this.atLeastOneInternalRecord(C,P)},x.ACTION=x.ACTION_RECORD,x.BACKTRACK=x.BACKTRACK_RECORD,x.LA=x.LA_RECORD})},y.prototype.disableRecording=function(){var x=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var w=0;w<10;w++){var I=w>0?w:"";delete x["CONSUME"+I],delete x["SUBRULE"+I],delete x["OPTION"+I],delete x["OR"+I],delete x["MANY"+I],delete x["MANY_SEP"+I],delete x["AT_LEAST_ONE"+I],delete x["AT_LEAST_ONE_SEP"+I]}delete x.consume,delete x.subrule,delete x.option,delete x.or,delete x.many,delete x.atLeastOne,delete x.ACTION,delete x.BACKTRACK,delete x.LA})},y.prototype.ACTION_RECORD=function(x){},y.prototype.BACKTRACK_RECORD=function(x,w){return function(){return!0}},y.prototype.LA_RECORD=function(x){return o.END_OF_FILE},y.prototype.topLevelRuleRecord=function(x,w){try{var I=new t.Rule({definition:[],name:x});return I.name=x,this.recordingProdStack.push(I),w.call(this),this.recordingProdStack.pop(),I}catch(C){if(C.KNOWN_RECORDER_ERROR!==!0)try{C.message=C.message+` + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},g=function(){function v(){}return v.prototype.initGastRecorder=function(x){this.recordingProdStack=[],this.RECORDING_PHASE=!1},v.prototype.enableRecording=function(){var x=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var S=function(A){var C=A>0?A:"";x["CONSUME"+C]=function(E,b){return this.consumeInternalRecord(E,A,b)},x["SUBRULE"+C]=function(E,b){return this.subruleInternalRecord(E,A,b)},x["OPTION"+C]=function(E){return this.optionInternalRecord(E,A)},x["OR"+C]=function(E){return this.orInternalRecord(E,A)},x["MANY"+C]=function(E){this.manyInternalRecord(A,E)},x["MANY_SEP"+C]=function(E){this.manySepFirstInternalRecord(A,E)},x["AT_LEAST_ONE"+C]=function(E){this.atLeastOneInternalRecord(A,E)},x["AT_LEAST_ONE_SEP"+C]=function(E){this.atLeastOneSepFirstInternalRecord(A,E)}},I=0;I<10;I++)S(I);x.consume=function(A,C,E){return this.consumeInternalRecord(C,A,E)},x.subrule=function(A,C,E){return this.subruleInternalRecord(C,A,E)},x.option=function(A,C){return this.optionInternalRecord(C,A)},x.or=function(A,C){return this.orInternalRecord(C,A)},x.many=function(A,C){this.manyInternalRecord(A,C)},x.atLeastOne=function(A,C){this.atLeastOneInternalRecord(A,C)},x.ACTION=x.ACTION_RECORD,x.BACKTRACK=x.BACKTRACK_RECORD,x.LA=x.LA_RECORD})},v.prototype.disableRecording=function(){var x=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var S=0;S<10;S++){var I=S>0?S:"";delete x["CONSUME"+I],delete x["SUBRULE"+I],delete x["OPTION"+I],delete x["OR"+I],delete x["MANY"+I],delete x["MANY_SEP"+I],delete x["AT_LEAST_ONE"+I],delete x["AT_LEAST_ONE_SEP"+I]}delete x.consume,delete x.subrule,delete x.option,delete x.or,delete x.many,delete x.atLeastOne,delete x.ACTION,delete x.BACKTRACK,delete x.LA})},v.prototype.ACTION_RECORD=function(x){},v.prototype.BACKTRACK_RECORD=function(x,S){return function(){return!0}},v.prototype.LA_RECORD=function(x){return o.END_OF_FILE},v.prototype.topLevelRuleRecord=function(x,S){try{var I=new t.Rule({definition:[],name:x});return I.name=x,this.recordingProdStack.push(I),S.call(this),this.recordingProdStack.pop(),I}catch(A){if(A.KNOWN_RECORDER_ERROR!==!0)try{A.message=A.message+` This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw C}throw C}},y.prototype.optionInternalRecord=function(x,w){return v.call(this,t.Option,x,w)},y.prototype.atLeastOneInternalRecord=function(x,w){v.call(this,t.RepetitionMandatory,w,x)},y.prototype.atLeastOneSepFirstInternalRecord=function(x,w){v.call(this,t.RepetitionMandatoryWithSeparator,w,x,c)},y.prototype.manyInternalRecord=function(x,w){v.call(this,t.Repetition,w,x)},y.prototype.manySepFirstInternalRecord=function(x,w){v.call(this,t.RepetitionWithSeparator,w,x,c)},y.prototype.orInternalRecord=function(x,w){return d.call(this,x,w)},y.prototype.subruleInternalRecord=function(x,w,I){if(_(w),!x||e.has(x,"ruleName")===!1){var C=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(x)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw C.KNOWN_RECORDER_ERROR=!0,C}var P=e.peek(this.recordingProdStack),E=x.ruleName,M=new t.NonTerminal({idx:w,nonTerminalName:E,referencedRule:void 0});return P.definition.push(M),this.outputCst?p:l},y.prototype.consumeInternalRecord=function(x,w,I){if(_(w),!i.hasShortKeyProperty(x)){var C=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(x)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw C.KNOWN_RECORDER_ERROR=!0,C}var P=e.peek(this.recordingProdStack),E=new t.Terminal({idx:w,terminalType:x});return P.definition.push(E),f},y}();r.GastRecorder=g;function v(y,x,w,I){I===void 0&&(I=!1),_(w);var C=e.peek(this.recordingProdStack),P=e.isFunction(x)?x:x.DEF,E=new y({definition:[],idx:w});return I&&(E.separator=x.SEP),e.has(x,"MAX_LOOKAHEAD")&&(E.maxLookahead=x.MAX_LOOKAHEAD),this.recordingProdStack.push(E),P.call(this),C.definition.push(E),this.recordingProdStack.pop(),l}function d(y,x){var w=this;_(x);var I=e.peek(this.recordingProdStack),C=e.isArray(y)===!1,P=C===!1?y:y.DEF,E=new t.Alternation({definition:[],idx:x,ignoreAmbiguities:C&&y.IGNORE_AMBIGUITIES===!0});e.has(y,"MAX_LOOKAHEAD")&&(E.maxLookahead=y.MAX_LOOKAHEAD);var M=e.some(P,function(L){return e.isFunction(L.GATE)});return E.hasPredicates=M,I.definition.push(E),e.forEach(P,function(L){var N=new t.Alternative({definition:[]});E.definition.push(N),e.has(L,"IGNORE_AMBIGUITIES")?N.ignoreAmbiguities=L.IGNORE_AMBIGUITIES:e.has(L,"GATE")&&(N.ignoreAmbiguities=!0),w.recordingProdStack.push(N),L.ALT.call(w),w.recordingProdStack.pop()}),l}function m(y){return y===0?"":""+y}function _(y){if(y<0||y>u){var x=new Error("Invalid DSL Method idx value: <"+y+`> - `+("Idx value must be a none negative value smaller than "+(u+1)));throw x.KNOWN_RECORDER_ERROR=!0,x}}}),wS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.PerformanceTracer=void 0;var e=Ut(),t=Ni(),n=function(){function i(){}return i.prototype.initPerformanceTracer=function(s){if(e.has(s,"traceInitPerf")){var o=s.traceInitPerf,a=typeof o=="number";this.traceInitMaxIdent=a?o:1/0,this.traceInitPerf=a?o>0:o}else this.traceInitMaxIdent=0,this.traceInitPerf=t.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},i.prototype.TRACE_INIT=function(s,o){if(this.traceInitPerf===!0){this.traceInitIndent++;var a=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+s+">");var l=e.timer(o),c=l.time,u=l.value,h=c>10?console.warn:console.log;return this.traceInitIndent time: "+c+"ms"),this.traceInitIndent--,u}else return o()},i}();r.PerformanceTracer=n}),CS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.applyMixins=void 0;function e(t,n){n.forEach(function(i){var s=i.prototype;Object.getOwnPropertyNames(s).forEach(function(o){if(o!=="constructor"){var a=Object.getOwnPropertyDescriptor(s,o);a&&(a.get||a.set)?Object.defineProperty(t.prototype,o,a):t.prototype[o]=i.prototype[o]}})})}r.applyMixins=e}),Ni=Tt(r=>{"use strict";var e=r&&r.__extends||function(){var C=function(P,E){return C=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(M,L){M.__proto__=L}||function(M,L){for(var N in L)Object.prototype.hasOwnProperty.call(L,N)&&(M[N]=L[N])},C(P,E)};return function(P,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");C(P,E);function M(){this.constructor=P}P.prototype=E===null?Object.create(E):(M.prototype=E.prototype,new M)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.EmbeddedActionsParser=r.CstParser=r.Parser=r.EMPTY_ALT=r.ParserDefinitionErrorType=r.DEFAULT_RULE_CONFIG=r.DEFAULT_PARSER_CONFIG=r.END_OF_FILE=void 0;var t=Ut(),n=pS(),i=io(),s=Ch(),o=gS(),a=Y0(),l=vS(),c=_S(),u=TS(),h=MS(),f=ES(),p=bS(),g=SS(),v=AS(),d=wS(),m=CS();r.END_OF_FILE=i.createTokenInstance(i.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN),Object.freeze(r.END_OF_FILE),r.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:s.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),r.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var _;(function(C){C[C.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",C[C.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",C[C.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",C[C.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",C[C.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",C[C.LEFT_RECURSION=5]="LEFT_RECURSION",C[C.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",C[C.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",C[C.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",C[C.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",C[C.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",C[C.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",C[C.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(_=r.ParserDefinitionErrorType||(r.ParserDefinitionErrorType={}));function y(C){return C===void 0&&(C=void 0),function(){return C}}r.EMPTY_ALT=y;var x=function(){function C(P,E){this.definitionErrors=[],this.selfAnalysisDone=!1;var M=this;if(M.initErrorHandler(E),M.initLexerAdapter(),M.initLooksAhead(E),M.initRecognizerEngine(P,E),M.initRecoverable(E),M.initTreeBuilder(E),M.initContentAssist(),M.initGastRecorder(E),M.initPerformanceTracer(E),t.has(E,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw A}throw A}},v.prototype.optionInternalRecord=function(x,S){return y.call(this,t.Option,x,S)},v.prototype.atLeastOneInternalRecord=function(x,S){y.call(this,t.RepetitionMandatory,S,x)},v.prototype.atLeastOneSepFirstInternalRecord=function(x,S){y.call(this,t.RepetitionMandatoryWithSeparator,S,x,c)},v.prototype.manyInternalRecord=function(x,S){y.call(this,t.Repetition,S,x)},v.prototype.manySepFirstInternalRecord=function(x,S){y.call(this,t.RepetitionWithSeparator,S,x,c)},v.prototype.orInternalRecord=function(x,S){return d.call(this,x,S)},v.prototype.subruleInternalRecord=function(x,S,I){if(_(S),!x||e.has(x,"ruleName")===!1){var A=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(x)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw A.KNOWN_RECORDER_ERROR=!0,A}var C=e.peek(this.recordingProdStack),E=x.ruleName,b=new t.NonTerminal({idx:S,nonTerminalName:E,referencedRule:void 0});return C.definition.push(b),this.outputCst?p:l},v.prototype.consumeInternalRecord=function(x,S,I){if(_(S),!i.hasShortKeyProperty(x)){var A=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(x)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw A.KNOWN_RECORDER_ERROR=!0,A}var C=e.peek(this.recordingProdStack),E=new t.Terminal({idx:S,terminalType:x});return C.definition.push(E),f},v}();r.GastRecorder=g;function y(v,x,S,I){I===void 0&&(I=!1),_(S);var A=e.peek(this.recordingProdStack),C=e.isFunction(x)?x:x.DEF,E=new v({definition:[],idx:S});return I&&(E.separator=x.SEP),e.has(x,"MAX_LOOKAHEAD")&&(E.maxLookahead=x.MAX_LOOKAHEAD),this.recordingProdStack.push(E),C.call(this),A.definition.push(E),this.recordingProdStack.pop(),l}function d(v,x){var S=this;_(x);var I=e.peek(this.recordingProdStack),A=e.isArray(v)===!1,C=A===!1?v:v.DEF,E=new t.Alternation({definition:[],idx:x,ignoreAmbiguities:A&&v.IGNORE_AMBIGUITIES===!0});e.has(v,"MAX_LOOKAHEAD")&&(E.maxLookahead=v.MAX_LOOKAHEAD);var b=e.some(C,function(R){return e.isFunction(R.GATE)});return E.hasPredicates=b,I.definition.push(E),e.forEach(C,function(R){var N=new t.Alternative({definition:[]});E.definition.push(N),e.has(R,"IGNORE_AMBIGUITIES")?N.ignoreAmbiguities=R.IGNORE_AMBIGUITIES:e.has(R,"GATE")&&(N.ignoreAmbiguities=!0),S.recordingProdStack.push(N),R.ALT.call(S),S.recordingProdStack.pop()}),l}function m(v){return v===0?"":""+v}function _(v){if(v<0||v>u){var x=new Error("Invalid DSL Method idx value: <"+v+`> + `+("Idx value must be a none negative value smaller than "+(u+1)));throw x.KNOWN_RECORDER_ERROR=!0,x}}}),NS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.PerformanceTracer=void 0;var e=Wt(),t=Xi(),n=function(){function i(){}return i.prototype.initPerformanceTracer=function(s){if(e.has(s,"traceInitPerf")){var o=s.traceInitPerf,a=typeof o=="number";this.traceInitMaxIdent=a?o:1/0,this.traceInitPerf=a?o>0:o}else this.traceInitMaxIdent=0,this.traceInitPerf=t.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},i.prototype.TRACE_INIT=function(s,o){if(this.traceInitPerf===!0){this.traceInitIndent++;var a=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+s+">");var l=e.timer(o),c=l.time,u=l.value,h=c>10?console.warn:console.log;return this.traceInitIndent time: "+c+"ms"),this.traceInitIndent--,u}else return o()},i}();r.PerformanceTracer=n}),LS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.applyMixins=void 0;function e(t,n){n.forEach(function(i){var s=i.prototype;Object.getOwnPropertyNames(s).forEach(function(o){if(o!=="constructor"){var a=Object.getOwnPropertyDescriptor(s,o);a&&(a.get||a.set)?Object.defineProperty(t.prototype,o,a):t.prototype[o]=i.prototype[o]}})})}r.applyMixins=e}),Xi=bt(r=>{"use strict";var e=r&&r.__extends||function(){var A=function(C,E){return A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,R){b.__proto__=R}||function(b,R){for(var N in R)Object.prototype.hasOwnProperty.call(R,N)&&(b[N]=R[N])},A(C,E)};return function(C,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");A(C,E);function b(){this.constructor=C}C.prototype=E===null?Object.create(E):(b.prototype=E.prototype,new b)}}();Object.defineProperty(r,"__esModule",{value:!0}),r.EmbeddedActionsParser=r.CstParser=r.Parser=r.EMPTY_ALT=r.ParserDefinitionErrorType=r.DEFAULT_RULE_CONFIG=r.DEFAULT_PARSER_CONFIG=r.END_OF_FILE=void 0;var t=Wt(),n=vS(),i=Co(),s=Xf(),o=TS(),a=ox(),l=MS(),c=SS(),u=AS(),h=wS(),f=CS(),p=IS(),g=RS(),y=PS(),d=NS(),m=LS();r.END_OF_FILE=i.createTokenInstance(i.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN),Object.freeze(r.END_OF_FILE),r.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:s.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),r.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var _;(function(A){A[A.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",A[A.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",A[A.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",A[A.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",A[A.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",A[A.LEFT_RECURSION=5]="LEFT_RECURSION",A[A.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",A[A.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",A[A.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",A[A.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",A[A.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",A[A.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",A[A.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(_=r.ParserDefinitionErrorType||(r.ParserDefinitionErrorType={}));function v(A){return A===void 0&&(A=void 0),function(){return A}}r.EMPTY_ALT=v;var x=function(){function A(C,E){this.definitionErrors=[],this.selfAnalysisDone=!1;var b=this;if(b.initErrorHandler(E),b.initLexerAdapter(),b.initLooksAhead(E),b.initRecognizerEngine(C,E),b.initRecoverable(E),b.initTreeBuilder(E),b.initContentAssist(),b.initGastRecorder(E),b.initPerformanceTracer(E),t.has(E,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. Please use the flag on the relevant DSL method instead. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=t.has(E,"skipValidations")?E.skipValidations:r.DEFAULT_PARSER_CONFIG.skipValidations}return C.performSelfAnalysis=function(P){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},C.prototype.performSelfAnalysis=function(){var P=this;this.TRACE_INIT("performSelfAnalysis",function(){var E;P.selfAnalysisDone=!0;var M=P.className;P.TRACE_INIT("toFastProps",function(){t.toFastProperties(P)}),P.TRACE_INIT("Grammar Recording",function(){try{P.enableRecording(),t.forEach(P.definedRulesNames,function(N){var O=P[N],B=O.originalGrammarAction,ie=void 0;P.TRACE_INIT(N+" Rule",function(){ie=P.topLevelRuleRecord(N,B)}),P.gastProductionsCache[N]=ie})}finally{P.disableRecording()}});var L=[];if(P.TRACE_INIT("Grammar Resolving",function(){L=o.resolveGrammar({rules:t.values(P.gastProductionsCache)}),P.definitionErrors=P.definitionErrors.concat(L)}),P.TRACE_INIT("Grammar Validations",function(){if(t.isEmpty(L)&&P.skipValidations===!1){var N=o.validateGrammar({rules:t.values(P.gastProductionsCache),maxLookahead:P.maxLookahead,tokenTypes:t.values(P.tokensMap),errMsgProvider:s.defaultGrammarValidatorErrorProvider,grammarName:M});P.definitionErrors=P.definitionErrors.concat(N)}}),t.isEmpty(P.definitionErrors)&&(P.recoveryEnabled&&P.TRACE_INIT("computeAllProdsFollows",function(){var N=n.computeAllProdsFollows(t.values(P.gastProductionsCache));P.resyncFollows=N}),P.TRACE_INIT("ComputeLookaheadFunctions",function(){P.preComputeLookaheadFunctions(t.values(P.gastProductionsCache))})),!C.DEFER_DEFINITION_ERRORS_HANDLING&&!t.isEmpty(P.definitionErrors))throw E=t.map(P.definitionErrors,function(N){return N.message}),new Error(`Parser Definition Errors detected: + For further details.`);this.skipValidations=t.has(E,"skipValidations")?E.skipValidations:r.DEFAULT_PARSER_CONFIG.skipValidations}return A.performSelfAnalysis=function(C){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},A.prototype.performSelfAnalysis=function(){var C=this;this.TRACE_INIT("performSelfAnalysis",function(){var E;C.selfAnalysisDone=!0;var b=C.className;C.TRACE_INIT("toFastProps",function(){t.toFastProperties(C)}),C.TRACE_INIT("Grammar Recording",function(){try{C.enableRecording(),t.forEach(C.definedRulesNames,function(N){var B=C[N],V=B.originalGrammarAction,ie=void 0;C.TRACE_INIT(N+" Rule",function(){ie=C.topLevelRuleRecord(N,V)}),C.gastProductionsCache[N]=ie})}finally{C.disableRecording()}});var R=[];if(C.TRACE_INIT("Grammar Resolving",function(){R=o.resolveGrammar({rules:t.values(C.gastProductionsCache)}),C.definitionErrors=C.definitionErrors.concat(R)}),C.TRACE_INIT("Grammar Validations",function(){if(t.isEmpty(R)&&C.skipValidations===!1){var N=o.validateGrammar({rules:t.values(C.gastProductionsCache),maxLookahead:C.maxLookahead,tokenTypes:t.values(C.tokensMap),errMsgProvider:s.defaultGrammarValidatorErrorProvider,grammarName:b});C.definitionErrors=C.definitionErrors.concat(N)}}),t.isEmpty(C.definitionErrors)&&(C.recoveryEnabled&&C.TRACE_INIT("computeAllProdsFollows",function(){var N=n.computeAllProdsFollows(t.values(C.gastProductionsCache));C.resyncFollows=N}),C.TRACE_INIT("ComputeLookaheadFunctions",function(){C.preComputeLookaheadFunctions(t.values(C.gastProductionsCache))})),!A.DEFER_DEFINITION_ERRORS_HANDLING&&!t.isEmpty(C.definitionErrors))throw E=t.map(C.definitionErrors,function(N){return N.message}),new Error(`Parser Definition Errors detected: `+E.join(` ------------------------------- -`))})},C.DEFER_DEFINITION_ERRORS_HANDLING=!1,C}();r.Parser=x,m.applyMixins(x,[a.Recoverable,l.LooksAhead,c.TreeBuilder,u.LexerAdapter,f.RecognizerEngine,h.RecognizerApi,p.ErrorHandler,g.ContentAssist,v.GastRecorder,d.PerformanceTracer]);var w=function(C){e(P,C);function P(E,M){M===void 0&&(M=r.DEFAULT_PARSER_CONFIG);var L=this,N=t.cloneObj(M);return N.outputCst=!0,L=C.call(this,E,N)||this,L}return P}(x);r.CstParser=w;var I=function(C){e(P,C);function P(E,M){M===void 0&&(M=r.DEFAULT_PARSER_CONFIG);var L=this,N=t.cloneObj(M);return N.outputCst=!1,L=C.call(this,E,N)||this,L}return P}(x);r.EmbeddedActionsParser=I}),RS=Tt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.createSyntaxDiagramsCode=void 0;var e=z0();function t(n,i){var s=i===void 0?{}:i,o=s.resourceBase,a=o===void 0?"https://unpkg.com/chevrotain@"+e.VERSION+"/diagrams/":o,l=s.css,c=l===void 0?"https://unpkg.com/chevrotain@"+e.VERSION+"/diagrams/diagrams.css":l,u=` +`))})},A.DEFER_DEFINITION_ERRORS_HANDLING=!1,A}();r.Parser=x,m.applyMixins(x,[a.Recoverable,l.LooksAhead,c.TreeBuilder,u.LexerAdapter,f.RecognizerEngine,h.RecognizerApi,p.ErrorHandler,g.ContentAssist,y.GastRecorder,d.PerformanceTracer]);var S=function(A){e(C,A);function C(E,b){b===void 0&&(b=r.DEFAULT_PARSER_CONFIG);var R=this,N=t.cloneObj(b);return N.outputCst=!0,R=A.call(this,E,N)||this,R}return C}(x);r.CstParser=S;var I=function(A){e(C,A);function C(E,b){b===void 0&&(b=r.DEFAULT_PARSER_CONFIG);var R=this,N=t.cloneObj(b);return N.outputCst=!1,R=A.call(this,E,N)||this,R}return C}(x);r.EmbeddedActionsParser=I}),OS=bt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.createSyntaxDiagramsCode=void 0;var e=ex();function t(n,i){var s=i===void 0?{}:i,o=s.resourceBase,a=o===void 0?"https://unpkg.com/chevrotain@"+e.VERSION+"/diagrams/":o,l=s.css,c=l===void 0?"https://unpkg.com/chevrotain@"+e.VERSION+"/diagrams/diagrams.css":l,u=` @@ -3927,21 +3953,22 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis